強化学習への道5 -ロボット強化学習1-

Home > 電子工作 > 強化学習への道5 -ロボット強化学習1-
すき 1
うんこ 0

前回はブラシレスモータ2足歩行ロボットの強化学習シミュレーション用MuJoCoモデルを制作しました。

強化学習への道4 -ロボットSimモデル作成-

 

ここではこのモデルで遂に2足歩行ロボットの強化学習に挑戦します。

ロボット直立 強化学習

まずは直立を維持をするよう学習します。

股関節の基部にIMUセンサを仕込むていで以下のように設定してみました。

観測
 機体(股関節) xy軸の角度、角速度
 各モータの角度
行動
 モータトルク

報酬は機体の角度、角速度が小さくなるように付与

以上の設定で学習させてみましたが。。

うまくいかない。。。

 

試しに学習結果の出力である行動 (action)をモータトルクからモータ角度にしてみます。
MuJoCo内でPID制御でモータ角度をトルクに変換して学習させます。

全然ダメ。。。

 

観測する項目が悪いのか報酬設計が悪いのか もしくは学習環境の記述そのものが悪いのか、ロボの構造が複雑で切り分けることが全然できない状況に陥ってしまいました。

モータ単体で学習

いきなりロボットはまだ早すぎたので、再度モータ単体で検証をします。

トルク指定で単体ブラシレスモータを回転させて倒立させるリアクションホイール姿勢制御モジュールの強化学習 Sim2Real は実現できております。

強化学習への道3 -Sim2Real-

 

2足歩行ロボットではブラシレスモータを角度指定制御して、更にギアを経て各関節を動かしています。
姿勢制御モジュールの時とはかなり違う機構で動かしておりますので強化学習のやり方も変わるはずです。

焦らず単体モータで一個一個検証していくことにします。

角度指定駆動の学習検証

まずは単体でブラシレスモータの角度指定動作の強化学習実現を検証します。

以下のようにアームを水平に保つようにブラシレスモータを動作させる場合を考えます。

実機ではモータ駆動コントローラにIMUセンサ MPU6886を載せて、アームの傾きと角速度のPD制御でブラシレスモータの回転角度を制御しています。

 

モータ駆動はSimpleFOCのベクトル制御モードによる回転角度指定で実施

 

強化学習

MoJuCoモデル作成

 

以下で学習
観測
 アーム 角度、角速度
 モータホイール角度、角速度
行動
 ホイール角度 (180°で正規化)
  MuJoCo内でホイールのPD制御でトルク換算してモータ制御
報酬
 アーム 角度、角速度を最小にする
 アーム角度を小さくする向きにホイールを回す

以下のようにアームを水平に保つ学習結果を得ました。

 

Sim2Real

学習結果を実機に移行して動作確認しました。

プルプルしていますがアームの平行動作を確認することができました。

よく見るとSimもプルプルしていますので、忠実にSim2Realできたと言えます。

 

ブラシレスモータ角度指定動作の強化学習が確認できました。
プルプルするのは報酬設定やホイール角度→トルク変換のPD制御ゲインの調整で解決できるのだと思います。

ギア連動の学習検証

角度指定動作の強化学習が確認できましたので、次はギア連動の強化学習を検証します。

前節同様に姿勢のPD制御でブラシレスモータの回転角度を制御しています。
ブラシレスモータには歯数10のギアをつけて歯数56のアームを駆動しています。
要するにギア比 5.6

強化学習

モデルを制作して前節と同様に学習しました。

ギアの駆動はMuJoCoで詳細に歯車を作りこんで物理的に連動させるのは無理なので equality / joint 機能でソフトで数理的にギア比を指定して処理しています。

 

Sim2Real

学習結果を実機に移行するとSim通りプルプルですが平行保持が実現できました。

これにより MuJoCoの equality / joint 機能を用いた数理的ギア連動モデルでも強化学習が可能であることがわかりました。

トルク指定 角度制御

モータ単体の検証によって
 ・角度指定駆動の強化学習
 ・equality / joint 機能によるギア連動の学習検証
が可能であることがわかりました。

しかしMuJoCoで角度指定してモータ駆動するためにPD制御のよるトルク変換が必要となり、ゲインを設定しないといけません。
学習の際にこのゲインを試行錯誤しながら調整するのはかなり大変です。
ただ いい加減な値にすると前節のようにプルプルと震えた学習結果となってしまいます。

SimでもRealでもゲイン調整が必要になるのは本末転倒なので、ここでは角度指定ではなくトルク指定によるモータ角度制御を目指します。

強化学習

今回は強化学習を先にやってしまいます。

以下で学習
観測
 アーム 角度、角速度
 モータホイール角度、角速度
行動
 モータトルク
報酬
 アーム 角度、角速度、モータ速度を最小にする
 アーム角度を小さくする向きにホイールを回す

 

非常によい水平保持の学習結果を得ました。

学習結果 (行動)で直接モータを駆動できるのでゲイン調整なども必要ありません。

Sim2Real

実機も角度指定ではなくトルク駆動に変更しました。

 

学習結果を実機に移行

Sim通り、スムーズな平行保持機構が実現されました。
強化学習でモータ駆動機構が設計できてしまいました。私もこの道で成長したものです。

ロボットの強化学習はこのトルク指定でやってみようと思います。

おわりに

ここでは2足歩行ロボットの強化学習に挑戦し、うまくいかないのでモータ単体の検証を実施いたしました。

ブラシレスモータの角度指定駆動やギア連動の強化学習 Sim2Real検証を実施しました。

2足歩行ロボットの強化学習に向けた結論として、トルク指定でブラシレスモータを駆動して所望の回転角度を維持させる方向で考えています。

ブラシレスモータの強化学習Simの知見が増し、懸念点もクリアになったので次回こそは2足歩行ロボットの強化学習に成功してたいと思います。

 

ほな

コメントはこちらから

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.