1.8 KiB
1.8 KiB
An Toàn — recovery_core
Cảnh báo an toàn khi dùng interface này. Đọc trước khi triển khai plugin họ vận tốc.
recovery_core KHÔNG đảm bảo
- Không collision-check tự động. Interface không kiểm tra va chạm khi sinh vận tốc
(backup/spin) hay khi tạo path. Việc tránh va chạm là trách nhiệm của plugin (dùng
costmap được cấp qua
initialize) hoặc của caller. - Không quản lý vòng lặp thời gian thực. Caller chịu trách nhiệm gọi
computeCommand(dt)đúng nhịp và publish command. - Không đảm bảo frame/đơn vị. Pose lấy từ costmap/tf phải đúng frame; đơn vị phải nhất quán (m, rad, s, m/s, rad/s).
- Default per-cycle fail an toàn. Behavior không override
computeCommand(dt)sẽ nhậnRecoveryResult::Failed()thay vì velocity mặc định.
Nguyên tắc cho plugin
- Guard
initialized_và costmap/tf null trước khi thao tác; fail an toàn ->RecoveryResult::Failed(). - Guard
dt <= 0,NaN,Inftrước khi tính velocity. - Với họ vận tốc: khi không chắc an toàn, trả stop command (Twist 0), không trả vận tốc mù.
- Kiểm tra NaN/Inf của pose/vận tốc trước khi xuất command.
- Tôn trọng giới hạn vận tốc/gia tốc của robot (đọc qua param).
BackUpRecoverycó paramrequire_costmapđể bắt buộc có local costmap trước khi xuất vận tốc lùi. Adapter production vẫn nên có safety gate/collision check riêng trước publish.
Trách nhiệm caller/adapter
- Đảm bảo ngữ cảnh cho phép recovery (vd: đã dừng planner, vùng xung quanh đủ an toàn).
- Áp timeout/giám sát ngoài để tránh recovery chạy vô hạn.