Mục tiêu bài cuối
Deploy cuRobo không chỉ là docker run. Bạn cần biết version nào đang chạy, issue upstream nào ảnh hưởng trực tiếp, cách rollback, và điều kiện nào thì planner được phép gửi command tới robot thật. Bài này gom checklist cho cả robot arm trên Jetson AGX Orin 64GB và Unitree G1 arm/whole-body.
Issue upstream hiện tại cần chú ý
Tại thời điểm viết bài 2026-06-19, trang GitHub issues của NVlabs/curobo đang có 2 issue mở:
| Issue | Loại | Tác động deploy |
|---|---|---|
#668 Per-call lock_joints override on a shared multi-arm MotionPlanner |
enhancement | Ảnh hưởng thiết kế G1/multi-arm nếu muốn lock chân, waist hoặc arm theo từng request. Workaround: tạo planner config riêng theo mode, không mutate shared planner. |
#663 plan_grasp fails because the goalset plan_pose ... needs to run twice |
bug | Ảnh hưởng grasp pipeline. Workaround: log từng segment, fallback sang approach/grasp/lift bằng các call plan_pose riêng. |
Hai issue này không chặn mọi deploy, nhưng chúng quyết định cách bạn thiết kế runtime. Đặc biệt, đừng gom mọi mode của G1 vào một planner shared nếu lock joint cần đổi theo request.
Deployment matrix phải khóa
deploy_matrix:
jetpack: "R36.x"
cuda: "12.x"
python: "3.11"
pytorch: "pinned aarch64 wheel"
curobo_commit: "git sha"
robot_config: "my_arm.yml sha256"
container_image: "registry/org/curobo-jetson:date-sha"
Nếu không log matrix này, bạn không thể debug "hôm qua plan được, hôm nay fail".
Pre-flight checklist cho robot arm
- FK/IK regression poses pass.
- Collision spheres đã visualize và không false-collide với table.
- Planner warmup xong trước khi nhận goal.
- Joint state age dưới ngưỡng.
- Scene age dưới ngưỡng.
- Trajectory đã clamp velocity/acceleration.
- Controller action cancel hoạt động.
- E-stop phần cứng đã test.
- Có mode
plan_onlykhông execute.
Pre-flight checklist cho Unitree G1
- Arm-only mode lock chân/waist rõ ràng.
- Base IMU/state được bridge đọc trước khi gửi arm target.
- Workspace tay giới hạn trước ngực khi test đầu tiên.
- Whole-body output không gửi trực tiếp xuống motor nếu chưa qua stabilizing controller.
- Retargeting offline đã replay trong sim.
- Virtual base 6 DOF được hiểu là optimization variable, không phải hardware command.
Canary rollout
plan_onlytrong container production.- Execute trong simulator cùng URDF/config.
- Hardware powered, motor disabled hoặc gravity compensation.
- Low-speed single joint motion.
- Small Cartesian box.
- Scene obstacle tĩnh.
- Scene depth dynamic.
- Grasp nhẹ hoặc G1 arm-only task nhỏ.
Mỗi bước phải có log latency p50/p95/p99 và failure status. Không tăng scope khi p99 chưa ổn.
Rollback
Rollback phải là đổi image tag, không phải SSH vào Jetson sửa package:
docker pull registry/org/curobo-jetson:previous-good
docker stop curobo_planner
docker run --rm --name curobo_planner registry/org/curobo-jetson:previous-good
Giữ ít nhất một previous-good image đã test với cùng robot config. Nếu config YAML thay đổi, rollback image mà không rollback config vẫn có thể fail.
Kết luận
cuRoboV2 là một stack mạnh cho motion generation GPU, nhưng deploy an toàn cần version matrix, ROS 2 bridge có watchdog, scene snapshot rõ ràng và hiểu issue upstream. Với robot arm, rủi ro chính là collision/trajectory. Với Unitree G1, rủi ro chính là balance và mode boundary giữa arm-only với whole-body.