Why cuRobo needs its own deployment series
cuRobo is NVIDIA's CUDA-accelerated robot motion generation library, built on PyTorch, CUDA, and Warp. The current cuRoboV2 release is more than a classic arm planner: it includes GPU kinematics, collision checking, trajectory optimization, geometric planning, depth-fused mapping, grasp planning, and whole-body motion generation. The important operational detail is that cuRoboV2 is a major rewrite. If your stack still depends on the v0.7 API, pin v0.7.8 instead of mixing old examples with the new API.
This series targets a concrete deployment path: run cuRobo on a Jetson AGX Orin 64GB for a robot arm, then extend the same mental model to Unitree G1 arm-only and whole-body workflows. The emphasis is deployability: model building, solver checks, ROS 2 integration, safety gates, issue review, and rollback.
Runtime architecture
Depth / RGB-D / world model
|
v
Scene representation: cuboids, meshes, ESDF/TSDF
|
v
cuRobo: FK, IK, self-collision, world collision, trajectory optimization
|
+--> Robot arm joint targets / trajectory
|
+--> Unitree G1 arm targets / whole-body retargeting targets
|
v
Safety gate: joint limits, velocity, torque, E-stop, watchdog
|
v
ros2_control / vendor SDK / low-level controller
For a fixed arm, cuRobo normally acts as the planner: it receives a start joint state, a goal pose, and world obstacles, then returns a joint trajectory. For Unitree G1, split the problem into two modes. Arm-only mode keeps the legs and waist governed by a separate stabilizing controller. Whole-body mode uses a floating base, tool frames for pelvis, feet, elbows, and wrists, then solves multi-target IK/MPC or motion retargeting.
Is Jetson AGX Orin 64GB enough?
Yes, for scoped online workloads: single-arm planning, reactive IK, collision checking over moderate scenes, and G1 upper-body planning at lower planner rates. The 64GB memory budget is useful because PyTorch, CUDA kernels, perception nodes, and ROS 2 processes can coexist. The risk is not raw memory; it is version compatibility, thermals, and reproducibility.
Use a workstation for heavy tuning, sphere fitting, broad seed sweeps, and benchmark exploration. Use Jetson as the target runtime with a pinned container image, pinned CUDA/PyTorch/cuRobo versions, and a known JetPack base.
The 10 guides
- Architecture and version boundaries.
- Installing cuRoboV2 on Jetson AGX Orin 64GB.
- Building a robot model from URDF.
- FK, IK, and frame convention checks.
- Motion planning with obstacles and grasping.
- ROS 2 bridge from planner to controller.
- Scene mapping from depth cameras.
- Unitree G1 arm-only planning.
- Unitree G1 whole-body retargeting and MPC.
- Deployment checklist, current issues, rollback, and operations.
Baseline hardware
| Area | Recommendation |
|---|---|
| Compute | Jetson AGX Orin 64GB, NVMe SSD, active cooling |
| OS | JetPack/Ubuntu matching CUDA 12.x |
| Robot arm | Clean URDF, per-link meshes, correct joint limits |
| Humanoid | Unitree G1 29-DOF URDF/config and separate low-level control |
| Sensor | RGB-D or depth camera with stable timestamps |
| Safety | Hardware E-stop, software watchdog, velocity clamps |
Primary references
- cuRobo docs: https://nvlabs.github.io/curobo/latest/index.html
- cuRobo GitHub: https://github.com/NVlabs/curobo
- Installation: https://nvlabs.github.io/curobo/latest/getting-started/installation.html
- Build Robot Model: https://nvlabs.github.io/curobo/latest/getting-started/build_robot_model.html
- Humanoid Retargeting: https://nvlabs.github.io/curobo/latest/getting-started/humanoid_retargeting.html
Conclusion
For arm planning, cuRobo can replace parts of a MoveIt-style stack when low latency and many parallel GPU seeds matter. For Unitree G1 whole-body work, treat cuRobo as a solver and retargeting component inside a larger stack, not as the only balance controller. The next article locks down the Jetson installation.