Skip to content

About

Sim2Real pick-up for the JetRover arm in Isaac Lab: a PPO expert policy with task-space Delta IK, trained on 15 objects with material-based domain randomization, serving as a data engine that exports LeRobot/GR00T datasets for VLA training.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

JetRover Pick-Up:以強化學習專家為資料引擎的 Sim2Real 抓取系統

本專案在 Isaac Lab 中為實體機器人 JetRover(5 軸手臂 + 夾爪)建立地面物體抓取任務, 訓練出能抓取 15 種不同材質物體的 PPO 專家策略,並將其成功軌跡自動轉換成 LeRobot v2 / NVIDIA GR00T 格式的 「腕部影像 + 語言指令 + 動作」資料集,用於訓練可部署到實體機器人的視覺-語言-動作(VLA)模型。

 Isaac Lab 平行模擬                 RL 專家策略                     資料引擎                         下游
┌──────────────────────┐   PPO   ┌────────────────────┐  rollout ┌──────────────────────┐   ┌───────────────────┐
│ JetRover + 15 種物體 │ ──────▶ │ 任務空間 Delta IK  │ ───────▶ │ 成功軌跡篩選         │──▶│ GR00T VLA 微調    │
│ 質量/摩擦域隨機化    │         │ privileged 狀態輸入 │          │ 腕部相機 + 語言標註   │   │ 實體 JetRover 部署 │
└──────────────────────┘         └────────────────────┘          │ → LeRobot v2         │   └───────────────────┘
                                                                  └──────────────────────┘

核心亮點

1. 為 Sim2Real 設計的任務空間控制(0510 環境)

  • 7 維動作空間:6D 末端執行器增量位姿(XYZ + RxRyRz)+ 1D 夾爪,透過 Differential IK 解算關節目標, 並限制單步最大位移與旋轉,讓策略輸出的動作在實體伺服機上安全可執行。
  • 49 維觀測:關節相對位置/速度、物體位置與 3D bounding box 角點、目標位置、上一步動作。
  • 嚴格的成功判定:物體需離地超過門檻、與夾爪保持在合理距離內、速度穩定,且連續維持 N 步才算成功, 避免物理穿透或彈飛造成的「假成功」污染資料集。

2. 多物體與物理域隨機化

  • 單一策略同時學習 15 種物體:塑膠杯/盆/瓶、不鏽鋼刀叉匙、玻璃瓶與調味罐、陶瓷盤、麥克筆、鍋鏟、玩具。
  • 依真實材質為每種物體設定專屬摩擦係數範圍,並在每個 episode 隨機化質量與表面摩擦,提升遷移到真實世界的魯棒性。
  • 針對細長、薄型物體(刀叉、盤子)調整 PhysX 求解器迭代次數與 rest offset,並強化凸分解碰撞網格以抑制夾爪穿透。

3. RL 專家 → VLA 資料引擎

4. 訓練穩定性工程

大規模平行 PPO 在接觸密集的抓取任務中容易出現 NaN 與策略標準差崩潰。本專案追查出兩個主要來源: 從 checkpoint 恢復訓練時 observation normalizer 的統計量與新環境分佈不匹配,導致方差計算失效; 以及 PhysX 穿透造成的觀測數值爆炸。對應實作:

  • 觀測/動作截斷與物理合理範圍限制(關節位置 ±2π rad、速度 ±20 rad/s)
  • 六層 NaN/Inf 防護(checkpoint 載入、optimizer 前後、act 前、update 前後)與 std 下限保護(train_ppo_nan_recovery.py)
  • 訓練診斷探針與效能監控工具(diagnostic_utils.py)

設計演進

本專案以日期版本號保留每次迭代。從「讓策略直接看相機」逐步收斂到「狀態專家 + VLA 學生」的架構,每一步都有明確的動機:

階段 版本 做法 學到的事 / 為何前進
基線 0203 Ground-truth 狀態 PPO,reach / lift 獎勵 驗證機器人模型、獎勵設計與物理參數
端到端視覺 RL 0310 – 0318 非對稱 Actor-Critic:Actor 只看 RGB-D、PointNet 點雲與 YOLOv8 偵測;Critic 使用 privileged 狀態與接觸力。以行為複製(BC)預訓練編碼器後再接 PPO 可行,但高維視覺輸入使取樣效率低、訓練不穩
抓取先驗 0403 每個 episode 以 FastSAM + Contact-GraspNet 預測 6-DoF 抓取位姿,加入位姿對齊獎勵 抓取姿勢更合理,但推論成本高
規模化與平滑化 0421 – 0426 2048 平行環境、適應性速度懲罰課程、關節 Delta 動作 + EMA 濾波 + Jerk 懲罰、Teacher-Student 蒸餾 動作平滑度與 Sim2Real 安全性大幅改善
最終架構 0510 任務空間 Delta IK、15 種物體、材質域隨機化;專家軌跡匯出給 GR00T 由 RL 負責「會抓」、VLA 負責「看得懂與泛化」

各版本環境的細節見任務環境說明。


專案結構

source/pickup_place_direct_0203/.../tasks/direct/pickup_place_direct_0203/
├── pickup_place_direct_0510_env.py / _env_cfg.py   # 最終任務環境
├── pickup_place_vision_asym_03xx/0403_*.py         # 視覺 RL 與 CGN 探索階段
├── mdp/                                            # rewards / observations / terminations / curriculum
├── agents/rsl_rl/                                  # PPO 設定、自訂 VisionAsymActorCritic
└── utils/                                          # JetRover 模型設定、視覺編碼器、YOLO、Grasp predictor、診斷工具

scripts/
├── rsl_rl/              # 訓練 / 播放、GR00T 資料收集與 LeRobot 轉換
└── isaac_sim_testing/   # 相機內外參校正、BC 訓練、抓取驗證、物理診斷

快速開始

需求:Isaac Sim 4.5、Isaac Lab、Python 3.10+、NVIDIA GPU。

# 安裝(於已安裝 Isaac Lab 的 Python 環境中)
python -m pip install -e source/pickup_place_direct_0203

# 訓練最終版專家策略
python scripts/rsl_rl/train_ppo_0510.py --task Template-Pickup-Place-Direct-0510-v0 --headless

# 播放並匯出關節軌跡
python scripts/rsl_rl/play_ppo_0510.py --task Template-Pickup-Place-Direct-0510-v0 --checkpoint <model.pt>

# 收集單一物體的 GR00T 資料並轉為 LeRobot v2
python scripts/rsl_rl/collect_groot_data_0510.py --checkpoint <model.pt> --object_id 39 \
    --task_description "Pick up the green plastic cup from the floor" --headless
python scripts/rsl_rl/convert_to_lerobot_v2.py --raw_dir groot_data_raw --out_dir groot_data_lerobot

JetRover USD 模型、15 種物體資產與訓練好的 checkpoint 因檔案大小未包含在本 repo, 路徑設定於 utils/jetrover.py 與 pickup_place_direct_0510_env_cfg.py。

技術棧

Isaac Sim / Isaac Lab · PhysX · RSL-RL (PPO, Distillation) · PyTorch · YOLOv8 · PointNet / ResNet · FastSAM · Contact-GraspNet · LeRobot v2 · NVIDIA GR00T

致謝

基於 Isaac Lab Extension Template 建立,並使用 RSL-RL、Ultralytics、 Contact-GraspNet、LeRobot 與 Isaac-GR00T。

About

Sim2Real pick-up for the JetRover arm in Isaac Lab: a PPO expert policy with task-space Delta IK, trained on 15 objects with material-based domain randomization, serving as a data engine that exports LeRobot/GR00T datasets for VLA training.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages