学習環境を整えて、最初のポリシーを訓練する
最終更新
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 health と robotctl monitor の下端の枠のどちらもその理由を示します。
関連
- 学習タスク一覧 — 学習可能なタスクとその id
- sim2real のレシピ — BAM アクチュエータモデル、ドメインランダム化、バックラッシュのモデリング