坂を通過できても、歩き方が小刻みだったり、進む方向がずれたりすれば、現場で使うには課題が残ります。チームゼットでは、Isaac Sim上のG1で10度の上り・下りを検証し、歩幅と進路の両方を見直しました。
今回の上りでは、通常の正面開始で最大横ずれを約17cmに抑え、一歩の長さは約25cmを維持しました。開始方向を左右に5度ずつ変えた場合も、最大横ずれは27cm以内。各約25秒、転倒せず斜面を通過しています。
最初は、通過できても小刻みだった
最初に試した公開方策では、一歩の長さの中央値が上り約10cm、下り約8cmでした。斜面は通過できましたが、足を忙しく動かす歩き方です。「坂を渡れた」という判定だけでは、求めている動きになっていませんでした。
そこで、Unitreeが公開した学習済み方策と、それに対応するG1・Dex3の機体モデルを組み合わせ、制御の更新周期も検証しました。採用した設定は物理計算と関節のPD制御が200Hz、方策の更新が約33.3Hzです。今回採用した方策の重みには、当社で追加学習を行っていません。
一歩は約30cmまで広がりました。ただし、この段階では上りで最大約1.8m、下りで約2.0mも横へずれていました。歩幅が広がることと、狙った進路を保つことは別の課題でした。
最初の小刻みな歩行からは方策と機体モデルも変更しています。更新周期だけで歩幅が改善した、という比較ではありません。
胴体の向きに合わせて、速度指令を変える
歩行方策に与える前進・横移動の指令は、胴体から見た方向です。胴体が斜めを向いたまま「前へ」と指示すると、目標の進路から外れていきます。
今回は、目標の直線からどれだけ横へ離れたか、どの速さで横へ動いているかを使って戻す速度を計算し、その速度を現在の胴体の向きに合わせて変換しました。さらに、胴体の向きを戻す旋回指令も調整しています。機体の位置を直接動かしたり、関節をアニメーションで再生したりする処理ではありません。
旋回の補正を強くするだけでは、開始方向を変えたときに横ずれが増えました。旋回指令の上限と横方向の補正を合わせて調整した結果、上りの最大横ずれを次のように抑えられました。
| 正面から開始した上り | 最大横ずれ | 一歩の長さ・中央値 |
|---|---|---|
| 歩幅を広げた段階(v4) | 178.7cm | 29.9cm |
| 進路補正を入れた段階(v5) | 39.7cm | 24.7cm |
| 方向補正を調整した今回(v6) | 16.9cm | 25.3cm |
v4からv5では速度指令も変えています。v5からv6では、同じ学習済み方策と前進速度指令0.5m/sを使い、補正を変更しました。今回の実際の平均前進速度は約0.81m/sで、指令値どおりの速度ではありません。
正面だけでなく、開始方向を変えて確認する
正面からの一例だけで判断せず、開始方向を−5度、0度、+5度に変えました。斜面の角度・形状は同じです。
| 上り10度の開始方向 | 最大横ずれ | 一歩の長さ・中央値 | 約25秒の結果 |
|---|---|---|---|
| −5度 | 21.7cm | 25.6cm | 斜面通過・姿勢維持 |
| 正面 | 16.9cm | 25.3cm | 斜面通過・姿勢維持 |
| +5度 | 26.8cm | 25.2cm | 斜面通過・姿勢維持 |
事前に置いた目安は、斜面を通過して姿勢を保つこと、最大横ずれ30cm以下、一歩の中央値25cm以上、一歩の間隔0.25〜0.45秒です。今回の3条件はこの目安を満たしました。調整中の試行も記録に残しており、採用した3条件だけから一般的な成功率は出していません。
上りの採用設定。24.99秒、等倍速、約33.3fps。水平距離6mの斜面に入口と出口の平地を接続しています。倉庫は表示用の背景で、倉庫設備との干渉や回避を試す動画ではありません。
下りも通過。上りとは別の設定を使う
下り10度は、前段階の検証で通常開始の最大横ずれ20.7cm、一歩の中央値26.8cmでした。開始方向を変えた3条件でも、最大横ずれは24.0cm以内に収まっています。こちらは前回の結果と動画を採用しており、今回の上り改善に合わせて再実験したものではありません。
下りの採用設定。24.99秒、等倍速、約33.3fps。速度指令は0.52m/s、実際の平均前進速度は約0.68m/s。上りとは補正設定が異なり、地形を認識して自動で切り替える実装ではありません。
横ずれが小さくても、残る課題がある
上りの−5度開始では、途中で胴体の向きが目標から最大35.1度ずれました。進路からの距離は抑えられていますが、胴体の向きまで精密に保てたわけではありません。狭い通路なら、体や腕の向きも含めた余裕を測る必要があります。
今回の補正はシミュレーターが持つ位置・速度・姿勢を使っています。Visual SLAMによる自己位置推定、Nav2による経路計画、実機での歩行は今回の検証に含みません。坂の途中で止まる動作や、異なる傾斜・摩擦への対応も、今回採用した設定では未検証です。
「倒れずに通過できた」から一歩進めて、歩幅と進路を数値で確認するところまで進みました。次は、途中停止や通路幅など、用途に必要な条件を足していきます。
計測・再現について
横ずれは開始3秒以降の目標直線からの最大距離で、終了位置だけの誤差ではありません。入口・斜面・出口を含む値です。一歩の長さは左右交互の接地時の足リンク位置から求めた前方距離で、足裏の厳密な接触位置や滑り量ではありません。接地は5Nの閾値と離地・接地の継続時間で判定しています。
動画は時間を引き伸ばしたり早送りしたりしていません。撮影なしの対応試行と物理データが一致すること、全833フレームの時刻とファイルのハッシュを確認しています。
公開方策・対応モデルの参照元はUnitreeの unitree_sim_isaaclab、使用版は e30c25b。当社の実装、採用・不採用の設定、計測ログ、動画の対応関係は専用リポジトリの実験ブランチに保存しています。
チームゼットでは、公開モデルの導入からシミュレーションへの接続、動作改善、評価まで、開発チームの一員として取り組んでいます。フィジカルAIの実装・検証を進めたい方は、お問い合わせからご相談ください。
一次資料
Unitree公式:使用したコード・モデルの参照版。本記事では当社の計測結果と録画を掲載し、第三者のコード・学習重み・USD素材は配布しません。