YouDuck.ai

学習環境を整えて、最初のポリシーを訓練する

最終更新

Microduck の動作ポリシーはロボット本体のリポジトリではなく、隣にある microduck_rl で学習されます。このページは、ゼロから学習を一度通すのに必要な最小の道筋です。

動作要件

  • CUDA GPU が 1 枚 — 学習は MuJoCo Warp 上で動きます。
  • uv — Python 環境の管理に使います。

土台は mjlab(MuJoCo Warp)と PPO です。ポリシーはここで 50 Hz で学習され、ONNX に書き出され、ロボット側リポジトリのランタイムが読み込みます。学習の周波数とオンボード制御ループの周波数が同じ 50 Hz なのは、偶然ではありません。

4 つのコマンド

git clone https://github.com/pollen-robotics/microduck_rl
cd microduck_rl

歩行ポリシーを学習する(手元の GPU で。4096 並列環境なら使える歩容までおよそ 1〜2 時間):

uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096

学習済みポリシーを viewer で確認する:

uv run play Mjlab-Velocity-Flat-MicroDuck --wandb-run-path <entity/project/run_id>

デプロイ用に ONNX へ書き出す:

uv run scripts/export.py Mjlab-Velocity-Flat-MicroDuck --wandb-run-path <...>

書き出したポリシーを CPU 版 MuJoCo でキーボード操作する:

uv run scripts/infer_policy.py --walking output.onnx

チェックポイントから学習を再開する

uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096 \
    --agent.run-name resume --agent.load-checkpoint model_29999.pt --agent.resume True

GPU が無い場合

任意の train コマンドに --hf-jobs を付けると、ローカルではなく Hugging Face Jobs 上で学習が走ります。詳細はリポジトリの scripts/hf/README.md を参照してください。

実機のポリシー切り替えをシミュレーションで予行演習する

実機ではランタイムがこれらのポリシー(歩行 / 復帰 / トリック)をホットスワップします。背後にあるのは共有された 61 次元の観測契約で、そのおかげでどのポリシーもいつでもロボットを引き受けられます。

scripts/infer_policy.py が予行演習するのは、まさにこの動作です。

uv run scripts/infer_policy.py --walking walk.onnx --standing stand.onnx \
    --sitstand sitstand.onnx --roulade roulade.onnx --new-cmd-obs

キーボード操作:速度指令、G で頭を下げて拾う、Y で座る/立つ、R で前転、K / L で左右のキック。

--debug--save-csv--record に対応しており、sim2real の比較に使えます。

自分のポリシーを実機に載せる

リリースを作る必要はありません。ロボットの /etc/robot/robotd.toml から直接そのファイルを指します。

[policy]
walk = "/home/radxa/my_walking.onnx"
stand = "/home/radxa/my_stand.onnx"
sudo systemctl restart robotd

これらのパスはシステム更新を越えて残ります。リリースが置き換えるのは同梱のバイナリとポリシーファイルであって、別の場所を指しているこの設定ではありません。この行を消せば同梱のポリシーに戻ります。

読み込みに失敗したポリシーは unhealthy として報告され、robotctl healthrobotctl monitor の下端の枠のどちらもその理由を示します。

関連