[{"content":"\n总览回放 / Overview replay\n📖 This is the concise version (~3 min). For the full engineering details (design decisions, algorithm / reward, diagnostics, reproduce commands), read the deep-dive →\nUniLab \u0026amp; Joint Release UniLab is a heterogeneous robot-RL training infrastructure: CPU-parallel physics simulation (MuJoCo / Motrix) and GPU policy learning are coupled through a unified runtime and shared memory — instead of pinning physics, rollout collection, and learning on a single GPU-resident simulation path. Tasks, rewards, and backend selection are expressed as Hydra owner YAMLs; training goes through a unified uv run train / uv run eval CLI covering PPO, SAC, TD3, APPO, and more.\nWe are jointly releasing this practice alongside our system paper UniLab: A Heterogeneous Architecture for Robot RL Beyond GPU-Dominant Paradigms (arXiv:2605.30313). The paper argues that efficient training is not about which processor runs physics, but whether simulation throughput, policy updates, and runtime synchronization form an efficient end-to-end loop — GPU simulation is an effective path, but not a necessary one. On representative robot-control tasks, UniLab improves end-to-end training efficiency by 3–10× under the same hardware, reduces dependence on the NVIDIA CUDA stack, and natively supports AMD ROCm, Intel XPU, and Apple macOS.\nOn AMD platforms, ROCm is first-class: make sync-rocm sets up the environment; policy learning runs on CUDA / MPS / ROCm / XPU accelerators while physics stays on CPU-multithreaded simulation. This OpenArm grasp experiment is a rocPAI-Forge Physical AI practice built on UniLab atop Instinct MI300X / MI210 + ROCm.\nCode: github.com/unilabsim/UniLab Paper: arXiv:2605.30313 Docs: UniLab-doc Overview On UniLab we trained a PPO grasp policy for a single OpenArm: pick a 3 cm cube off the table, lift it to an in-air goal, and hold it.\nFinal deterministic eval: ever-success 100%, final-success 87.9%, drop rate 0%. But the interesting part is three moments along the way.\nThree interesting moments 1. A gripper that actually closes is hard. A binary snap-close gripper is easy mode; switching to continuous control, the policy kept getting stuck in a \u0026ldquo;grab but never lift\u0026rdquo; local optimum. Staged shaping (open-above → descend → close → lift) plus one trick — terminate_on_success=false (don\u0026rsquo;t end on success, keep paying it to hold) — finally taught it the full motion.\n2. It learned to cradle, not clamp. 🌟 At eval the policy almost never closes its fingers (closure ≈ 0), yet lifts the cube 100% of the time — it cradles the cube between two fingertips. We assumed a bug; then it clicked: for this high-friction, small cube, a fingertip cradle leans on geometry + friction and is more robust than precise clamping. The harder we forced clamping, the worse the primary objective got. RL\u0026rsquo;s most fascinating trait: it doesn\u0026rsquo;t solve the problem you posed — it solves the easier, better one it discovered.\n3. One wild curve, saved by one hyperparameter. 🌟 Success plateaued around iter ~600, but action std climbed to 39. Why: after tanh saturation, inflating the exploration noise barely changes the executed action, so PPO found a \u0026ldquo;free entropy lunch\u0026rdquo; — inflate std, collect entropy bonus, reward doesn\u0026rsquo;t drop. Harmless to control, but it makes curves ugly and hides that the policy converged long ago. The fix: lower entropy_coef from 0.01 to 0.003 (nothing else changed):\nMetric baseline 0.01 lowent 0.003 ever success 98.8% 100.0% final success 86.3% 87.9% final reward 2580 2800 final action std 39.08 1.35 Not a \u0026ldquo;trade success for clean curves\u0026rdquo; deal — a net win. And the change touched no Python: just a new owner-variant YAML overriding a single field — UniLab\u0026rsquo;s \u0026ldquo;config-first, fix-at-owner-layer\u0026rdquo; principle (traceable, comparable, revertible).\nThree takeaways Config first: express ideas as config, not code — cheap, traceable experiments. Validate near the risk: \u0026ldquo;success didn\u0026rsquo;t drop\u0026rdquo; isn\u0026rsquo;t all-clear — watch every curve. Let evidence speak: a counter-intuitive result is often evidence — understand before you judge. Training scale: 4096 parallel envs × 24 steps/iter × 1500 iter ≈ 147.5M sim steps, ~1h49m per run (shared GPU, ~23k steps/s). To reproduce and see the full reward/curve analysis → deep-dive. See also: UniLab PR #640.\n📖 Want more? Full engineering details in the deep-dive.\n","permalink":"https://rocpai-forge.github.io/en/posts/openarm-rl-grasp/","summary":"\u003cp\u003e\u003cvideo src=\"/media/openarm-rl-grasp/play_overview_web.mp4\" poster=\"/media/openarm-rl-grasp/play_overview.jpg\" autoplay loop muted playsinline style=\"width:100%;border-radius:.6rem;\"\u003e\u003c/video\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;color:#888;font-size:.8rem;\"\u003e总览回放 / Overview replay\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e📖 This is the \u003cstrong\u003econcise version\u003c/strong\u003e (~3 min). For the full engineering details (design decisions, algorithm / reward, diagnostics, reproduce commands), read the \u003ca href=\"https://github.com/rocPAI-Forge/tech-blog-pub/blob/main/PhysicalAI/openarm-rl-grasp/README-details.md\"\u003e\u003cstrong\u003edeep-dive →\u003c/strong\u003e\u003c/a\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"unilab--joint-release\"\u003eUniLab \u0026amp; Joint Release\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/unilabsim/UniLab\"\u003eUniLab\u003c/a\u003e is a \u003cstrong\u003eheterogeneous robot-RL training\ninfrastructure\u003c/strong\u003e: \u003cstrong\u003eCPU-parallel physics simulation\u003c/strong\u003e (MuJoCo / Motrix) and \u003cstrong\u003eGPU policy\nlearning\u003c/strong\u003e are coupled through a unified runtime and shared memory — instead of pinning\nphysics, rollout collection, and learning on a single GPU-resident simulation path. Tasks,\nrewards, and backend selection are expressed as Hydra owner YAMLs; training goes through a\nunified \u003ccode\u003euv run train\u003c/code\u003e / \u003ccode\u003euv run eval\u003c/code\u003e CLI covering PPO, SAC, TD3, APPO, and more.\u003c/p\u003e","title":"When a Robot Arm Invents Its Own Grip: An RL Practice with OpenArm"},{"content":"rocPAI-Forge is dedicated to forging Physical AI on AMD ROCm. We organize our work as a closed simulation ↔ real-world loop, with every stage running on the ROCm acceleration stack.\nSolution Architecture flowchart TB subgraph REAL[\"Real World\"] RR[\"Real robots / arms / mobile platforms\"] SEN[\"Sensor data capture\"] end subgraph SIM[\"Simulation\"] ENG[\"Sim enginesMuJoCo / Genesis, etc.\"] TWIN[\"Digital twins / scenes\"] end subgraph LEARN[\"Learning\"] RL[\"Reinforcement Learninglocomotion / manipulation\"] WM[\"World Models\"] VLA[\"VLA modelsVision-Language-Action\"] end ASSET[\"3D assets \u0026 scene reconstructionmeshes / environments / twins\"] SEN -- \"Real2Sim: reconstruct dynamics/scenes\" --\u003e ASSET ASSET --\u003e TWIN TWIN --\u003e ENG ENG --\u003e RL ENG --\u003e WM ENG --\u003e VLA RL --\u003e POLICY[\"Policies / models\"] WM --\u003e POLICY VLA --\u003e POLICY ENG -. \"Sim2Sim: cross-simulator validation/transfer\" .-\u003e ENG POLICY -- \"Sim2Real: deploy\" --\u003e INF[\"Real-robot inferencelow-latency ROCm deploy\"] INF --\u003e RR RR --\u003e SEN ROCM[\"AMD ROCm acceleration (train / sim / inference)\"] ROCM --- SIM ROCM --- LEARN ROCM --- INF Focus Areas Area What We Explore Sim2Real Closing the gap between simulation and real robots — domain randomization, calibration, and deployment Sim2Sim Cross-simulator validation and transfer (e.g. MuJoCo ↔ Genesis, etc.) for robust policies Real2Sim Reconstructing scenes and dynamics from real data to improve simulation fidelity 3D Assets \u0026amp; Scene Reconstruction Meshes, environments, and digital twins for robotics and RL Reinforcement Learning Locomotion, manipulation, and task-specific RL on ROCm-accelerated stacks World Models Predictive models of environment dynamics for planning and control VLA Models Vision–Language–Action models for generalist robot policies Real Robot Inference Low-latency deployment on manipulators and mobile platforms with ROCm Principles Open by default — code, configs, and learnings shared with the community ROCm-first — optimize and validate on AMD hardware and software stack End-to-end — from data and sim to train, eval, and real-world inference Evidence over hype — reproducible benchmarks, clear contracts, and honest trade-offs ","permalink":"https://rocpai-forge.github.io/en/overview/","summary":"\u003cp\u003e\u003cstrong\u003erocPAI-Forge\u003c/strong\u003e is dedicated to forging \u003cstrong\u003ePhysical AI\u003c/strong\u003e on \u003cstrong\u003eAMD ROCm\u003c/strong\u003e. We organize our work as a closed \u003cstrong\u003esimulation ↔ real-world\u003c/strong\u003e loop, with every stage running on the ROCm acceleration stack.\u003c/p\u003e\n\u003ch2 id=\"solution-architecture\"\u003eSolution Architecture\u003c/h2\u003e\n\u003cdiv class=\"mermaid-wrap\" style=\"width:100%;overflow-x:auto;margin:1rem 0;\"\u003e\n\u003cpre class=\"mermaid\" style=\"background:transparent;display:flex;justify-content:center;min-width:min-content;\"\u003e\nflowchart TB\n    subgraph REAL[\"Real World\"]\n        RR[\"Real robots / arms / mobile platforms\"]\n        SEN[\"Sensor data capture\"]\n    end\n\n    subgraph SIM[\"Simulation\"]\n        ENG[\"Sim engines\u003cbr/\u003eMuJoCo / Genesis, etc.\"]\n        TWIN[\"Digital twins / scenes\"]\n    end\n\n    subgraph LEARN[\"Learning\"]\n        RL[\"Reinforcement Learning\u003cbr/\u003elocomotion / manipulation\"]\n        WM[\"World Models\"]\n        VLA[\"VLA models\u003cbr/\u003eVision-Language-Action\"]\n    end\n\n    ASSET[\"3D assets \u0026 scene reconstruction\u003cbr/\u003emeshes / environments / twins\"]\n\n    SEN -- \"Real2Sim: reconstruct dynamics/scenes\" --\u003e ASSET\n    ASSET --\u003e TWIN\n    TWIN --\u003e ENG\n\n    ENG --\u003e RL\n    ENG --\u003e WM\n    ENG --\u003e VLA\n    RL --\u003e POLICY[\"Policies / models\"]\n    WM --\u003e POLICY\n    VLA --\u003e POLICY\n\n    ENG -. \"Sim2Sim: cross-simulator validation/transfer\" .-\u003e ENG\n\n    POLICY -- \"Sim2Real: deploy\" --\u003e INF[\"Real-robot inference\u003cbr/\u003elow-latency ROCm deploy\"]\n    INF --\u003e RR\n    RR --\u003e SEN\n\n    ROCM[\"AMD ROCm acceleration (train / sim / inference)\"]\n    ROCM --- SIM\n    ROCM --- LEARN\n    ROCM --- INF\n\u003c/pre\u003e\n\u003c/div\u003e\n\n\u003ch2 id=\"focus-areas\"\u003eFocus Areas\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eArea\u003c/th\u003e\n          \u003cth\u003eWhat We Explore\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eSim2Real\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eClosing the gap between simulation and real robots — domain randomization, calibration, and deployment\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eSim2Sim\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eCross-simulator validation and transfer (e.g. MuJoCo ↔ Genesis, etc.) for robust policies\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eReal2Sim\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eReconstructing scenes and dynamics from real data to improve simulation fidelity\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003e3D Assets \u0026amp; Scene Reconstruction\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eMeshes, environments, and digital twins for robotics and RL\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eReinforcement Learning\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eLocomotion, manipulation, and task-specific RL on ROCm-accelerated stacks\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eWorld Models\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003ePredictive models of environment dynamics for planning and control\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eVLA Models\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eVision–Language–Action models for generalist robot policies\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eReal Robot Inference\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eLow-latency deployment on manipulators and mobile platforms with ROCm\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"principles\"\u003ePrinciples\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOpen by default\u003c/strong\u003e — code, configs, and learnings shared with the community\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eROCm-first\u003c/strong\u003e — optimize and validate on AMD hardware and software stack\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnd-to-end\u003c/strong\u003e — from data and sim to train, eval, and real-world inference\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEvidence over hype\u003c/strong\u003e — reproducible benchmarks, clear contracts, and honest trade-offs\u003c/li\u003e\n\u003c/ul\u003e","title":"Overview"},{"content":" 🚧 Under construction — stay tuned.\nThe macro roadmap will be published here once finalized.\n","permalink":"https://rocpai-forge.github.io/en/roadmap/","summary":"\u003cblockquote\u003e\n\u003cp\u003e🚧 Under construction — stay tuned.\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003eThe macro roadmap will be published here once finalized.\u003c/p\u003e","title":"Roadmap"},{"content":" 📖 This is the concise version (~3 min). For the full engineering details (design decisions, algorithm / reward, diagnostics, reproduce commands), read the deep-dive →\nOverview VLA (Vision-Language-Action) models are data-hungry, and real-robot collection is slow and expensive. So we flip it: on an AMD Instinct MI300X + ROCm box, we turn OpenArm\u0026rsquo;s pick-and-place into an in-sim expert trajectory data engine with openarm_mp_labs — given an object and a grasp pose, auto-solve a smooth, physically feasible, sub-mm-accurate demonstration trajectory that\u0026rsquo;s reproducible at scale.\nTwo key results:\nWith Cartesian waypoints + mink IK, a grasp splits into approach→descend→close→lift→transport→place→retreat→home, with 0.4–0.9 mm IK error and 112–120 mm simulated lifts for cube/ginger. The grasp pose can be calibrated top-down or a 6-DOF grasp from GraspGenX (run on AMD ROCm, generated for the OpenArm gripper) — many objects × many grasps = diverse demonstrations for a VLA. cube pick-and-place replay: starting from a simple cube\nEnvironment Hardware: AMD Instinct MI300X Platform: ROCm 7.2 — measured torch 2.7.1+rocm7.2, hip 7.2.26015 Main project: openarm_mp_labs (trajectory gen + MuJoCo replay) Dependencies: openarm_control (IK), openarm_mujoco (model), GraspGenX (6-DOF grasps), Scan2Sim (real scans → sim assets) Trajectory gen + MuJoCo is CPU; the GPU/ROCm value is in GraspGenX grasp synthesis and downstream VLA training.\nWhat we did Trajectory gen is the data engine: each phase lerps between poses, solves mink IK per frame, and appends a convergence step to minimize error; targets are the \u0026ldquo;fingertip midpoint + calibrated TCP offset\u0026rdquo; to fit OpenArm\u0026rsquo;s curved fingertips. From cube to real object: swap in a Scan2Sim-converted ginger and GraspGenX\u0026rsquo;s 50 ranked 6-DOF grasps (confidence 0.97→0.77); full mode uses the diagonal orientation. Making it stable: settle-then-read coordinates, a calibrated grip angle, kinematic attach + closed-loop re-IK to suppress position-control drift. AMD ROCm ecosystem: enabled by 3 GraspGenX PRs of mine — #1 adds ROCm support (inference on AMD), #3 adds the OpenArm gripper (grasps for OpenArm), #4 a mesh-visualization demo. Key commands (full flow in the project repo):\nuv run openarm-mp-demo --generate-only # trajectory only (IK error) uv run openarm-mp-demo --simulate-only # physics check (lift test) MUJOCO_GL=egl uv run openarm-mp-demo --object ginger \\ --grasp-mode full --record output/ginger_full.mp4 # GraspGenX 6-DOF + record ginger 6-DOF pick-and-place replay: upgrading to a real scanned object\nResults \u0026amp; takeaways Scene Grasp source Simulated lift cube calibrated top-down 112.0 mm ginger GraspGenX topdown 120.4 mm ginger GraspGenX full (6-DOF, conf 0.97) 112.4 mm Three takeaways:\nTrajectory generation is underrated: given good grasp poses, deterministic IK + physics validation reliably yields high-quality expert trajectories far cheaper than real robots. Diversity has two knobs: GraspGenX (grippers) × Scan2Sim (objects) broaden the data. AMD ROCm carries Physical AI: from GraspGenX inference to MuJoCo data generation, the chain runs on MI300X + ROCm. References / Reproduce it Main project: openarm_mp_labs Grasp generation: GraspGenX (PRs #1 / #3 / #4) Asset conversion: Scan2Sim The projects above are all you need to reproduce this \u0026ldquo;generate VLA expert trajectories on AMD ROCm\u0026rdquo; practice hands-on.\n📖 Want more? Full engineering details in the deep-dive.\n","permalink":"https://rocpai-forge.github.io/en/posts/openarm-traj-gen/","summary":"\u003cblockquote\u003e\n\u003cp\u003e📖 This is the \u003cstrong\u003econcise version\u003c/strong\u003e (~3 min). For the full engineering details (design decisions, algorithm / reward, diagnostics, reproduce commands), read the \u003ca href=\"https://github.com/rocPAI-Forge/tech-blog-pub/blob/main/PhysicalAI/openarm-traj-gen-for-vla/README-details.md\"\u003e\u003cstrong\u003edeep-dive →\u003c/strong\u003e\u003c/a\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"overview\"\u003eOverview\u003c/h2\u003e\n\u003cp\u003eVLA (Vision-Language-Action) models are data-hungry, and real-robot collection is slow\nand expensive. So we flip it: on an \u003cstrong\u003eAMD Instinct MI300X + ROCm\u003c/strong\u003e box, we turn OpenArm\u0026rsquo;s\npick-and-place into an in-sim \u003cstrong\u003eexpert trajectory data engine\u003c/strong\u003e with\n\u003ca href=\"https://github.com/alexhegit/openarm_mp_labs\"\u003e\u003ccode\u003eopenarm_mp_labs\u003c/code\u003e\u003c/a\u003e — given an object and a\ngrasp pose, auto-solve a smooth, physically feasible, sub-mm-accurate demonstration\ntrajectory that\u0026rsquo;s reproducible at scale.\u003c/p\u003e","title":"Feeding the VLA: Generating Expert Grasp Trajectories for OpenArm on AMD ROCm"}]