学習タスク一覧
最終更新
uv run list-envs を実行すると、実際に有効なタスクレジストリが表示されます。正はその出力で、以下の表はそれを整理したものです。
flat/rough と書かれたタスクには、平地版と不整地版の 2 つがあります。
タスクごとの個別ページ
以下はクイックリファレンスです。各タスクの学習のコツ、難しい点、向いている場面はそれぞれ個別のページにあります。
| タスク | 内容 |
|---|---|
| Velocity | 主タスク。速度指令での歩行。最初に学習させるのはこれ |
| VelStand | 歩行と転倒復帰を同時に学習 |
| StandUp | うつ伏せ / 仰向け / 座位から立ち上がる |
| SitStand | 指令による着座 ↔ 起立 |
| GroundPick | しゃがんでくちばしの先端を地面に触れさせる |
| BallKick | ボールを蹴る。ポリシーはボールを見ていない |
| Roulade | 前転 |
| Rollers | ローラーでの速度追従。roller モードの主タスク |
| Swizzle | 左右対称のスウィズル走法 |
| RollerCrouch | 滑走しながらしゃがむ |
| RollerSlope | 斜面を滑り降りる |
| RollerStandUp | 地面からローラーの上に立ち上がる |
| Spin | その場旋回 |
歩行と起立
| タスク id | 地形 | 内容 |
|---|---|---|
Mjlab-Velocity-{Flat,Rough}-MicroDuck |
平地 / 不整地 | 主タスク。速度指令での歩行 + 頭部姿勢指令 |
Mjlab-VelStand-{Flat,Rough}-MicroDuck |
平地 / 不整地 | 歩行と転倒復帰を 1 つのポリシーにまとめたもの |
Mjlab-StandUp-{Flat,Rough}-MicroDuck |
平地 / 不整地 | うつ伏せ / 仰向け / 座位から立ち上がり、その後は姿勢制御付きで立ち続ける |
Mjlab-SitStand-{Flat,Rough}-MicroDuck |
平地 / 不整地 | 指令による着座 ↔ 起立。動きは滑らかで、頭部も制御可能 |
最初の学習は Mjlab-Velocity-Flat-MicroDuck から始めてください。
スキル動作
| タスク id | 地形 | 内容 |
|---|---|---|
Mjlab-GroundPick-{Flat,Rough}-MicroDuck |
平地 / 不整地 | しゃがんでくちばしの先端を地面に触れさせ、立位に戻る |
Mjlab-BallKick-Flat-MicroDuck |
平地 | 70 mm / 15 g のボールを前方へ蹴る(actor はボールを見ていない) |
Mjlab-Roulade-Flat-MicroDuck |
平地 | 頭を越えて前方に一回転し、両足で着地する |
BallKick の「actor がボールを見ていない」という点は注目に値します。ポリシーはボールの位置をまったく観測せず、動作そのものの再現性に頼っています。
ローラー(roller)
足元に受動輪を付けた状態のタスク一式です。
| タスク id | 地形 | 内容 |
|---|---|---|
Mjlab-Velocity-Flat-MicroDuck-Rollers |
平地 | ローラーでの速度追従 |
Mjlab-Velocity-Swizzle-MicroDuck |
平地 | 古典的な左右対称のスウィズル滑走 |
Mjlab-RollerCrouch-Flat-MicroDuck |
平地 | 滑走しながらしゃがむ |
Mjlab-RollerSlope-Flat-MicroDuck |
斜面 | 斜面を滑り降りる |
Mjlab-RollerStandUp-Flat-MicroDuck |
平地 | 地面からローラーの上に立ち上がる |
Mjlab-Spin-Flat-MicroDuck |
平地 | その場で高速に旋回する |
Backlash 版:バックラッシュのモデリング
主要タスクにはそれぞれ Backlash の双子があり、歯車のガタを含むモデルの上で学習します。14 個のサーボ関節それぞれに ±1°(合計 2°)のバックラッシュが直列に入ります。
使い方は、タスク id の MicroDuck の前に -Backlash を挿入するだけです。
Mjlab-Velocity-Flat-Backlash-MicroDuck
このモデリングは sim2real にとって重要で、公式実装では次の 3 点が押さえられています。
- 各サーボに非駆動の
passive_<joint>_backlashヒンジを追加します。 - 実機のエンコーダはバックラッシュの出力側にあるため、ファームウェアの PD エミュレーション(
BacklashEncoderBamActuator)もjoint_pos/joint_velの観測も、バックラッシュを通して読み取ります。つまりqpos[servo] + qpos[backlash]です。 - 観測次元も行動次元も変わらないため、ONNX の書き出しと実機ランタイムには一切変更が要りません。
実装はリポジトリの src/mjlab_microduck/tasks/backlash.py にあります。
アクチュエータモデル
すべてのタスクが、Dynamixel XL330 を模擬するために BAM の M6 アクチュエータモデルを使います。電圧制御則、逆起電力、クーロン / ストライベック / 負荷依存の摩擦を含みます。
その上に環境ごとのドメインランダム化が乗ります。
- バッテリー電圧
- 負荷時の電圧降下
- 指令の遅延
- 摩擦の大きさ
実装は src/mjlab_microduck/actuator/ の FrictionDRBamActuator です。