はじめに:大人の冬休みの自由研究
こんにちは、組み込みエンジニアの @RamTuckey です。
今年のAdvent Calendar、勢いで登録してしまいました。 テーマは 「3軸リアクションホイール倒立振子(Cubliライクなロボット)の自作」 です。
以前から「いつか作ってみたい」と思っていたのですが、日々の業務に追われてなかなか手が動かず…。このアドカレというイベントを良いきっかけ(締め切り)にして、一気に作り上げてしまおうという企画です。
最近トレンドの 「Sim2Real(シミュレータから実機へ)」 や 「Edge AI(マイコン実装)」 といった技術を、実機で動かしながら体当たりで学んでいく 「技術ログ」 としてお楽しみいただければと思います。
なぜ「AI」で「倒立振子」なのか?
ロマン駆動開発
倒立振子といえば制御工学の基本ですが、今回は教科書通りのPID制御やLQR(線形2次レギュレータ)だけで終わらせるつもりはありません。
「深層強化学習 (Deep RL) で学習した脳みそを、小さなマイコンに詰め込んで動かしたい」
これに尽きます。 PC上のシミュレータの中で何万回も転んで学習したAIが、現実世界の物理法則の中でどう振る舞うのか。そして、STM32という制約のあるマイコンの中で、最新のアルゴリズムが動く様子を見てみたい。そんなロマンが原動力です。
目指すのは、
「小突かれても、重心バランスが変わっても、なんとなく耐えてくれる賢いロボット」
です。
システム構成 (System Architecture)
作るものの全体像はこんな感じです。
PCで作ったAIモデルを、Cコードに変換してSTM32マイコンに移植します。いわゆる Sim2Real の構成ですね。
技術スタック詳細
せっかくの自作なので、ハードウェア選定も少しこだわってみました。
MCU: STM32G474
モータ制御(FOC)とAI演算を両立させるため、演算能力高めなCortex-M4Fコアのマイコンを選びました。
Sensor: ICM-42688-P
6軸IMUです。姿勢推定の要になります。
Actuator: Gimbal Motor + SimpleFOC
安価なジンバルモータを、ベクトル制御でヌルヌル動かす予定です。
AI/Sim: PyTorch, Isaac Gym, STM32Cube.AI
学習環境の構築からやっていきます。
25日間の予定地
これからクリスマスまでの25日間、以下のような流れで進めていく予定です。(予定は未定!)
第1週:シミュレーションと制御理論
まずはPCの中でロボットを定義して、AIに「立ち方」を教え込みます。
第2週:ハードウェア設計とSTM32実装
基板を設計したり、ハンダ付けしたり、マイコンのドライバを書いたり。
第3週:Edge AIの実装とHILテスト
PCで育てたAIをマイコンに移植して、ちゃんと動くかテストします。
第4週:実機統合とプロジェクトの総括
全てを組み合わせて、実際に立たせてみます。
最終日(Day 25)に、何かしらのデモ動画(実機が無理ならHILで…!) をお見せできるように頑張ります。
おわりに
成功も失敗もひっくるめて、開発の過程を垂れ流していく予定です。 同じようなモノづくりに興味がある方の暇つぶし、あるいは何かの参考になれば幸いです。
明日 Day 2 は、Pythonを使って 「物理シミュレーション環境」 を作っていきます。
それでは、25日間お付き合いください!
アドベントカレンダー参加中
STM32×AIで「3軸倒立振子」を作る25日間(ひとりアドカレ)Advent Calendar 2025