Isaac Lab における Unitree G1 歩行学習の評価指標

Humanoid

前回の記事の歩行シミュレーションで Unitree G1 の安定した後ろ向き歩行を実現できました。

シミュレーション中 learning iteration ごとに以下の表示がされていましたが、これらが何を意味するのか紐解いていきます。

各評価指標の意味

################################################################################
                      Learning iteration 1499/1500                      

                       Computation: 38055 steps/s (collection: 1.244s, learning 0.047s)
             Mean action noise std: 0.78
          Mean value_function loss: 0.0053
               Mean surrogate loss: -0.0052
                 Mean entropy loss: 27.8460
                       Mean reward: 21.60
               Mean episode length: 986.38
Episode_Reward/track_lin_vel_xy_exp: 0.9094
Episode_Reward/track_ang_vel_z_exp: 0.6373
       Episode_Reward/lin_vel_z_l2: -0.0069
      Episode_Reward/ang_vel_xy_l2: -0.0151
     Episode_Reward/dof_torques_l2: -0.0086
         Episode_Reward/dof_acc_l2: -0.0156
     Episode_Reward/action_rate_l2: -0.2520
      Episode_Reward/feet_air_time: 0.0499
Episode_Reward/flat_orientation_l2: -0.0049
     Episode_Reward/dof_pos_limits: -0.0052
Episode_Reward/termination_penalty: -0.0042
         Episode_Reward/feet_slide: -0.0147
Episode_Reward/joint_deviation_hip: -0.0222
Episode_Reward/joint_deviation_arms: -0.0722
Episode_Reward/joint_deviation_fingers: -0.0557
Episode_Reward/joint_deviation_torso: -0.0303
Metrics/base_velocity/error_vel_xy: 0.2570
Metrics/base_velocity/error_vel_yaw: 0.6734
      Episode_Termination/time_out: 0.9810
  Episode_Termination/base_contact: 0.0190
--------------------------------------------------------------------------------
                   Total timesteps: 73728000
                    Iteration time: 1.29s
                      Time elapsed: 00:32:23
                               ETA: 00:00:01
Reward term意味詳細目標
track_lin_vel_xy_expvx, vy の速度指令に実速度が追従できているかexp(-((vx_cmd - vx)² + (vy_cmd - vy)²) / std²)。exp は指数関数。誤差が小さいほど 1 に近づく。G1 Flat では std = 0.5高い
track_ang_vel_z_expwz の旋回速度指令に実際の yaw rate が追従できているかexp(-(wz_cmd - wz)² / std²)。wz の単位は rad/s。誤差が小さいほど 1 に近づく。G1 Flat では std = 0.5高い
lin_vel_z_l2上下方向 z に揺れる・跳ねる動きを罰するvz²。上下方向の速度が大きいほど penalty が大きくなる0 に近い
ang_vel_xy_l2roll / pitch 方向に激しく回転することを罰するwx² + wy²。roll / pitch 方向の角速度が大きいほど penalty が大きくなる0 に近い
dof_torques_l2大きな関節 torque を使うことを罰するΣ τj²。対象 joint の torque の二乗和。必要以上に力の大きい動作を抑える。G1 Flat では主に hip / knee joint が対象0 に近い
dof_acc_l2急激な関節運動を罰するΣ q̈j²。実際の関節 acceleration の二乗和。関節を急激に加速させる動作を抑える0 に近い
action_rate_l2前 step から action が急変することを罰するΣ(action_t - action_(t-1))²。joint position command の急激な変化を抑え、滑らかな動作を促す0 に近い
feet_air_time二足歩行らしく片足支持・遊脚時間を確保できていることを褒める片足支持時の接地時間 / 遊脚時間を利用して reward を計算する。G1 Flat では最大 0.4 s まで評価される。ほぼ停止 command の場合は reward を与えない高い
flat_orientation_l2robot が roll / pitch 方向に傾くことを罰するg_x² + g_y²。robot 座標系で見た重力ベクトル g の x, y 成分の二乗和。robot が水平なら重力はほぼ z 軸方向になるため g_x ≈ g_y ≈ 00 に近い
dof_pos_limits関節角が soft limit(学習・制御用の limit)を超えることを罰するΣ max(q_min - q, 0) + max(q - q_max, 0)。soft joint limit 内なら 0。G1 では ankle pitch / roll が対象0
termination_penalty転倒などによる episode の異常終了を強く罰するI(terminated)。異常終了時は 1、通常時は 0。G1 では weight -200 が掛かる。通常の time out は対象外0
feet_slide接地中の足が床の上を滑ることを罰するΣ ||v_foot,xy|| × I(contact)。接地している foot の x-y 方向速度が大きいほど penalty が大きくなる0 に近い
joint_deviation_hiphip yaw / roll が default 姿勢から大きく外れることを罰するΣ |qj - qj_default|。hip yaw / roll の default joint position からのずれを評価する0 に近い
joint_deviation_arms腕関節が default 姿勢から大きく外れることを罰するΣ |qj - qj_default|。shoulder / elbow の default joint position からのずれを評価する0 に近い
joint_deviation_fingers指関節が default 姿勢から動きすぎることを罰するΣ |qj - qj_default|。歩行に不要な finger joint の動きを抑える0 に近い
joint_deviation_torsotorso joint が default 姿勢から大きく外れることを罰する|q_torso - q_torso_default|。torso の不要な回転を抑える0 に近い

指標は主に以下の 3 つに分別できます。

  • 指令追従
  • 安全・安定性(転倒しない)
  • 動作品質(動きのなめらかさ)

torso や hip がどこを指しているのか曖昧だったので、図示しました。

報酬の収束

以下のように 1500 iteration 目だと、いくつかの reward は改善中でした。特に、角速度指令への追従性(track_ang_vel_z_exp)は、後方に歩くとき直進しない事象と関連していそうなので改善したいですね。

まとめ

今回の記事では、Unitree G1 の強化学習シミュレーションで使われている報酬関数の指標についてまとめました。報酬の種類がたくさんあり、1500 iteration の学習ではまだ学習しきれていないものもありそうです。weight を変えてみて、歩行がどう変化するかを調べてみても面白そうです。

コメント