トラ技2019/7月号でカルマンフィルタを学ぶ(1)-傾斜計製作
目的
ロボット業界の隅っこにひっそりと生きるものとしてカルマンフィルタを学びたい。そのためにトラ技2019/7月号を読み、倒立振子の製作にチャレンジします。どこで挫折するかわかりませんが、頑張ってみます。
参考書
題名にもあるとおりの書籍です。
- トランジスタ技術2019年7月号
傾斜計製作
今回作るのは「車輪型倒立振子」(2個の車輪だけで直立、バランスを整え続ける動作をするロボット)。棒を立たせるタイプの倒立振子ロボットもありますが、車輪型のほうが好きなので願ったりかなったりです。また、倒立振子の制御には「現代制御理論」「カルマンフィルタ」が応用されており、ロボットを設計・開発するための土台として「微分・積分」「線形代数」「確率・統計」「力学」「電気回路」といった数学・物理学も欠かせないとのこと。本当に作れるのか、かなり怖気づいています。わからなくなったらひとまず分かったふりをして進むしかありません。
まずは「傾斜計」を作ります。傾斜計は加速度センサとジャイロ・センサを組み合わせて傾斜を計測するもの。計測した傾斜データはシリアル通信でPCに出力・確認します。傾斜計にはセンサデータから真の傾斜角を推定するカルマンフィルタを実装します。
そして「傾斜計」が完成したらそれを流用して倒立振子を作ります。ハードウェアを作り、寸法や質量といったパラメータを測定、そのデータを用いて「物理モデル」を作り、「シミュレータ」を作ります。シミュレータで問題なく立つことが確認できたら、倒立振子制御のプログラムを実装、という流れのようです。
これを書いている時点では「倒立振子」のハードウェアを作った状態です。シミュレータ以降はこれからであり、本当にできるか不安です。とはいえ、完成を夢見て進みます。
参考書での倒立振子の部品表を見ながら自分が作りたい倒立振子のイメージを作りました。家にストックしてあるものを多く使ったので以下のような構成です。IMUは10DoFですが、地磁気は使わないので6DoFで十分と思われます(気づいたのは組立後、MPU-6050を持ってたのに使えませんでした)。
No. | 名称 | 型式 | 個数 | 購入先 |
---|---|---|---|---|
1 | マイコンボード | RP2040-One | 1 | 千石電商 |
2 | IMU | 10 DoF IMU Sensor(C) | 1 | RobotShop |
3 | モータドライバ | AE-TB6612-BO | 1 | 秋月電子 |
4 | LED | 赤、黄、青 | 3 | 秋月電子 |
5 | モーター | GA12-N20 6V 100RPM | 2 | Amazon |
6 | カーボン抵抗 | 330オーム | 3 | 秋月電子 |
7 | 電池ボックス | 単3、2本 | 2 | 秋月電子 |
8 | ユニバーサル基板 | AE-B2-CEM3 | 1 | 秋月電子 |
9 | シャーシ | 自作 | 1 | 自作 |
10 | ホイール | 自作 | 2 | 自作 |
11 | フランジカップリング | 3mm | 1 | Amazon |
12 | Oリング | 内径50mm・ゴム直径5.7mm | 2 | ホームセンタ |
13 | XHキット | XHキット | 3 | Amazon |
14 | AMS1117-3.3V 降圧型モジュール | AMS1117-3.3V 降圧型モジュール | 1 | Amazon |
15 | スイッチ | 2MS1-T1-B4-M2-Q-E | 1 | 秋月電子 |
16 | タクトスイッチ | TVDT18-050CB-T | 2 | 秋月電子 |
マイコンの開発環境は使い慣れているPico C/C++ SDKを使用しますが、Arduino IDEでも可能なはずです。
参考書では傾斜計を作ってから倒立振子にするため部品を追加しています。しかし、適当に傾斜計を作ると倒立振子のパーツを付け足すのが大変になると思ったため、最初から倒立振子の回路図を設計するようにしました。
設計した回路図は以下のとおりです。
RP2040-Oneのピン構成は以下としました。
No. | ピン番号 | 機能 |
---|---|---|
1 | GP0 | UART Tx |
2 | GP1 | UART Rx |
3 | GP2 | タクトスイッチ1 |
4 | GP3 | タクトスイッチ2 |
5 | GP4 | LED1 |
6 | GP5 | LED2 |
7 | GP6 | LED3 |
8 | GP7 | エンコーダ1 |
9 | GP8 | エンコーダ1 |
10 | GP9 | エンコーダ2 |
11 | GP10 | エンコーダ2 |
12 | GP11 | モータドライバ STBY |
13 | GP12 | IMU I2C SDA |
14 | GP13 | IMU I2C SCL |
15 | GP14 | モータドライバ APWM |
16 | GP15 | モータドライバ A2 |
17 | GP26 | モータドライバ A1 |
18 | GP27 | モータドライバ B1 |
19 | GP28 | モータドライバ B2 |
20 | GP29 | モータドライバ BPWM |
ユニバーサル基板に実装したアートワーク図は以下のとおりです。部品面は画面奥、半田面は画面手前としています。
作成した倒立振子は以下のようになります。
最後に
ひとまずハードウェアはできたので、次は各機能の動作確認をします。
Discussion