VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. Motion planning và grasp với cuRobo: obstacle, seed và trajectory
manipulationcurobomotion-planninggraspjetsontutorial

Motion planning và grasp với cuRobo: obstacle, seed và trajectory

Hướng dẫn chạy pose-to-pose planning, obstacle collision, warmup, grasp approach-lift và cách tune planner cho robot arm trên Jetson.

Nguyễn Anh Tuấn1 tháng 6, 20263 phút đọcCập nhật: 19 thg 6, 2026
Motion planning và grasp với cuRobo: obstacle, seed và trajectory

Motion planning trong cuRobo làm gì?

Theo tài liệu, cuRobo giải motion planning như một bài toán trajectory optimization: từ start joint state tới goal pose, tối ưu smoothness, joint limits và collision avoidance. Nhiều seed trajectory chạy song song trên GPU, sau đó chọn nghiệm collision-free tốt nhất. Đây là lý do cuRobo hợp với Jetson AGX Orin 64GB: GPU không chỉ để inference AI, mà còn để search nhiều nghiệm planner cùng lúc.

1. Warmup trước khi nhận request

Không để request đầu tiên từ robot thật chịu chi phí compile/warmup:

planner = MotionPlanner(planner_cfg)
planner.warmup()

Trong ROS 2 node, gọi warmup ở lifecycle on_configure() hoặc on_activate(), không gọi trong callback nhận goal.

2. Scene obstacle tối thiểu

Bắt đầu bằng cuboid thay vì mesh phức tạp:

world:
  cuboid:
    table:
      dims: [1.2, 0.8, 0.05]
      pose: [0.55, 0.0, -0.025, 1.0, 0.0, 0.0, 0.0]
    bin:
      dims: [0.25, 0.18, 0.12]
      pose: [0.45, 0.2, 0.06, 1.0, 0.0, 0.0, 0.0]

Pose obstacle dùng [x, y, z, qw, qx, qy, qz]. Đây là nơi lỗi quaternion lại xuất hiện.

3. Pose-to-pose planning

Luồng cơ bản:

start = JointState.from_position(start_q, joint_names=joint_names)
goal = Pose(
    position=goal_xyz,
    quaternion=goal_quat_wxyz,
)
result = planner.plan_pose(start, goal)

if result.success.item():
    traj = result.interpolated_plan
else:
    raise RuntimeError(result.status)

Không gửi traj thẳng vào robot nếu chưa time-scale theo giới hạn thật. Với Jetson, serialize trajectory ra ROS 2 JointTrajectory rồi để controller enforce velocity/acceleration.

4. Grasp planning: approach, grasp, lift

cuRobo hỗ trợ grasp planning kiểu ba đoạn: đi tới pre-grasp, tiến vào grasp pose với collision setting phù hợp cho gripper, rồi lift khỏi bề mặt. Với production, tách rõ ba trạng thái trong state machine:

  1. APPROACH: chưa đóng gripper, tránh obstacle.
  2. CLOSE: dừng hoặc chạy low-speed servo.
  3. LIFT: nâng vật, cập nhật collision model nếu vật đi theo gripper.

Issue mở hiện tại #663 báo plan_grasp có trường hợp cần gọi plan_pose hai lần để các bước sau thành công. Vì vậy trong deploy, đừng coi plan_grasp là atomic black box. Log từng segment và có fallback sang ba lần plan_pose thủ công nếu segment fail.

5. Tune seed và timeout

Tham số Khi tăng Khi giảm
số seed IK nhiều nghiệm goal hơn latency thấp hơn
số seed trajectory tránh local minima tiết kiệm GPU
collision margin an toàn hơn bớt false negative
timeout bài toán khó hơn realtime hơn

Với Jetson, hãy benchmark theo percentile, không chỉ trung bình. Planner 40 ms trung bình nhưng p99 600 ms là không ổn cho online control.

6. Log cần lưu

  • start joint state;
  • goal pose wxyz;
  • world obstacle snapshot;
  • planner status;
  • latency p50/p95/p99;
  • số segment thành công;
  • trajectory max velocity/acceleration sau retiming.

Kết luận

Motion planning chạy tốt khi scene đơn giản, frame đúng và warmup đầy đủ. Grasp planning cần audit kỹ vì issue hiện tại đang liên quan trực tiếp tới plan_grasp. Bài tiếp theo sẽ nối planner này vào ROS 2 và controller.

NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

Tutorial
cuRobo trên Jetson AGX Orin 64GB và Unitree G1: lộ trình 10 bài
curobojetsonunitree-g1
manipulation

cuRobo trên Jetson AGX Orin 64GB và Unitree G1: lộ trình 10 bài

Bài mở đầu series: cuRoboV2 dùng để làm gì, khi nào chạy trên Jetson AGX Orin 64GB, khi nào dùng workstation, và kiến trúc deploy cho robot arm lẫn Unitree G1.

16/5/20264 phút đọc
NT
Tutorial
ROS 2 bridge cho cuRobo trên Jetson: từ goal pose tới JointTrajectory
curoboros2jetson
manipulation

ROS 2 bridge cho cuRobo trên Jetson: từ goal pose tới JointTrajectory

Thiết kế node ROS 2 bọc cuRobo planner: topic/service/action, lifecycle warmup, joint state reorder, trajectory retiming và watchdog.

5/6/20262 phút đọc
NT
Tutorial
Cài cuRoboV2 trên Jetson AGX Orin 64GB: môi trường, CUDA và kiểm tra
curobojetsoncuda
manipulation

Cài cuRoboV2 trên Jetson AGX Orin 64GB: môi trường, CUDA và kiểm tra

Thiết lập môi trường cuRoboV2 trên Jetson AGX Orin 64GB theo hướng reproducible: JetPack, uv, Python 3.11, CUDA 12.x, PyTorch và smoke test.

20/5/20263 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam