デプロイ設定(config.yaml)
ファイルパス: deploy/robots/go2/config/config.yaml
実機またはSim2Simでの実行時の有限状態機械(FSM: Finite State Machine)の設定ファイルです。学習済みポリシーを実機で動作させる際に、ロボットの状態遷移と各状態でのゲイン設定を管理します。
FSM(有限状態機械)とは
FSMは、ロボットの動作を複数の「状態」に分割し、状態間の遷移を管理する仕組みです。unitree_rl_labでは以下の状態が定義されています:
- Passive: 脱力状態(ダンピングのみ)
- FixStand: 固定立位姿勢への遷移
- Velocity: 学習済みポリシーによる速度制御
FSM状態定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
各状態の詳細
Passive状態
ロボットを脱力状態にします。起動時やエラー発生時に安全に停止するための状態です。
パラメータ
1 2 | |
説明:
mode: 各関節の制御モード0: トルク制御1: ダンピング制御10: 位置制御kd: ダンピングゲイン [N·m·s/rad]- 推奨値: 1-5
- 大きいほど減衰が強く、素早く静止する
- 小さいほど自由に動く
関節の順序(Go2の場合)
1 2 3 4 | |
FixStand状態
ロボットを立位姿勢に遷移させます。Passive状態から起き上がり、安定した姿勢を取るために使用します。
パラメータ
1 2 3 4 5 6 7 8 | |
説明:
kp: 比例ゲイン [N·m/rad]- 大きいほど強く目標角度に追従
- hip関節: 60(横方向の回転、比較的低めのゲイン)
- thigh関節: 80(太ももの関節、高めのゲイン)
-
calf関節: 80(すねの関節、高めのゲイン)
-
kd: 微分ゲイン [N·m·s/rad] - 大きいほど振動を抑制
- hip関節: 5
-
thigh/calf関節: 4
-
ts: タイムステップ [s] - 軌道の時間点を定義
-
[0, 1, 2]: 0秒、1秒、2秒の3点 -
qs: 各タイムステップでの目標関節角度 [rad] - t=0:
[]= 現在の姿勢を維持 - t=1:
[0.0, 1.36, -2.65, ...]= 中間姿勢(脚を畳んだ状態) - t=2:
[0., 0.8, -1.5, ...]= 最終姿勢(立位)
軌道の例(右前脚)
1 2 3 4 5 6 7 8 9 | |
ゲイン調整のポイント
kpが大きすぎる場合: - 振動が発生する - 関節が過熱する - 軌道追従が不安定になる
kpが小さすぎる場合: - 目標角度に到達しない - 応答が遅い - 重力に負けて姿勢が崩れる
kdが大きすぎる場合: - 動きが鈍くなる - エネルギー効率が悪い
kdが小さすぎる場合: - 振動が発生しやすい - オーバーシュートが大きい
推奨調整手順
- まず
kpを小さめの値(30-40)から開始 - 振動が発生しなければ徐々に
kpを増やす - 振動が発生したら
kdを増やして減衰を強化 - 関節ごとに負荷が異なるため、個別に調整
Velocity状態
学習済みポリシーを使用して速度制御を行います。
パラメータ
1 | |
説明:
policy_dir: 学習済みモデル(model_*.pt)が格納されているディレクトリへのパス- デプロイコントローラから見た相対パスで指定
- 最新のチェックポイントが自動的にロードされる
ポリシーファイルの配置
1 2 3 4 5 6 7 8 9 10 11 | |
状態遷移
一般的な状態遷移の流れ:
1 2 3 4 5 6 7 8 9 10 11 | |
ロボットごとの設定例
Go2(四足歩行ロボット)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
H1(二足歩行ロボット)
二足歩行ロボットは関節数が多く、バランス制御が重要です。
1 2 | |
実機展開時の注意事項
安全確認
- 初回起動時:
- 必ずPassive状態から開始
-
ロボットが予期しない動きをした場合、すぐに緊急停止できるように準備
-
ゲイン調整:
- シミュレーションと実機ではゲインが異なる場合がある
-
実機では小さめのゲインから開始し、徐々に上げる
-
軌道確認:
- FixStandの軌道が実機で実行可能か事前に確認
- 関節角度制限を超えていないか確認
デバッグ
学習済みポリシーがうまく動作しない場合:
- ドメインギャップの確認:
- シミュレーションと実機の物理パラメータの違い
- 地面の摩擦係数の違い
-
モーターの応答性の違い
-
ゲイン調整:
- 実機のモーターのトルク特性に合わせてゲインを調整
-
オーバーシュートや振動が発生する場合はkdを増やす
-
観測値のスケール:
- IMUのノイズレベルが学習時と異なる場合がある
- センサーのキャリブレーションを確認
カスタマイズ例
より安定した立ち上がりのために
1 2 3 4 5 6 7 8 9 10 | |
異なる立位姿勢
1 2 3 4 5 | |
トラブルシューティング
ロボットが立ち上がれない
kpが小さすぎる可能性 → 増やす(60 → 80)- 軌道の時間が短すぎる →
tsを延長 - 中間姿勢が不適切 →
qsを調整
立ち上がり時に振動する
kpが大きすぎる可能性 → 減らす(80 → 60)kdが小さすぎる可能性 → 増やす(4 → 6)
ポリシーが読み込めない
policy_dirのパスが正しいか確認- モデルファイル(
model_*.pt)が存在するか確認 - ファイルのパーミッションを確認