47 lines
2.9 KiB
Python
47 lines
2.9 KiB
Python
"""Config differential drive (2 bánh vi sai). Chỉnh số liệu theo robot thực tế.
|
|
|
|
Cost mult lấy theo bộ tuned unicycle_highcost_5cm.mprim (backward=40, turninplace=20,
|
|
forwardandturn=2): lùi và quay tại chỗ đắt tới mức chỉ được chọn khi không còn đường
|
|
khác — an toàn cho AMR có cảm biến chính hướng về phía trước. Muốn robot thoải mái
|
|
lùi/xoay hơn thì hạ dần (vd 5/5/3) nhưng đó là quyết định vận hành có chủ đích.
|
|
"""
|
|
|
|
from mprim_config import RobotConfig, KinematicType
|
|
|
|
config = RobotConfig(
|
|
name="differential", # tên file output: differential.mprim
|
|
kinematic_type=KinematicType.DIFFERENTIAL, # 2 bánh vi sai -> nội suy unicycle
|
|
|
|
resolution_m=0.05, # [m] PHẢI khớp costmap resolution (costmap_global_params.yaml)
|
|
numberofangles=16, # 16 góc heading -> 1 bước góc = 22.5 độ
|
|
|
|
forward_short_m=0.10, # [m] bước tiến ngắn ~2 cell, để tinh chỉnh gần goal
|
|
forward_long_m=0.40, # [m] bước tiến dài ~8 cell — quãng đường 1 chu kỳ điều khiển
|
|
# ở tốc độ hành trình
|
|
backward_m=0.10, # [m] bước lùi thẳng
|
|
|
|
# Rẽ = cung tròn: (1,) nghĩa là chỉ có primitive rẽ 22.5 độ (giống bộ tham chiếu).
|
|
# Thêm 2 vào tuple nếu cần rẽ 45 độ — đổi lại branching factor tăng, planner chậm hơn.
|
|
turn_steps=(1,),
|
|
turn_radius_m=0.70, # [m] >= max_vel/max_yawrate = 0.4/0.6 ~ 0.67 để local planner
|
|
# bám cung không phải giảm tốc; >= 0.66 để quantize 5cm
|
|
# không làm méo cung
|
|
|
|
has_backward_prims=True, # cho phép lùi thẳng (cost 40 nên chỉ dùng khi kẹt)
|
|
has_backward_turn_prims=False, # lùi + rẽ tắt: hành động mù cảm biến, bật lại nếu thật cần
|
|
has_turn_in_place_prims=True, # cho phép quay tại chỗ (cost 20 nên hiếm khi được chọn)
|
|
|
|
# SỐ NGUYÊN (SBPL đọc %d)
|
|
forwardcostmult=1, # tiến thẳng — mốc chuẩn
|
|
backwardcostmult=40, # lùi 0.1m "đắt" bằng tiến 4m -> chỉ lùi khi không còn cách
|
|
forwardandturncostmult=2, # rẽ đắt gấp đôi đi thẳng -> ưu tiên đường ít cua
|
|
backwardandturncostmult=40, # (không dùng khi has_backward_turn_prims=False)
|
|
turninplacecostmult=20, # xoay 22.5 độ "đắt" bằng tiến ~4m -> tránh xoay giữa đường
|
|
|
|
pose_spacing_m=0.05, # [m] = resolution -> path SBPL trả ra có pose cách đều ~5cm
|
|
|
|
# giới hạn động học thật (hybrid_local_planner_params.yaml: robot_max_v_ac / robot_max_w_ac)
|
|
max_vel_mps=0.4, # [m/s] vận tốc dài tối đa
|
|
max_yawrate_radps=0.6, # [rad/s] vận tốc xoay tối đa
|
|
)
|