
強化学習への道5 -ロボット強化学習1-
前回はブラシレスモータ2足歩行ロボットの強化学習シミュレーション用MuJoCoモデルを制作しました。
ここではこのモデルで遂に2足歩行ロボットの強化学習に挑戦します。
目次
ロボット直立 強化学習
まずは直立を維持をするよう学習します。
股関節の基部にIMUセンサを仕込むていで以下のように設定してみました。
観測
機体(股関節) xy軸の角度、角速度
各モータの角度
行動
モータトルク
報酬は機体の角度、角速度が小さくなるように付与
以上の設定で学習させてみましたが。。
直立維持を強化学習。。。
観測
機体角度、角速度
各モータの角度
行動
モータトルクちょっと無理あるか
各関節の角度観測にしたほうがいいかな#強化学習への道#ReinforcementLearning pic.twitter.com/iSZr4RYjaq— HomeMadeGarbage (@H0meMadeGarbage) May 16, 2025
うまくいかない。。。
試しに学習結果の出力である行動 (action)をモータトルクからモータ角度にしてみます。
MuJoCo内でPID制御でモータ角度をトルクに変換して学習させます。
観測
機体角度、角速度
行動
ホイール角度内部でPIDでトルク変換してモータ駆動してみたけど
うまくいかんな#強化学習への道#ReinforcementLearning pic.twitter.com/tMtjqlZFqF— HomeMadeGarbage (@H0meMadeGarbage) May 16, 2025
全然ダメ。。。
観測する項目が悪いのか報酬設計が悪いのか もしくは学習環境の記述そのものが悪いのか、ロボの構造が複雑で切り分けることが全然できない状況に陥ってしまいました。
モータ単体で学習
いきなりロボットはまだ早すぎたので、再度モータ単体で検証をします。
トルク指定で単体ブラシレスモータを回転させて倒立させるリアクションホイール姿勢制御モジュールの強化学習 Sim2Real は実現できております。
2足歩行ロボットではブラシレスモータを角度指定制御して、更にギアを経て各関節を動かしています。
姿勢制御モジュールの時とはかなり違う機構で動かしておりますので強化学習のやり方も変わるはずです。
焦らず単体モータで一個一個検証していくことにします。
角度指定駆動の学習検証
まずは単体でブラシレスモータの角度指定動作の強化学習実現を検証します。
以下のようにアームを水平に保つようにブラシレスモータを動作させる場合を考えます。
BLDCトルク制御モードによる回転角度指定
角度指定をIMUセンシングデータのPD制御で実施
ゲインは職人技で調整これを強化学習で出来んのかって話#強化学習への道#ReinforcementLearning pic.twitter.com/I5Jk8k2skW
— HomeMadeGarbage (@H0meMadeGarbage) May 18, 2025
実機ではモータ駆動コントローラにIMUセンサ MPU6886を載せて、アームの傾きと角速度のPD制御でブラシレスモータの回転角度を制御しています。
モータ駆動はSimpleFOCのベクトル制御モードによる回転角度指定で実施
強化学習
MoJuCoモデル作成
MuJoCoモデル完成#強化学習への道 #ReinforcementLearning pic.twitter.com/FobrWvGIuL
— HomeMadeGarbage (@H0meMadeGarbage) May 18, 2025
以下で学習
観測
アーム 角度、角速度
モータホイール角度、角速度
行動
ホイール角度 (180°で正規化)
MuJoCo内でホイールのPD制御でトルク換算してモータ制御
報酬
アーム 角度、角速度を最小にする
アーム角度を小さくする向きにホイールを回す
以下のようにアームを水平に保つ学習結果を得ました。
なかなか良い学習ができた#強化学習への道 #ReinforcementLearning pic.twitter.com/b9sz0d1mqC
— HomeMadeGarbage (@H0meMadeGarbage) May 18, 2025
Sim2Real
学習結果を実機に移行して動作確認しました。
ちょっとプルプルしてるけど
BLDC目標角度制御のSim2Realできた#強化学習への道#ReinforcementLearning pic.twitter.com/XWbwB2KSGk— HomeMadeGarbage (@H0meMadeGarbage) May 18, 2025
プルプルしていますがアームの平行動作を確認することができました。
よく見るとSimもプルプルしていますので、忠実にSim2Realできたと言えます。
あー学習結果がプルプルしとるね
この辺はもう少し詰めが必要だ#強化学習への道 #ReinforcementLearning pic.twitter.com/pFVUbXWW6O— HomeMadeGarbage (@H0meMadeGarbage) May 18, 2025
ブラシレスモータ角度指定動作の強化学習が確認できました。
プルプルするのは報酬設定やホイール角度→トルク変換のPD制御ゲインの調整で解決できるのだと思います。
ギア連動の学習検証
角度指定動作の強化学習が確認できましたので、次はギア連動の強化学習を検証します。
次はこれ
ギア介してのブラシレスモータ制御これは強化学習で出来んでしょ#強化学習への道#ReinforcementLearning pic.twitter.com/EV57EtSXlH
— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2025
前節同様に姿勢のPD制御でブラシレスモータの回転角度を制御しています。
ブラシレスモータには歯数10のギアをつけて歯数56のアームを駆動しています。
要するにギア比 5.6
強化学習
モデルを制作して前節と同様に学習しました。
プルついてるけど一応 強化学習で水平維持できた。#強化学習への道 #ReinforcementLearning pic.twitter.com/kszAXi6bBP
— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2025
ギアの駆動はMuJoCoで詳細に歯車を作りこんで物理的に連動させるのは無理なので equality / joint 機能でソフトで数理的にギア比を指定して処理しています。
1 2 3 |
<equality> <joint name="gear_link" joint1="wheel_joint" joint2="gear_joint" polycoef="0 -5.6 0 0 0"/> </equality> |
Sim2Real
学習結果を実機に移行するとSim通りプルプルですが平行保持が実現できました。
Sim通りプルプルしとる。。。#強化学習への道 #ReinforcementLearning pic.twitter.com/qnVD5hZ9vr
— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2025
これにより MuJoCoの equality / joint 機能を用いた数理的ギア連動モデルでも強化学習が可能であることがわかりました。
トルク指定 角度制御
モータ単体の検証によって
・角度指定駆動の強化学習
・equality / joint 機能によるギア連動の学習検証
が可能であることがわかりました。
しかしMuJoCoで角度指定してモータ駆動するためにPD制御のよるトルク変換が必要となり、ゲインを設定しないといけません。
学習の際にこのゲインを試行錯誤しながら調整するのはかなり大変です。
ただ いい加減な値にすると前節のようにプルプルと震えた学習結果となってしまいます。
SimでもRealでもゲイン調整が必要になるのは本末転倒なので、ここでは角度指定ではなくトルク指定によるモータ角度制御を目指します。
強化学習
今回は強化学習を先にやってしまいます。
以下で学習
観測
アーム 角度、角速度
モータホイール角度、角速度
行動
モータトルク
報酬
アーム 角度、角速度、モータ速度を最小にする
アーム角度を小さくする向きにホイールを回す
非常によい水平保持の学習結果を得ました。
トルク制御で強化学習
プルプルしてないし いい感じ#強化学習への道 #MuJoCo#ReinforcementLearning pic.twitter.com/MlDH7ms9m5— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2025
学習結果 (行動)で直接モータを駆動できるのでゲイン調整なども必要ありません。
Sim2Real
実機も角度指定ではなくトルク駆動に変更しました。
学習結果を実機に移行
トルク制御の強化学習結果を実機で堪能
ここにきてはじめてSim先行で結果を得た
つまり私が強化学習で実機駆動設計ができる人間になったということ#強化学習への道 #Sim2Real#ReinforcementLearning pic.twitter.com/7txvEuckX8— HomeMadeGarbage (@H0meMadeGarbage) May 19, 2025
Sim通り、スムーズな平行保持機構が実現されました。
強化学習でモータ駆動機構が設計できてしまいました。私もこの道で成長したものです。
ロボットの強化学習はこのトルク指定でやってみようと思います。
おわりに
ここでは2足歩行ロボットの強化学習に挑戦し、うまくいかないのでモータ単体の検証を実施いたしました。
ブラシレスモータの角度指定駆動やギア連動の強化学習 Sim2Real検証を実施しました。
2足歩行ロボットの強化学習に向けた結論として、トルク指定でブラシレスモータを駆動して所望の回転角度を維持させる方向で考えています。
ブラシレスモータの強化学習Simの知見が増し、懸念点もクリアになったので次回こそは2足歩行ロボットの強化学習に成功してたいと思います。
ほな