pollen-robotics/microduck_rl
RL training environments for Microduck (mjlab)
Microduck RL – 小型二足ロボットのためのシミュレーションから実機へのトレーニング
概要 – 800 g、25 cmの二足ロボット(Microduck)に歩行、起立、転回、スケート、キックなどを教えるためのMuJoCo-Warp環境とトレーニングスクリプトのコレクションです。ポリシーはPPOで学習され、ONNXにエクスポートされ、その後、コンパニオンマイクロダックランタイムによって物理ロボット上で実行されます。
重要な理由
- 完全なシミュレーションから実機へのパイプライン – BAMアクチュエータモデル(電圧制御のDynamixel XL330)を、現実的な摩擦、バックラッシュ、およびドメインランダム化とともに使用します。この忠実度は、このような小型のサーボ駆動ロボットにとって、シミュレーションと実機のギャップの最大の原因です。
- ホットスワップ可能なポリシー – すべてのポリシーは61次元の観測ベクトルを共有するため、デーモンを再起動することなく、歩行、回復、トリックなどを切り替えることができます。
- オープンソースの再現性 – MJCFロボットファイル(Onshapeから生成)から、トレーニングコマンド、エクスポートスクリプト、公開ワークフローまで、すべてが提供されています。
仕組み(高レベルのフロー)
- 環境定義 –
src/mjlab_microduck/tasks/*_env_cfg.pyが各タスク(例:Mjlab-Velocity-Flat-MicroDuck)を説明します。地形、報酬関数、ランダム化フラグを設定します。 - トレーニング –
uv run train <task> --env.scene.num-envs 4096を実行します。PPOはMuJoCo Warpを介してGPU上で動作します。典型的な歩行は1〜2時間で完了します。 - 検査 –
uv run play …はMuJoCoビューアでチェックポイントを視覚化します。ビデオを録画することもできます。 - エクスポート –
scripts/export.pyはチェックポイントを、観測ノーマライザーをすでに含むONNXグラフに変換します。 - 公開 –
uv run publish …はONNXファイルとマニフェストをHugging Face Hubにアップロードし、任意のMicroduckロボットにインストール可能にします。 - 展開 – ロボット上で、
robotctl policy add …とrobotctl policy load walk …がポリシーをロードします。デーモンは実行時にそれを切り替えます。
主要コンポーネント
| コンポーネント | 役割 |
|---|---|
| BAMアクチュエータモデル | 電圧制御、逆起電力、クーロン摩擦とストライベック摩擦、およびオプションの±1°ギアの遊び(バックラッシュ)をシミュレートします。 |
| MJCFロボットファイル | Onshapeからエクスポート。いくつかのバリアント(robot_walk.xml、robot_groundcontact.xml、robot_groundcontact_rollers.xml、およびバックラッシュバージョン)。 |
タスクレジストリ (src/mjlab_microduck/tasks/__init__.py) |
自動生成されたバックラッシュ双子を含むすべての環境を登録します。 |
トレーニングCLI (train_cli.py) |
mjlabトレーニングフレームワークの薄いラッパー。上流のmjlab CLIと同じです。 |
| エクスポート/推論スクリプト | scripts/export.pyはONNXを生成します。scripts/infer_policy.pyはCPU MuJoCoでポリシーを実行して迅速なテストを行います。 |
| 公開ツール | ONNX + manifest.json + READMEをパッケージ化し、Hugging Faceにプッシュし、検証(形状、NaN、ノーマライザー)を処理します。 |
| テスト | 報酬符号の規則、関節インデックスの整合性、NaNガードをチェックする小さなpytestスイート。 |
クイックスタート(クイックステップ)
# クローンして移動
git clone https://github.com/pollen-robotics/microduck_rl && cd microduck_rl
# 歩行トレーニング(GPUが必要)
uv run train Mjlab-Velocity-Flat-MicroDuck --env.scene.num-envs 4096
# それを視覚化
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 <...>
# オプション: Hugging Faceに公開
uv run publish --onnx output.onnx --repo <user>/microduck-walk --kind perpetual --slot walk
GPUがない場合? トレーニングをHugging Face Jobsにオフロードするには--hf-jobsを追加します。
典型的なユースケース
- 研究 – 実世界の二足ロボットで、ドメインランダム化、アクチュエータモデリング、または新しい報酬設計を実験します。
- 教育/デモ – 数行のコードで、小さなロボットがトリック(転回、ローラースケート)を実行するのを見せます。
- コミュニティ共有 – カスタム歩行やトリックをHugging Face Hubに公開します。Microduckを持っている人は誰でも即座にインストールできます。
ライセンスと帰属
- コード: Apache 2.0。
- 3Dメッシュ: CC-BY-NC-SA 4.0(
LICENSE-MODELS.mdを参照)。
Microduck RLは、物理ロボットのための最新のシミュレーションから実機への強化学習の具体的なエンドツーエンドの例であり、現実的なアクチュエータ物理、ドメインランダム化、合理化された公開ワークフローを備えています。
関連
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト
- プロジェクト