"""Config Ackermann (xe có bánh lái). Chỉnh số liệu theo robot thực tế.""" from mprim_config import RobotConfig, KinematicType config = RobotConfig( name="ackermann", # tên file output: ackermann.mprim kinematic_type=KinematicType.ACKERMANN, # xe bánh lái -> nội suy cung tròn unicycle, # có kiểm tra min_turning_radius resolution_m=0.05, # [m] PHẢI khớp costmap resolution numberofangles=16, # 16 góc heading -> 1 bước góc = 22.5 độ forward_short_m=0.20, # [m] bước tiến ngắn (xe dài nên bước ngắn cũng dài hơn AMR) forward_long_m=0.60, # [m] bước tiến dài backward_m=0.20, # [m] bước lùi thẳng min_turning_radius_m=0.45, # [m] bán kính quay tối thiểu VẬT LÝ, đo từ robot thật turn_steps=(1,), # chỉ rẽ 22.5 độ mỗi primitive turn_radius_m=0.70, # [m] cao hơn min_turning_radius làm dự phòng quantize; với # lưới 5cm cần >= ~0.66 để cung không bị méo (validate # sẽ cảnh báo nếu thiếu) has_backward_prims=True, # cho phép lùi thẳng has_backward_turn_prims=True, # xe bánh lái cần lùi + đánh lái để quay đầu has_turn_in_place_prims=False, # xe Ackermann KHÔNG quay tại chỗ được # SỐ NGUYÊN (SBPL đọc %d). Ackermann lùi tốn hơn nhiều (khó điều khiển, hạn chế tầm nhìn). forwardcostmult=1, # tiến thẳng — mốc chuẩn backwardcostmult=6, # lùi thẳng forwardandturncostmult=3, # tiến + đánh lái backwardandturncostmult=8, # lùi + đánh lái — đắt nhất, chỉ dành cho quay đầu turninplacecostmult=5, # không dùng khi has_turn_in_place_prims=False pose_spacing_m=0.05, # [m] khoảng cách pose trên path )