強化学習への道7 -ロボット強化学習3-

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

 

前回はロボ関節をギアを含めたアクチュエータとしてモデリングして、角度指定による2足歩行ロボットモデルを完成させました。

強化学習への道6 -ロボット強化学習2-

ここではこのモデルでロボット動作の強化学習を実施たいと思います。

バランス強化学習

中腰で立ってIMUで姿勢角を検知してバランスするよう強化学習します。

構成は毎度の MuJoCo + Gymnasium + Stable-Baselines3 で

入力 (observation)が 
 機体ロール・ピッチ角 [rad]
 機体ロール・ピッチ角速度 [rad/s]
 各関節角度 [rad/]
出力 (action)が
 正規化された各関節角度

 

ロボット全体での強化学習の感覚つかむのにかなり時間かかったけど何とか中腰バランスできた。

 

環境ファイルは以下の通り

 

30000ステップほど学習させた。

Sim2Real

学習で得た結果を実機で確認します。

実機調整

まずは久しぶりにロボット復活

 

無事に動くことを確認いたしました。

 

姿勢や関節の正負がSimと一致するように調整

エンコーダ値取得

学習ではIMUの姿勢角のほかに関節の角度も観測しているため実機でも関節角度の実測値を得る必要があります。

本ロボの構成は以下の通りでモータエンコーダ値をCAN通信で中枢コントローラATOMに送信するようにしました。

 

関節角度ゲット成功

 

CAN通信システムは以下の通り

Sim2Real

実機の調整ができたので学習結果で動作させました。

動画だと非常に分かりにくいけど、押すと反発するように足を動かしてくれてます。

地味だけど2足歩行ロボットのSim2Real成功

ファインチューン

バランス動作のSim2Realが分かりにくかったので、学習結果を引き継いでさらに外乱に強く足を大胆に動かすようにします。

環境コードは以下
リセット時のピッチ角外乱を大きくして、傾いたときに足をより前後させるようにしました。

 

学習時に reset_num_timesteps=False としないと元の学習を引き継がずに位置から学習してしまうので要注意。
これで何日も無駄にした。

reset_num_timesteps=Falseで学習すると前回の学習ステップ30000を引き継いでファインチューン環境ファイルをもとにさらにステップが追加されます。

Sim2Real

ファインチューン結果を実機で確認

よりアグレッシブに足が動くようになった。まだ少し地味だけど

もっと傾いたら足を1,2歩出すようにしたかったけど、どうしても学習がうまくいきませんでした。
どういう報酬あげればいいんだろ??

おわりに

ここではついに2足歩行ロボットの強化学習Sim2Realを確認しました。

バランス動作させるだけでかなり時間がかかりました。
報酬の与え方などまだまだ勉強する必要があります。

ここから歩行させるのはかなり難しそうです。計算量も半端なくなりそう。。
理想的な歩行を作りこんで外乱などの変数を強化学習で振るなどの模倣学習ベースが現実的なような気がしてきています。

ひとまず実機検証も可能な学習モデルや環境ができたので、改めて方針を整えたいと思います。

それではまた

コメントはこちらから

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

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