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
- Trạng thái khớp hiện tại
- Đầu ra:
- Quỹ đạo khớp liên tục từ
q_start -> grasp -> target.
- Quỹ đạo khớp liên tục từ
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:
- Forward Kinematics
- Collision Query
- Jacobian
- Linearization
- Xây dựng Quadratic Program
- Giải QP
- Cập nhật trajectory
- 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.