🐱

トラ技2019/7月号でカルマンフィルタを学ぶ(1)-傾斜計製作

2024/12/09に公開

目的

ロボット業界の隅っこにひっそりと生きるものとしてカルマンフィルタを学びたい。そのためにトラ技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