Robot / TrajOpt_Implementation_Guide.md
Duc Do
Upload 254 files
6686473 verified
|
Raw
History Blame Contribute Delete
3.55 kB

TrajOpt Implementation Guide (Robot Franka Panda)

1. Mục tiêu

Tài liệu này chỉ đặc tả cách cài đặt TrajOpt cho bài toán của hệ thống:

  • Đầu vào:
    • Trạng thái khớp hiện tại q_start
    • Grasp pose T_grasp (đã được module khác xác định)
    • Target placement pose T_target
    • Robot model (URDF)
    • Collision meshes
    • Môi trường
  • Đầu ra:
    • Quỹ đạo khớp liên tục từ q_start -> grasp -> target.

TrajOpt không sinh grasp pose. TrajOpt không giải IK. TrajOpt chỉ tối ưu quỹ đạo.


2. Biến tối ưu

Mỗi waypoint:

q_t = [q1,...,q7]

Toàn bộ trajectory:

Q=[q1,q2,...,qT]

Nếu T=30 thì số biến là 210.

TrajOpt tối ưu đồng thời toàn bộ waypoint.


3. Khởi tạo quỹ đạo

Không sử dụng random, RRT hay PRM.

Khởi tạo bằng nội suy tuyến tính:

  • q_start -> q_grasp
  • q_grasp -> q_target

Quỹ đạo ban đầu được phép xuyên vật cản.


4. Hàm mục tiêu

Mục tiêu chính:

J = Σ ||q(t+1)-q(t)||²

Có thể bổ sung acceleration cost nếu cần quỹ đạo mượt hơn.


5. Hard Constraints

Joint limits

Mọi waypoint đều phải thỏa:

q_min ≤ q_t ≤ q_max

Giới hạn lấy từ URDF.

Grasp constraint

Waypoint grasp phải thỏa:

FK(q_k)=T_grasp

Đây là hard equality constraint.

Placement constraint

Waypoint cuối:

FK(q_T)=T_target

Đây cũng là hard equality constraint.


6. Collision World

TrajOpt không đọc trực tiếp PyBullet.

Cần xây dựng Collision World gồm:

  • Robot collision mesh
  • Object collision mesh
  • Table
  • Ground
  • Static obstacles

Mỗi object cần:

  • Mesh
  • World pose
  • Collision margin
  • AABB

Trước mỗi lần planning phải đồng bộ pose từ PyBullet sang Collision World.


7. Continuous Collision Checking

Không chỉ kiểm tra tại waypoint.

TrajOpt kiểm tra chuyển động giữa hai waypoint liên tiếp.

Đối với mỗi robot link:

  • xây dựng swept volume
  • tính signed distance
  • lấy contact normal
  • lấy closest points

Nếu signed distance < d_safe thì sinh gradient đẩy quỹ đạo ra xa vật cản.


8. Tuyến tính hóa

Khoảng cách va chạm được tuyến tính hóa quanh nghiệm hiện tại:

sd(q) ≈ sd(q0)+∇sd(q0)(q-q0)

Gradient được tính từ:

  • contact normal
  • robot Jacobian

Sau đó chuyển thành ràng buộc tuyến tính trong bài toán QP.


9. SQP

Mỗi iteration:

  1. Forward Kinematics
  2. Collision Query
  3. Jacobian
  4. Linearization
  5. Xây dựng Quadratic Program
  6. Giải QP
  7. Cập nhật trajectory
  8. Kiểm tra hội tụ

Thông thường 10–30 iteration.


10. Điều kiện hội tụ

Thuật toán dừng khi:

  • Không còn vi phạm khoảng cách an toàn.
  • Các hard equality constraints được thỏa mãn trong giới hạn chính xác số học của solver.
  • Chi phí thay đổi giữa hai iteration nhỏ hơn ngưỡng.
  • Trust region không còn cải thiện nghiệm.

Nếu không hội tụ trước số iteration tối đa thì planner trả về thất bại.


11. Lưu ý

  • TrajOpt không tìm grasp pose.
  • TrajOpt không giải IK.
  • IK phải được giải trước.
  • Collision World phải được cập nhật trước mỗi lần lập kế hoạch.
  • Khi attach object, collision model phải cập nhật để quỹ đạo sau grasp tính cả vật được gắp.