Skip to content

YUGOROU/gyoza

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gyoza — 双腕 SO-101 による MuJoCo キッチン環境(俯瞰カメラ)

日本語 · English

License: MIT HF Model HF Dataset Ask DeepWiki

gyoza 🥟 — 小規模ロボティクスにおける合成データを利用した学習の有効性

人の実演データゼロで、sim 内の双腕 SO-101 に調理スキルを学習させる研究プロジェクト。 RL とスクリプトを接続したハイブリッド expert が生成する合成データのみで ACT ポリシーを蒸留し、 VLM オーケストレータ(選別判断・事後条件検証・retry 指揮)と束ねて長時間タスク 「選別つきクープグラス盛り付け」 を完走させる。個人研究プロジェクトの実験コードベース。

問い: 大規模な専門家データを集められない個人ロボティクスで、合成データはポリシー学習に効くのか?

主結果

検証 条件 成功率
A. スキル単体(単一球 pick_place・各 N=50) SmolVLA / π0.5 / MolmoAct2(zero-shot) 0/50 ×3モデル
合成データ 261ep のみで学習した ACT 76%(38/50)
B. 長時間タスク(5工程直列・N=75/条件) 検証なしで直列実行 13.3%(理論値 0.70⁵≒16.8% と整合)
VLM 検証 + retry≤2 18.7%(律速 = 判定 VLM の偽陰性 34%)
判定が完璧な場合(試算) ≈87%

合成データはスキル学習に効く。そしてスキルを鍛えた後、律速は動作から検証層の知覚精度へ移る。

選別つきクープグラス盛り付け — まな板上の白玉・ぶどう・熟度3段階のさくらんぼ クープグラスへの盛り付け(サイドカメラ)
レシピに合う果物だけを選ぶ(未熟なさくらんぼが混在) クープグラスへ5工程の直列盛り付け

構成 — GYOZA 二層アーキテクチャ

  • VLM オーケストレータ(Kimi-K2.6): 「どれを掴むか」の選別判断・事後条件の二値判定・retry の指揮。ACT スキルを MCP ツールとして呼ぶ
  • ACT スキル(果物別 ×3): 座標レベルの動作のみを担う。スキルの粒度は「俯瞰カメラから VLM が二値判定できる事後条件 1 つ」
  • 合成データ工場: 座標入力の PPO(把持まで)+ スクリプト仕上げのハイブリッド expert → 俯瞰カメラ描画 → 成功エピソードのみフィルタ → LeRobotDataset 直接書き出し
flowchart LR
  PPO["状態ベース PPO<br/>(把持まで学習)"] --> EXP["ハイブリッド expert"]
  SC["スクリプト仕上げ<br/>(運搬・リリース)"] --> EXP
  EXP -->|"俯瞰描画・成功フィルタ"| DS[("LeRobotDataset<br/>261ep / 果物別 ~200ep")]
  DS -->|"lerobot-train (ACT)"| ACT["ACT スキル ×3"]
  VLM["VLM オーケストレータ<br/>Kimi-K2.6"] <-->|"MCP ツールコール<br/>選別・二値判定・retry"| ACT
Loading

リポジトリ構成

