
AIエージェント Codex で 強化学習4
車輪倒立振子
本記事にはアフィリエイト広告が含まれます。
最近はCodexを当たり前のように使って生活しており、
わざわざ “AIエージェント Codex を使ってます” なんてことを言うのも今回が最後になるのではないでしょうか?
ここでは以前挑戦したゲームコントローラで操作する倒立振子の強化学習に再挑戦します。
ROBSTRIDE 05 倒立振子 強化学習 Sim2Real
まず前後走行を習得させてから
旋回を学習という体操教室の先生のマインドでRL結構ビュンビュン走れるようになったで#強化学習 #ReinforcementLearning #MuJoCo pic.twitter.com/ygp3y04rqc
— HomeMadeGarbage (@H0meMadeGarbage) March 12, 2026
コントローラのジョイスティック(XY)のステートも観測して学習させるのですが、自身で報酬設計した倒立振子はそれほどギュンギュン動かすことはできませんでした。
報酬設計むず過ぎるんだって!
いまの私にはCodex先生がついておりますので、報酬設計を丸投げして コントローラも観測に含めた学習に再挑戦したいと思います。
目次
機体製作
今回はホイール駆動にシリアルサーボ XL330-M077-T を採用した車輪倒立振子で強化学習に挑戦します。
この構成はすでに実績があるのでサクッと作っちまいましょう。
はい 完成
機体完成#強化学習de倒立振子 pic.twitter.com/I7GiTbQXTW
— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
XL330-M077-T はカレントモードで駆動しています。
MuJoCoモデル
強化学習用にMuJoCoモデルを作成します。
MuJoCoモデル作成
あーMuJoCoしかった#強化学習de倒立振子 pic.twitter.com/mvPodMMRJR— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
各パーツの寸法と重量を測りつつ構築
イイ感じのモデルが完成しました。
出来上がったMuJoCoモデルを実機と全く同じ制御で倒立させてみた。
だいたい良さそうだな。
モータ同定必要ないかも#強化学習de倒立振子 pic.twitter.com/Sr91TxHj8c— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
↑この動画で実機とSim.の制御はピッチ角と角速度とホイール回転速度でそれぞれ単位を合わせて同じゲインでフィードバックさせています。
おおむね一致していますね。
実機はカレントモード制御なので MuJoCoモデルのモータはトルク制御の<motor>アクチュエータを採用しました。
ここでは暫定的にMaxトルクを0.22 N·m (XL330仕様のストールトルクから)、摩擦 dampingを0.001としました。
モータ同定
MuJoCoモデルのモータの定数 (gear, damping ) を適当に決めていたので、ここではモータ同定してしっかりモデリングしていきます。
Codex先生と相談して同定用テストを構築。
実機で振幅120mAで周波数を0.2~5Hzにシフトしてログを取得
モータ同定用 ログとり
振幅120mA 周期 0.2->5Hz#強化学習de倒立振子 pic.twitter.com/KoRDIsYrk7— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
取得したログからCodex先生にMuJoCoの<motor>アクチュエータ定数をいじってフィッティングしてもらいました。
定数を以下に変更することで実機の速度応答に近づけることができました。
gear (トルク):0.22 → 0.05239
damping (摩擦):0.001 → 0.0000731
フィッティングが難しい場合はフィルタとかも挿入して合わせこもうと思っていたのですが、MuJoCo定数調整だけでイケたので幸運でした。
モータ同定後のモデルで実機と比較
モータ同定
<motor>アクチュエータの 定数変更
gear:0.22 -> 0.05239
damping:0.001 -> 0.0000731
いいんじゃないかしら#強化学習de倒立振子 pic.twitter.com/OKgSsvamlP— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
前節の比較より動作が近い(はず)。
強化学習
大変よいモデルができたので、ゲームコントローラジョイスティックによる倒立操作を目指して強化学習します。
学習は Gymnasiumベースの強化学習環境を Stable-Baselines3(PPO )でCPU並列処理で実施します。
Codex先生と相談して学習の観測・行動と方針を決定してあとは丸投げ
観測ベクトル 7次元
機体 pitch角
機体 pitch角速度
左ホイール回転速度
右ホイール回転速度
機体Yaw軸角速度 gyroZ
ジョイスティックY軸
ジョイスティックX軸
行動ベクトル 2次元
左モータ トルク (正規化電流)
右モータ トルク (正規化電流)
ポリシーの構造はこんな感じ↓
学習方針は以下の順で実施
通常倒立→前後移動→旋回
学習は報酬設計から評価・調整も全部Codex先生に丸なげでしたので結果のみご報告
倒立学習
まずは倒立動作を強化学習
ちょっと流れてるけど とりあえずいいか#強化学習de倒立振子 pic.twitter.com/j8sbkqiUP5— HomeMadeGarbage (@H0meMadeGarbage) June 22, 2026
前後進学習
コントローラによる前後移動学習#強化学習de倒立振子 pic.twitter.com/RPwxaakxu0
— HomeMadeGarbage (@H0meMadeGarbage) June 23, 2026
旋回学習
コントローラ操作可能な倒立振子ニューラルネットワークが遂に完成した#強化学習de倒立振子 pic.twitter.com/RJDO4saKmp
— HomeMadeGarbage (@H0meMadeGarbage) June 23, 2026
やったこと(Codex先生の解説)
旋回学習までにやったこと
倒立を先に固めた
最初から前後移動や旋回まで全部やらせるのではなく、まず倒立そのものを安定させた。
初期姿勢のばらつきは小さめにして、倒れないこと、角度をゼロ付近に戻すことを優先した。
この段階では旋回や移動命令は主目的にせず、姿勢維持を作った。
報酬で重視したものは以下。
pitch angle を小さくする
pitch rate を小さくする
無駄な wheel velocity を抑える
無駄な gyroZ を抑える
action を大きくしすぎない
倒れたら大きく減点
押されたときに踏ん張るようにした
倒立ができた後、外力を入れても倒れにくいようにした。
MuJoCo上で一定間隔ごとに短い押し外乱を入れ、姿勢を戻す学習を追加した。
この段階の狙いは、きれいに静止することだけではなく、少し乱されても戻れること。
実機では床の摩擦、ケーブル、手で押したときのズレがあるので、押し外乱への耐性は重要だった。
前後移動命令を追加した
次に vel_cmd を使って、ゲームパッドの前後スティックに追従する学習を入れた。
ここで直接「車輪速度だけ」を追わせると倒立が崩れやすいので、vel_cmd から小さい pitch target を作り、少し傾けて進む形にした。
要するに、前に進みたいときは少し前に倒し、後ろに進みたいときは少し後ろに倒す。
この時点で、前後スティックへの反応はかなり自然になった。
旋回命令を追加した
最後に omega_cmd を追加して、左右差を使った旋回を学習させた。
ここでは、倒立と前後移動を壊さないように、Phase4のモデルから継続学習した。
gyroZ が omega_cmd に近づくように報酬を入れ、同時に wheel turn や turn action が暴れすぎないようにも抑えた。
Sim2Real
旋回まで学習したポリシーを実機に移植
Sim2Real
コントローラ(ジョイスティックXY)を観測に入れた強化学習クリアただニューラルネットワークに機体のgyroZをそのまま入れると発信したので1/10以下にして安定
調査中だけど原因不明 単位も間違ってないんだよなぁ。#強化学習de倒立振子 pic.twitter.com/kvGYimO2UR— HomeMadeGarbage (@H0meMadeGarbage) June 23, 2026
みごとゼロショットでSim2Realが実現されました!と言いたかったのですが、
学習したポリシーに実機のYaw軸角速度gyroZをそのまま入れると発振してしまい係数をかけて1/10以下にしてやっと安定して動作しました。
なんでこんなに誤差が出るのか。。調査中だけど実機ではIMUの生データ使ってるからノイズかも。。
調整は必要でしたが、とりあえず憧れの操作コントローラのステートを含めた車輪倒立振子の学習が達成できました。
憧れのコントローラのステートも含めた強化学習
動作自体は別に強化学習使わなくてもできるが
AI活用による報酬設計で是非これを俺の体に入れたかったのだ。喜びと共に#強化学習de倒立振子 pic.twitter.com/gFdA22BIMV— HomeMadeGarbage (@H0meMadeGarbage) June 23, 2026
ニューラルネットワークでギュンギュン動いとる
完全にAIのおかげです。
おわりに
ここではゲームコントローラで操作する倒立振子の強化学習に再挑戦しました。
若干調整は必要でしたが憧れのコントローラのステートを含むニューラルネットワークでのギュンギュン操作が実現されました。
報酬設計などをもろもろAIエージェント Codex に丸投げして苦痛なく強化学習を字資することができました。
AIエージェントを使ってとか、Codexを使ってとかでどーのこーのいうのは今回が最後になるかと思います。
もう当たり前に活用して生活していくのですから。
まさかおじさんになってテクノロジーによってパワーアップできると思ってなかったわ。
長生きせんといかんですね。



