Vì sao cần một series riêng cho cuRobo?
cuRobo là thư viện CUDA-accelerated motion generation của NVIDIA, viết trên PyTorch, CUDA và Warp. Điểm đáng chú ý của bản cuRoboV2 là nó không chỉ giải bài toán arm motion planning cổ điển, mà còn mở rộng sang high-DoF robot: collision checking GPU, trajectory optimization, ESDF/TSDF mapping, grasp planning và whole-body motion generation. Tài liệu chính thức ghi rõ cuRoboV2 là một rewrite lớn, public API đã đổi so với nhánh v0.7.x; nếu bạn có code cũ, phải pin v0.7.8.
Series này lấy mục tiêu rất cụ thể: một kỹ sư robotics có Jetson AGX Orin 64GB muốn chạy motion generation cho robot arm, sau đó mở rộng sang Unitree G1 cho tay và whole body. Không đi theo kiểu "hello world" thuần notebook; mỗi bài đều hướng tới pipeline có thể deploy: build model, test solver, nối ROS 2, ràng buộc safety, và audit các issue hiện tại trước khi đưa lên robot thật.
Kiến trúc tổng thể
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
Với arm cố định, cuRobo thường đứng ở tầng planner: nhận start joint state, goal pose, world obstacles, rồi trả về joint trajectory. Với G1, cần tách rõ hai chế độ. Chế độ "tay" giữ chân/waist ổn định và chỉ điều khiển arm joints. Chế độ "whole body" dùng floating base, tool frames cho pelvis, feet, elbows, wrists và chạy IK/MPC hoặc retargeting theo nhiều mục tiêu pose.
Jetson AGX Orin 64GB có đủ không?
Jetson AGX Orin 64GB đủ mạnh cho nhiều use case online nếu scope hợp lý: single-arm planning, reactive IK, collision checking với scene vừa phải, hoặc G1 upper-body control ở tần số planner thấp. Điểm mạnh là memory 64GB giúp giữ PyTorch, CUDA kernels, perception node và ROS 2 graph cùng lúc. Điểm yếu là thermal/power budget và CUDA/PyTorch compatibility: phải khóa JetPack, CUDA, PyTorch, cuRobo commit và container image thành một matrix reproducible.
Trong thực tế, nên dùng workstation để tune config, fit collision spheres, benchmark nhiều seed, rồi deploy sang Jetson bằng container đã đóng băng version. Jetson là target runtime, không phải nơi bạn thử mọi nhánh dependency mỗi ngày.
10 bài trong series
- Tổng quan kiến trúc và phiên bản.
- Cài cuRoboV2 trên Jetson AGX Orin 64GB.
- Build robot model từ URDF cho arm.
- FK, IK và kiểm tra frame convention.
- Motion planning có obstacle và grasp.
- ROS 2 bridge từ planner tới controller.
- Scene mapping từ depth camera.
- Unitree G1 arm-only planning.
- Unitree G1 whole-body retargeting và MPC.
- Deploy checklist, issue hiện tại, rollback và vận hành.
Baseline phần cứng
| Hạng mục | Khuyến nghị |
|---|---|
| Compute | Jetson AGX Orin 64GB, NVMe SSD, active cooling |
| OS | Ubuntu/JetPack tương ứng CUDA 12.x |
| Robot arm | URDF sạch, mesh tách theo link, joint limits đúng |
| Humanoid | Unitree G1 29-DOF URDF/config, kênh low-level riêng |
| Sensor | RGB-D hoặc depth camera có timestamp ổn định |
| Safety | E-stop phần cứng, watchdog phần mềm, velocity clamp |
Tài liệu nguồn nên đọc trước
- 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
Kết luận
Nếu chỉ cần arm planner, cuRobo có thể thay một phần MoveIt pipeline khi cần latency thấp và nhiều seed song song trên GPU. Nếu muốn Unitree G1 whole body, cuRobo nên được xem là solver/retargeter trong một stack lớn hơn, không phải low-level balance controller duy nhất. Bài tiếp theo sẽ đi vào cài đặt Jetson theo cách ít rủi ro nhất.