AIエージェント Codex で 強化学習3
起き上がり4脚ロボット

Home > 電子工作 > AIエージェント Codex で 強化学習3 起き上がり4脚ロボット

本記事にはアフィリエイト広告が含まれます。

すき 0
うんこ 0

前回はAIエージェント Codex で簡素な2軸の起き上がりロボの強化学習を実施いたしました。

AIエージェント Codex で 強化学習2 起き上がりロボ

 
簡単なPWMサーボでも強化学習によって見事な起き上がりロボになりました。

決め打ちシーケンスでは出せない生物的な動作が実現できています。

 

Codexを活用しての強化学習フローが自身に構築できましたので、ここでは本命の4脚ロボットの起き上がりに挑戦します。
↓そもそもコレがやりたかったのよ

 

AudiostockでBGM・効果音を販売中!

4脚ロボット

4脚ロボはコチラを使用します。

PTK 7465 MG を用いた4脚ロボットの製法

PWMサーボ PTK7465MGを8個使用したロボです。コントローラはATOM Matrix

 

このロボで私が手掛けた起き上がりシーケンスはコチラ↓

 

さて強化学習でどうなるのでしょうか。お手並み拝見

 

モデル生成

実機の4脚ロボットの筐体を修正してシミュレーション用のMuJoCoモデルを作成しました。

 
はい いい感じになりました。

 

起き上がり強化学習

製作したMuJoCoモデルで倒れた状態から起き上がる動作を学習しました。
学習は Gymnasiumベースの強化学習環境を Stable-Baselines3(PPO )でCPU並列処理で実施

環境構築と報酬や学習フローは前回同様にCodex先生に丸投げしました。

学習ポリシーは以下の通り
観測ベクトル 12次元
 機体 roll角
 機体 pitch角
 機体 roll角速度
 機体 pitch角速度
 サーボ目標角度 1~8
行動ベクトル 8次元
 サーボ角度変化量 1~8

ロボがひっくり返った状態から起き上がる動作を学習

学習結果が以下

見事に反転からの起き上がりが実現できております。
コチラのシミュレーションではロボがひっくり返ったら起き上がり学習ポリシーでの動作が発動し、ある程度起上ったら初期姿勢(全サーボ0°)になるようにしています。

 

Sim2Real

学習ポリシーを実機に移植して動作させてみました。

う。。動かない。。。

初期姿勢を少し傾けるべく天面のスペーサを斜めに間引いてみたけど。。。

起き上がるまで90秒かかるww

全然シミュレーションとおりにならん

 

実機確認

実機とシミュレーションとの間に何かしらの違いがあると疑い、詳細確認を実施

サーボモータ

それぞれのサーボのIDや回転方向は問題なし

MuJoCo Sim.でサーボを動かして値をUDPで実機に送って確認しました。

バッテリ固定位置が左右逆だったので修正しました。まぁこれは大した問題ではない。

姿勢角

実機のロールピッチ姿勢角をMuJoCo SimモデルにUDPで送って姿勢を見てみたところ。。。

ぎゃー!ロールピッチのオイラー角では反転含む全方向の姿勢は一意に決められんやった!
おもいきりジンバルロックしてた。。。そりゃ起上らんわ。。

強化学習の時に気づかなかったのはシミュレーションではクォータニオンから姿勢角を算出していたため問題にならなかったのです。

 
クォータニオン送信に修正してみた

ATOM Matrix搭載のIMU MPU6886は6軸のためYaw角は若干ドリフトしますが、全方向の姿勢が実機で検出できるようになりました。

M5Atom ライブラリにMahonyAHRSがあったので、これでクォータニオン算出して利用

 

再 強化学習 & Sim2Real

実機のオイラー角使用をやめてクォータニオンにして、強化学習をやり直します。

観測ベクトルのロールピッチをやめてクォータニオンから算出した機体天板(base)の法線ベクトルにしました。
法線ベクトルにすることでYaw角は無視できます。

観測ベクトル 14次元
 base法線ベクトル x, y, z
 base角速度 x, y, z
 サーボ目標角度 1~8

学習は問題なくできました。ほぼ1st強化学習と同じ結果です。

 

学習ポリシーを実機に移植して動作

できたー!!!
ただの自分のミスでした。全方向姿勢を取り扱う際にはオイラー角を使わないように気をつけます(;´・ω・)

見事に学習結果通りに動いてくれております。

 

動作

冒頭の手製のシーケンス起き上がりと比べても自然で生き物のような起き上がりとなっております。

 

憧れの蹴り倒すやつもやった

エクセレント!

 
Sim.との比較がコチラ↓

見事な精度でSim2Realできております。

前回も感じましたが、行動ベクトルがサーボ角度の移動量となっているので、移動量を抑えれば それほど真面目にサーボモータのモデル化をしなくてもSim2Realに耐えうるのでしょう。

 

おわりに

ここでは憧れの4脚ロボットの起き上がりを強化学習で実現しました。

学習方針や報酬設計はまるっきりCodexに投げて実施しましたので、今回も楽でした。
しかし人間である私のミスによりゼロショットSim2Realの実現はできずCodex先生の邪魔をする形になってしまいました。
以後気をつけたい。

あらためてAIエージェントの活用で強化学習の報酬設計からの呪縛からの解放を痛感しました。

もう強化学習怖くない。
今後は気軽に学習に頼ろうと思います。

では

 

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください