こんにちは、この前後輩がカブトムシを捕まえてきました。もういるんだなぁと思ったかずタコです。
さて、今回から資料を頼りにガシガシ作業していきたいと思います。
さっと読んだだけでもかなりしっかりしたつくりになってる本で、相当勉強になります。付属のDVDに解説動画やソースコードなども入っていて至れり尽くせりです。
流れも自然で、初めにアポロ11号の例をとりながらカルマンフィルタ誕生の背景と特徴、これからやることの説明をしています。
そこから、簡単な工作を挟んで最終的な倒立振子を設計・製作していく中でカルマンフィルタや基盤となっている現代制御理論の強力さを肌で感じてね。といった流れになっています。う~む分かりやすい。
理論の解説や設計・実装のノウハウをしっかりレクチャーしてくれています。一つのロボットを作るまでにここまでの解説をしてくれる本はなかなかありませんので、うちのボスの言う通り確かに貴重だなぁと感じました。
露骨な宣伝はこれくらいにして作業記録を書いていきたいと思います。
第一章では本の全体の流れを説明するとともに、今後必要になる部品の紹介もあります。
途中で投げ出さないためにもまずは部品だけそろえてしまおうという算段の元、部品表とにらめっこしながら必要なものをそろえましたので以下にまとめます。
部品表
各部品に関してつらつら書いてみたら読むのかったるいレベルで長くなったので、初めに表として部品をまとめておきたいと思います。
1 | マイコン | NUCLEO-F303 | 1 |
2 | IMU | MPU-6050 | 1 |
3 | モータ+ギヤボックス | ハイパワーギヤボックスHE | 2 |
4 | ロータリーエンコーダ | REL18-100BP | 1 |
5 | タイヤ | スポーツタイヤ56mm径 | 1 |
6 | フレーム | ユニバーサルプレートL | 1 |
7 | モータードライバ | TA7291SG(リンクはP) | 2 |
8 | 基板 | 適度なサイズのユニバーサル | 1 |
9 | 電池ボックス | 単三4本入るもの | 1 |
10 | LED | お好み | 3 |
11 | トグルスイッチ | 電源投入用 | 1 |
12 | セラコン | 0.1μ | 1 |
13 | 電解コン | 220μ | 2 |
15 | 抵抗 | 220 | 3 |
18 | ピンソケット | 適量 | |
19 | ネジ、スペーサ | 適量 | |
21 | カップリング | 自作 | 1 |
各部品に関する詳細な説明はとりあえず割愛して、組み立ての時にでも書こうと思います。まあほとんどが文献で紹介されていたものと変わりませんのでそこまで深い説明もいらないかと思いますが。
ただ、現段階で触れておきたい内容だけは書いておきます。
1.マイコン:NUCLEO-F303
ロボットの頭脳に当たるCPUには上のものを使用しました。
STM32シリーズのマイコンは最近よく使っていて開発環境等一通りあるので、余計なセットアップの手間が省けてうれしい限りです。
ただ、文献で紹介されている型番とは違います。
文献ではF401というF4シリーズのものを使っています。基本的にF4のほうが性能が高いんですが、F401にはDACがありません。それなのにアナログ入力が必要なモータードライバを使っているので、文献ではローパスフィルタを組んで無理やりパルス波を平滑化しています。
面白いですがDACがあるならそれを使った方がいいので、DACが積んであり他のスペックもそこまで大きく変わらないF303をチョイスしました。
2.IMU:MPU-6050
IMUとはInertial Measurement Unitの略で、簡単に言えばロボットの姿勢や位置を知るために用いるセンサーです。
文献では秋月電子で販売されている9軸センサ(これ)を使用しているのですが、地磁気は今回のロボットで使わないんですよね。
9軸になるとちょっと値も張るので、加速度と角速度だけの6軸がないかなぁと探していたらAmazonでこいつが売っていたので採用しました。結構有名なセンサっぽくて、マイクロマウスでもよく乗っけてる人を見かけます。
I2C通信で情報をとれるところは文献で利用しているものと一緒です。レジスタのアドレスに気を付ければ問題なく代用できるでしょう。たぶん。
4.ロータリーエンコーダ:REL18 -100BP
タイヤがどれくらい回ったのかを計測するセンサです。
これは結構頭を抱えました。これに関しても文献で紹介されているのとは違うものです(文献はこっち)。
というのも、リンクに飛んでいただければ分かるんですが、
欠品中
絶対この本で紹介したからですよ。間違いない。
まあないものは仕方ないですし、これはもともとボリュームというか、ユーザーインターフェース的な使い方がメインっぽい構造しているので、モータの回転とるような用途は向いてなさそうだな~と思い別のものを検討した次第です。
んで、代替案として選ばれたのがREL18 君です。実はこれ以前使ったことがありまして、
こいつで使ったエンコーダです。
モータのような高速回転するものの回転数を読むロータリーエンコーダで、個人が購入できるようなお店&価格帯のものって実はあんまりないんですよね。しかもこれはかなり小さいです(直径18mm)。なんで、これを見つけたときはまるで砂漠でオアシスを見つけたような感動を覚えた記憶があります。砂漠行ったことないですが。
一つだけ難点を上げるとしたら、回転軸の径が2.5mmと中途半端なことです。どうせなら2か3mmにしてくれた方が、千石で売ってるカップリングが使えて車軸との締結が簡単だったのに…
7.モータードライバ:TA7291SG
先の部品表ではこっちよりもよく見るTA7291Pという型番のリンクになってます。そのページにあるデータシートにこいつの事は書いてあるので問題ないでしょう。
このモータードライバは超有名で、電子工作でモーター回したことある人なら一度は使ったことがあるのではないかというほど。
キットでの採用率やブログでの紹介数もえげつないですね。モーター回してそうな工作は大体使われてました。
ただ、この超ヒットICも時代の波には逆らえず…
D(ディスコン)
とどのつまり生産中止です。秋月のページから消えるのも時間の問題でしょう。
確かに今どきあまり見ないアナログ指令方式ですし、内部電圧降下が大きめ(1Vくらい落ちる)ので電源電圧ピッタリを負荷にかけられなかったりと、使ってみると分かるデメリットもありましたからねぇ。入手性や使いやすさはピカイチだったんですが…
今回使うのはたまたま家に転がっていたやつでしたが、二周目で作る(予定の)倒立振子にはこいつは使わないかもしれないです。どうせ代替品も探さないとなんでちょうどいいタイミングでしょうか。
まとめ
今回の工作での目的は制御理論とその実装を勉強することでしたので、機構面で何か面白い工夫とか資料と大きく変えるとか、そういうことはあまりせずに行きます。
まあすでに代替品が多い状態ですが…フレームやモータ、ギヤボックスなど、ロボットの仕組みの本質に関わる部分は全く一緒にしているのでそこまで大差はないと思います。
もしロータリーエンコーダやモータードライバで、
「こんな便利なのあるよ!」
というおすすめ商品があればコメントとかで教えてもらえると嬉しいです。
資料の順番通りだと、次回は傾斜計という傾きを計測する装置を作ることになりそうです。
それでは、今回はこの辺で。
・2019-07-15追記
セラコンの個数変更(5→1)
基板狭くて入らんかった()