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.
Cập nhật 2026-06-20: đọc series này theo cuRoboV2
cuRobo hiện tại đã là nhánh V2/v0.8.x: tài liệu chính thức mô tả đây là một rewrite lớn, thêm B-spline trajectory optimization, GPU-native TSDF/ESDF mapping, topology-aware whole-body kinematics và MotionRetargeter cho humanoid. Vì vậy khi đọc series này, hãy hiểu nó như một deployment guide cho cuRoboV2, không phải copy lại API cũ của v0.7.x.
Điểm quan trọng cho Jetson AGX Orin 64GB là cuRobo không chỉ "chạy được" trên GPU. Nó dùng CUDA graph/kernel warmup, PyTorch tensors, collision kernels và đôi khi mapping pipeline cùng lúc. Nếu môi trường không được pin, lỗi sẽ xuất hiện rất muộn: planner chạy trên workstation nhưng fail trên Jetson; IK đúng nhưng world collision sai vì mesh/sphere khác; hoặc G1 whole-body retargeting mượt trong notebook nhưng nhảy joint khi stream.
Series này vì vậy có ba tầng kiểm soát:
| Tầng | Câu hỏi cần trả lời trước khi đi tiếp |
|---|---|
| Model | URDF, mesh, joint order, TCP và collision spheres có đúng không? |
| Solver | FK/IK/planning/retargeting có pass regression poses và latency p95/p99 không? |
| Runtime | ROS 2 bridge, watchdog, scene snapshot, rollback image và E-stop đã sẵn sàng chưa? |
Nếu bạn chỉ đọc một bài trước khi làm thật, hãy đọc bài 10 để biết các issue upstream và checklist deploy. Nếu bạn đang bắt đầu từ zero, đi tuần tự từ bài 2 đến bài 6 cho robot arm, rồi mới sang bài 8-9 cho G1.
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: xác định cuRobo đứng ở đâu trong stack robot.
- Cài cuRoboV2 trên Jetson AGX Orin 64GB: khóa JetPack/CUDA/PyTorch/uv.
- Build robot model từ URDF cho arm: mesh, spheres và self-collision.
- FK, IK và kiểm tra frame convention: bắt lỗi quaternion, TCP và joint order.
- Motion planning có obstacle và grasp: tune seed, grasp segments và fallback.
- ROS 2 bridge từ planner tới controller: action interface, retiming, watchdog.
- Scene mapping từ depth camera: cuboid trước, TSDF/ESDF sau.
- Unitree G1 arm-only planning: lock chân/waist và command gate.
- Unitree G1 whole-body retargeting và MPC: floating base, tool frames, SOMA/BVH.
- Deploy checklist, issue hiện tại, rollback và vận hành: pre-flight, canary và rollback.
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.