Zipeng Fu, Ashish Kumar, Jitendra Malik, and Deepak Pathak, “Minimizing Energy Consumption Leads to the Emergence of Gaits in Legged Robots,” Conference on Robot Learning, 2021. Online Available
要約
エネルギーを最小化するように強化学習したら,4脚ロボットは速度に応じて異なる歩容を学習した。
手法
方策は30次元の状態変数を入力として,12次元の目標関節角度を出力する。状態変数は関節角度と関節角速度,胴体のロール角とピッチ角,各脚が接地しているかどうかのバイナリ変数で構成される。各関節はPD制御で制御される。
報酬関数は以下のように定義される:\[ r = r_{\mathrm{forward}} + \alpha_1 r_{\mathrm{energy}} + r_{\mathrm{alive}} \]\[ r_{\mathrm{forward}} = - \alpha_2 | v_x - v_x^{\mathrm{target}} | - | v_y |^2 - | \omega_{\mathrm{yaw}} |^2 \]\[ r_{\mathrm{energy}} = - \boldsymbol{\tau}^\top \dot{\boldsymbol{q}} \]
学習はシミュレーション上で行われた後,実機に転移される。強化学習はPPOとAdamでおこないつつ,RMAという手法で環境情報のエンコードをおこなう。学習は15000エポックおこなわれ,各エポックでは100000個の状態-行動が使われた。シミュレーション上では様々な地形が使われる。
異なる速度の歩行をひとつの方策に学習させる際には,個別に学習した方策を蒸留する方法をとった。速度を変えてマルチタスク学習させる方法はうまくいかなかったらしい。複数の方策を個別に学習させた後,方策ラベルを潜在表現として教師あり学習しつつ,中間的な速度の運動を含めて強化学習した。
結果
Unitree社のA1を使用した。低速(0.375 m/s),中速(0.9 m/s),高速(1.5 m/s)の3通りの速度それぞれについて同一のハイパーパラメータで方策を学習させたところ,低速では walk が,中速では trot が,高速では bounce が観察された。加えて,いずれの方策もMPCよりもエネルギー効率が高かった。さらに学習済みの方策はファインチューニングなしで実機にも適用できた。頑健性もあり,たとえば1 kgの重りを乗せたりしても転ばず歩行することができた。
さらに学習された動作の Froude 比を計算したところ,4脚動物と同程度の値であることがわかった。Froude 比は \(F = v^2 / g h\) で定義される値であり,動物においては形態が似ていればサイズが違っても同程度の値となることが知られている。
学習時にはエネルギー消費のペナルティしか与えていないが,エネルギー消費が減るにつれてトルクやトルク変化率,足のスリップ,関節角速度,行動の正則化に相当する値も良くなっていった。
平地で外乱なしで学習させたところ,不自然で不安定な動作になった。
感想とか
- 動物が歩容を変えるのはエネルギー効率のためって話は知っていたけど,エネルギー効率だけから歩容が分化するというのは驚き。
- MPCで歩行制御した研究では床反力の制御が大事だった一方で,この研究では接地しているかどうかの2値しか見ていないのが興味深い。
- マルチタスクではうまくいかなかったが蒸留ではうまくいったという部分はなんか役立ちそうな知見。
- 地味にsim-to-realの部分がすごい気がする。制御方策を実機に適用するときは参考にしたい。