gyoza/
├── gyoza/                      MuJoCo シミュレーション環境と VLA アダプタ
│   ├── envs/pick_place.py        キッチン環境・GT 事後条件・環境フック(GYOZA_COUPE 等)
│   ├── envs/bowl.py              クープグラス / 丼へのシーンパッチ
│   ├── envs/place_skill.py       expert のスクリプト仕上げ(運搬・リリース)
│   ├── envs/rl_pick_place.py     RL expert 用の状態ベース環境
│   ├── vla/                      SO-101 ⇄ VLA の座標系・単位アダプタ
│   └── assets/pick_place.xml     シーン MJCF(SO-101 ×2 は menagerie を attach)
├── jobs/                       HF Jobs 実験パイプライン(すべて uv run 単発スクリプト)
│   ├── zeroshot_job.py           既存 VLA ゼロショット測定(0/50 の出どころ)
│   ├── rl_train_job.py           RL expert の学習(SB3 PPO)
│   ├── act_datagen_job.py        ハイブリッド expert → LeRobotDataset 書き出し
│   ├── act_train_job.py          lerobot-train ラッパ(ACT 100k steps)
│   ├── act_eval_job.py           GT 判定つき評価 + 動画
│   ├── coupe_ablation_job.py     長時間タスク ablation(検証層の有無)
│   ├── judge_bench_job.py        判定 VLM のオフラインベンチ
│   └── overnight_orchestrator.py datagen→train→eval を3果物並行で自動実行
├── scripts/
│   └── veg_pipeline.py           TRELLIS GLB → 実寸化 → CoACD 凸分解 → MJCF 組み込み
├── space/                      HF Space デモ(FastAPI + MCP + hermes-agent)
└── docs/assets/                README 用画像

成果物(Hugging Face)

コードは本リポジトリ、学習済みポリシーとデータセットは HF Hub、大容量アセットは HF bucket に置いている。

種類 場所
ACT(合成のみ・76%) YUGOROU/act_gyoza_pickplace_synth
ACT 果物別 v2 ×3 act_gyoza_shiratama_v2 · act_gyoza_grape_v2 · act_gyoza_cherry3_v2
合成データセット 261ep YUGOROU/gyoza-pickplace-synth
果物別データセット ×3 gyoza-fruit2-{shiratama,grape,cherry3}-0711-v1
食材メッシュ(TRELLIS 生成・605MB)・RL expert bucket YUGOROU/gyoza-artifacts

動かし方

git clone https://github.com/YUGOROU/gyoza && cd gyoza

# SO-101 の MJCF(MuJoCo Menagerie・Apache-2.0)
git clone --depth 1 https://github.com/google-deepmind/mujoco_menagerie third_party/mujoco_menagerie

# 食材メッシュ(TRELLIS 生成・605MB)
hf buckets cp -r hf://buckets/YUGOROU/gyoza-artifacts/veg gyoza/assets/veg

# ローカル環境(Python 3.11 / uv)
uv venv && uv pip install "mujoco==3.10.0" "lerobot[smolvla]==0.4.4" gymnasium stable-baselines3 "imageio[ffmpeg]"

実験パイプラインは HF Jobs で回す設計(各ジョブの docstring に投入コマンドを記載)。 コード・アセットは bucket にミラーし、ジョブは -v hf://buckets/<owner>/<bucket>:/gyoza でマウントする。

# 例: 合成データ生成 → ACT 学習 → 評価
hf jobs uv run jobs/act_datagen_job.py --flavor t4-small ...
hf jobs uv run jobs/act_train_job.py  --flavor a100-large ...
hf jobs uv run jobs/act_eval_job.py   --flavor t4-small ...

実装ノート(ハマりどころ)

  • lerobot 0.4.4: 正規化はモデル外の processor パイプライン。評価では make_pre_post_processors() を必ず通すこと(ACTPolicy.from_pretrained 単体では定数アクションに崩壊する)
  • 単位規約: アダプタ境界は度、MJCF は rad。action は6次元 absolute 関節目標(度)@30Hz
  • 視覚メッシュはデシメート禁止(TRELLIS アトラスの UV 継承が破綻する)。~29万面のまま使用して問題ない

ライセンス・出典

謝辞

メンターの方々に感謝します。 開発・デザイン支援に Claude Fable 5(Anthropic)を使用しました。実験の設計と意思決定は筆者によるものです。

About

Synthetic-data-only skill learning for small-scale personal robotics — dual-arm SO-101 in MuJoCo, ACT distilled from a hybrid RL+scripted expert, orchestrated by a VLM (GYOZA two-layer architecture)

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors