# Action "phải dò rồi mới biết đích" — bảng mở rộng của `VDA5050SourceAdapter`. # # File riêng thay vì sửa `mission_adapters_params.yaml`: file đó là symlink sang cây config của # `pnkx_nav_core` (submodule). `robot::NodeHandle` gộp mọi file YAML trong thư mục config vào một # cây, nên khoá `vda5050_src` ở đây hợp nhất với khoá cùng tên bên kia. # # ── Bảng này chỉ giữ CẤU TRÚC ──────────────────────────────────────────────────────────────────── # # Fleet chỉ gửi `charge`; `DetectCharger` và `startCharging` là actionType NỘI BỘ do adapter sinh ra, # không bao giờ xuất hiện trong order JSON. Tên frame cụ thể đến từ `actionParameters` của chính # order, nên thêm một trạm sạc mới không phải sửa file này. # # Bốn từ khoá của một step, phải có ĐÚNG MỘT: # action: chặng chỉ-action; mang nguyên actionParameters của action gốc # move_to: chặng nav, frame cố định # move_to_param: chặng nav, frame lấy từ actionParameters[] của action gốc # move: chặng nav tương đối; dương = tiến, âm = lùi # Tuỳ chọn cho step navigation: profile (position | docking | go_straight | rotate), marker. # `marker` chỉ hợp lệ với `profile: docking`: nó chọn override trong # maker_sources.yaml/docking_marker_profiles. Không khai = dùng cặp docking mặc định. # Tolerance thuộc YAML riêng của local planner đang được profile chọn, không khai ở đây. vda5050_src: compound_actions: charge: steps: # 1. Dò: đứng yên lấy mẫu frame thô, lọc nhiễu, ghi ra `dock_target`. # Robot không phát cmd_vel trong EXECUTING_ACTIONS nên đây đúng là lúc để lọc. - {action: DetectCharger} # 2. Tiến vào đích vừa dò được bằng profile docking. Sai số do local planner đọc từ YAML # của chính plugin đó. - {move_to: dock_target, profile: docking, marker: charger} # 3. Thao tác thiết bị. Chặng 1 hoặc 2 hỏng thì `clear_queue_on_failure` xoá chặng này — # robot không bao giờ đóng relay khi chưa vào được vị trí. - {action: startCharging} PickUp: steps: - {action: DetectPallet} - {move_to: dock_target, profile: docking, marker: trolley} - {action: LiftFork} # Lùi ra khỏi khe kệ. Quãng đường tương đối được quy ra pose tuyệt đối tại `submit`, từ pose # LÚC ĐÓ — lúc adapter sinh chặng thì robot còn chưa tới nơi. - {move: -0.5, profile: go_straight} GoStraight: steps: - {move: 1.0, profile: go_straight} Rotate: steps: - {move: 0.0, profile: rotate}