AIと喧嘩しながら倒立振子を立ち上がらせたら、いつの間にフィジカルAIをやっていた話
👨🦲💭倒立振子、かっこいいなー。
そんなことを思いましてですね、
他人の設計を借りた倒立振子を組み立てたりして遊んでいた necobit カワヅ。でも他人の設計だと技術が自分の手の内に入ってこない…。

もちろん他人の設計の内容を読んで理解していくのが良いのですが、なんかこう…もうちょっと自分で作った感じがいいな。などと思う。
しかし、制御系できる人がみんな言う「ぴーあいでー制御(PID制御)」というのを身につけなければ倒立振子は立たないらしい。なにそれ。
さて、数学理解度は🤪中学校レベルで止まっている necobit カワヅです。
Geminiさんにどうやったら制御理論を身につけられるか聞いてみた。

👨🦲ふーーーーん…………じゃあ倒立振子作ろうじゃん。
そこで何故かキットではなく1から倒立振子を作り始めてしまう。
📝倒立振子の必要要素は…
モーター
IMUセンサー
マイコン
バッテリー
おっ意外と要素が少ない。
ではまず、それらを繋ぐハブ基板を設計します
モーターは Robstride の Edulite05。7000円(299RMB)以下という価格なのにドライバ内蔵、CANで命令やフィードバックを送受信できるという賢いモーターにしました。
なのでハブ基板にはCANトランシーバーと電源を安全にオンオフするための半導体スイッチ回路を搭載して、あとは M5Stack の StampS3、Unit IMUなどありもののモジュールを使ってシステムを構築。
これは完全に機能するところまでできたら、ねこびっと通販で基板を販売するかもしれない(未定)。

ハードができたら、プログラムである。
(👇👨🦲記事の本題はここからです!!!)
今回、自分では一切コードを書かずにプログラムを構築した。
Claude Codeにコーディングを全てやらせて、倒立振子の動作が安定するところまで辿り着きたい。
なぜならこの時点の21日後(=2026年3月1日)に、メイカーズながおかまつりの出展が控えていたんです。これに間に合わせよう!できるか!?

✅CAN経由でモーターを回す→OK
✅IMUの値を取得する→OK
ここまで来たら、IMUの値を元に、傾いたら逆方向にモーターを回せば

#ねこびっとくん倒立振子 ファーストコンタクトできた!
一応IMUの値に応じて動いてるっぽいな。
ハード的にはバッテリーを上部に固定して明日届きそうな基板に載せ替えれば一応要素は揃ったことになる。
さて、果たしてこいつを立たせることができるのか。
バランスをとって立ち上がるはず!
👨🦲✨勝ったな…
と思ったがここからが本当の地獄だった。
全然安定しない。すぐにあっちぶつかってこっちぶつかって倒れる。傾いた時に全然踏ん張らずに倒れる。
制御がわからないので五里霧中ながら、Claudeコードと何故立たないのかトラブルシューティングを進める。
👨🦲カワヅ「なんでこんな不安定なんじゃろか」
💻Claude「スペック通りのトルクが出ていません。要求トルクと出力トルクのギャップが要因です」
👨🦲カワヅ「じゃあそこの設定を確認して」
💻Claude「頑張る」
👨🦲カワヅ「がんばれ」
💻Claude「あかんわ、なんかモーターのセッティングがおかしいのかも」
👨🦲カワヅ「大丈夫だと思うが…48Vまで入力できるモーターに20Vしか入力してない。データシート読んでどのくらい影響あるか確認して」
💻Claude「最高速に影響は出るけど初速のトルクにはあまり影響しないはず」
👨🦲カワヅ「うーむ」

💡もしかして配線がおかしいのでは

💡もしかしてESP32からCANコマンドがちゃんと通っていないのでは

と、いくら設定を変えても、人間がモーター設定アプリで見ても、おかしなところは見つからない。
💻Claude「うーんやっぱ何かがおかしい」
👨🦲カワヅ「オッケーわかった。テスト環境作るからちょっと待って」

出力しているトルクの値自体はモーターのフィードバックの値として取得できるので、あとはトルクを出せる(固定されていて抵抗がある)状況を作れば計測はできるはず。
それをちゃんとやったのがいわゆるトルクメーターだと思うのですが!そんなもの持ってないから
モーターを外して、手で握るためのレバーをつけて…
人が手で全力でブレーキをかけて…
徐々にトルクを上げてマックストルクを測定する!

✅その結果、モーター自体はちゃんと力が出ている
引き続き、一つ一つ要因を調べていきます。

通信もたぶん問題ない。
…。
……。
💥👨🦲💻『『制御側では!!?』』💡✨
という認識をClaude Codeとカワヅが認識できたので、後は問題箇所を見つけていくだけだ!


結果わかったのが、IMUセンサーのノイズに対するフィルターが、通常の姿勢制御の力を打ち消して不安定になっていた、という結論。


\(^o^)/そしてようやく安定して立ち上がる倒立振子。

自力でバランスを取ろうとがんばる倒立振子を、おさんぽひも持って🤝支えてあげてください✨みんなのお越しをお待ちしてるぜ‼️
詳細👉 ao-re.jp/event/46604
本当は外乱に強くしたいとかリモコン操作したいとか色々あるけど
一旦ここで完成とする!
外装をつけて #倒立振子ねこびっとくん になりました。

メイカーズながおかまつりで待ってるよ〜👋キテネ
そしてここで唐突に気がつく。
フィジカルAIってこれねおばさま!!!!!!!
ソフトウェアであるAIに対してその世界のデータを与えて、外の世界へフィードバックする。
脳に対して感覚器(IMUとモーターのフィードバック)と身体(モーターとタイヤ)を与える。
うわーやってみて一発で分かったわー。これは大きな気付きだった。
とりあえず💻『つくってみれば?』と言われて出来た倒立振子が、なんにせよ最低限安定して立ち上がるようになった今の状況は、制御の学習用素材としてとても良い状態に思えます。
次はこれをここからソースコードを読み解いて、制御を勉強していく。つまり逆引き学習をしていきます。
もとより我流で学習してきた necobitカワヅですが、こうやって動かすところまで作っちゃったものを逆引きで学習していけるスタイル、なかなか新鮮です。大変面白いのでオススメ!
#倒立振子ねこびっとくん の進化をお楽しみに
✉ ご意見・ご質問を necobit に送る✉
匿名で送りたい方はコチラ👇
X(旧ツイッター)で送りたい方はコチラ👇
メールで送りたい方はコチラ👇
***
すでに登録済みの方は こちら