Mini Pupper2 ros2 4足歩行 Policy 強化学習 4
Mini Pupper2 ros2 4足歩行 Policy 強化学習 第4弾
1. Policy を、MlpPolicy から、LSTM 版の MlpLstmPolicy に替えてみた。
こちらは、時間記憶があるそうじゃ!!
これになると、Policy が本当に狡猾になるみたい。
注) これは、google ai の、PPO のパラメータ誤りの所為で、問題ない。
また、train が、重くもなるみたい。
当初 fps:7 程度しか出なくて、しかたなく、Gazebo の 周りの Obj を全て削除して、
更に、Gazebo を、4倍速で回して、ただし、見た目は、4倍速ではなくて、少し速くなった程度。
これで、やっと、fps:17 ほどになった。
train が進むと、fps:23 になった。
ただ、実際の model の weight の更新時の中断は、けっこうある。
PPO のパラメータでの注意!!
下記は、間違い。当初 google ai の言われるままに、下記で、train していたが、1歩目から、2歩目以降が、一向にでない。
sde_sample_freq=4
にして、やっと、pupper が動き出した!!
2. env は、 Locomotion Transformer を少し変更すれば、そのまま使える。
結局、Locomotion Transformer で散々、改良した、env をこちらに持ってきて、train させてみる。
こちらの方が、報酬の増減に忠実みたい。
3. もう一つべつのアプローチが、あった。
SB3 PPO で、4足向け 強化学習ばかり試して来たが、
Google ai に聞いたら、最初、模倣学習で、そのあと 強化学習の方法もあるらしい。
なにー!!
それなら、こちらが断然楽なのでは?
強化学習では、変に早足だったり、伏せの姿勢が付きやすい!!
第2段の、Locomotion Transformer が、この方法でできるみたい。
どうするかね?
最初、Ros2 Gazebo 上で、Mini Pupper2 を、/cmd_vel や、Nav2 で動かして、bags ファイルに、
エピソード毎に、データを収集して、
それを、模倣学習に使えば、出来るとのこと。
うーーん、面倒じゃな!!
Locomotion Transformer で模倣学習(Imitation Learning) は、過去の時系列データ数 steps が必要みたい。
ここには、どうやら、LeRobot Dataset(過去と未来のデータが扱える) が使えるとの事じゃ。
Ros2 Bags の収集と Ros2 Bags to LeRobot Dataset 変換は、以前、散々試した。
フィジカルAi で ROS2 自立走行ロボットを動かす。#2
ここの、Python コードが流用できそう!!
なんとなく、実現できそう!!
最初から、強化学習するのは、本当に時間がかかるし、PC のリソースも強力なのが必要!!
でも、最初、模倣学習から入れば、もっと時間の節約になりそう!!
なんなら、模倣学習だけでも良い気がする。
模倣学習だけで、Mini Pupper2 を、最初動かしてみて、問題があれば、強化学習させるか、
再度、 Bags データを補強して、模倣学習を行うか!!
こりゃ、選択肢が、増えすぎてこまる!!
しかし、これでも、階段の走行は、できないか!!
大雑把な話だけど、階段を走行するには、足が空を切っているか、接地しているかの情報が必要みたい。
その判定は、モーターのトルクを使うようじゃ。
モーターのトルク等を、EKF に入力して、4本足が接地している確率を 0.0 - 1.0 で求めて、
それを、Policy の observation に使うみたい。