強化学習の最近のブログ記事

Mini Pupper2 ros2 4足歩行 Policy 強化学習 4

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 が動き出した!!

Mini Pupper2 ros2 4足歩行 Policy 強化学習 2

Mini Pupper2 ros2 4足歩行 Policy 強化学習 2

Mini Pupper2 ros2 4足歩行 Policy 強化学習 第2弾
Policy を、MlpPolicy から、Locomotion Transformer に替えてみた。

SB3 + PPO + Locomotion Transformer で、
Ros2 Jazzy Gazebo(Hramonic) で mini_pupper_ros の Mini Pupper2 を使うのは、全てそのまま。

トランスフォーマー型 Policy(Locomotion Transformer など)
LeRobotのACTと同じように、4足歩行でもTransformer(自己アテンション機構)を採用する動きが主流になっています。
との事。
Transformer を使っているので、試してみた。

一番最初に、おんちゃんが今回学んだことを先に書いておきます。
1) Reward の評価方式。
i. Pupper の移動した位置+向きによる評価方式。
ii. /cmd_vel の 3速度一致による評価方式。
大雑把に言って、上記2方式がある。
i. Pupper の移動した位置+向きによる評価方式 は、train 初期 では、使えない。
train 初期では、数 steps 数 action で、Pupper は、とんでもない位置、向きになってしまう。
狂った位置、向きから、オリジナルの /cmd_vel を Pupper に送っても到底、目標とする本来の位置、向きに行ける訳がない。
なので 必然的に、 ii. 3速度評価方式 になると思う。
ii. 3速度評価方式 も、全ては、評価、減点の与え方のプログラムの追求になる!!
歩行の向きが合わないのは、reward_vyaw で、調整する。
歩行の前後の不一致、速度が合わないのは、reward_vx で、調整する。

2) 余分なReward 項目は、使わない。
上記で言えば、位置+向き の 2項目か、 3速度評価 による、 3項目。

3) 複数項目の場合の、reward のトータル方法。
後述の 一括マイナス方式 Isaac Gym / rsl_rl 標準 と 重み付き線形和 を参照してください。

4) SB3 OPP の強化学習の基本は、どうやるの?
Pupperの 前後、左右への小さい動きの反復動作(探索動作) をする中で、より reward が多い方の動作を強化して行く事みたい。
reward は、+ でも - でも良い。OPPのパラメータが適切であれば、より大きい方が、使われる。
ただし、reward としては、+ の方が良い気がする。
1 step 0.0 から 1.0 などがよいみたい。
一番重要なのは、探索行動は、train が進むにつれて、小さくなって行く。
なので、その間に、より reward が大き方への動きが増えていく事が大事。
この、増えていくことが無いまま、train が、80万、100万となると、Pupperが動かなくなる。
後述の、v. OPP のパラメータの見直し。を参照してください。

5) 最初から強化学習するよりも、先に、模倣学習をして、その後で、強化学習がよいみたい。

おんちゃんが、こちらを選んだのは、
入力 observation の joint-state と、model の output の act(joint-controll) のフィールドが、対応している事。
input と output の位置が同じなのが、むだな学習が、生じなくていいと思う!!
MlpPolicy は、汎用的な model なので、必ずしも、4足ロボット向けと言うわけではなくて、
input と output の対応が取れていなくて、 train の過程で、関連付けるので、時間がかかりそう!!

Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 4足歩行 Policy を探したけど、どうもどこにあるのか判らん。
あったとしても、おんちゃんの PC の GPU gtx 1070 では、まるっきり歯がたたん。

ChatGTP に、いろいろ聞いているうちに、
Ros2 Jazzy Gazebo(Harmonic) で、Mini Pupper2 ros が動いているので、Gazebo のシミュレーション環境でも、いいんじゃない?(まるっきり、時間度外視であれば)
と、行き着いた。

ChatGPT を、おだてて、
4足歩行 Policy と、強化学習の torch train 等、一式書いてもらっての、テストじゃ。
今回は、この話じゃ!!
けっして、良い子は、まねをしないように。...

結局、Gazebo 上の Mini Pupper2 を、Policy の出力で、動かして、その結果が良ければ、+何点、 NG であれば、-何点と、強化学習を繰り返すだけ。
難点は、それを、一度に 1000とか同時にできるかどうかだけじゃ。
昔、台に乗った、ポールを倒さないように、台を動かす強化学習と同じ要領みたい。

Stable Baseline3(SB3) で、PPO(Proximal Policy Optimization) で、既存の MlpPolicy をすこしカスタマイズしてつかえば、出来上がるみたい。

Python コードの原型は、ChatGTP に教えてもらって、つくったぞね!!

このアーカイブについて

このページには、過去に書かれたブログ記事のうち強化学習カテゴリに属しているものが含まれています。

前のカテゴリはLeRobotです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