2.7 KiB
2.7 KiB
Trạng thái recovery_core
Nội dung PLAN.md cũ đã được gỡ. Hai lý do:
- Đánh số phase trùng nhưng khác nghĩa. Nó dùng "Phase 1/2/3" cho các mốc riêng của gói, trùng
số với Phase 1–5 của
Test/NAV_REFACTOR_PLAN.md— cùng một con số chỉ hai thứ khác hẳn nhau, trong hai file cùng nằm dướiTest/, là bẫy đọc nhầm. - Tick sai. Nó đánh
[x]choRecoveryConfig::validate,RecoveryConfig::fromNodeHandle,MockBehaviorvàinterface_contract_test.cpp— grep cả ba symbol ra 0 hit, vàtest/khi đó chỉ có đúng một file. Một checklist nói dối còn tệ hơn không có checklist.
Nguồn chuẩn hiện tại
| Cần gì | Đọc ở đâu |
|---|---|
| Contract, họ output, bất biến an toàn | README.md |
| Quyết định thiết kế và lý do | docs/ARCHITECTURE.md |
| Quy tắc bắt buộc khi viết plugin họ vận tốc | docs/SAFETY.md |
| Cách thêm behavior mới | docs/PLUGIN_GUIDE.md |
| Bối cảnh trong cuộc refactor navigation runtime | Test/NAV_REFACTOR_PLAN.md, PHASE 3 |
Đã xong
- Contract:
bool configure(name, ctx, nh)/bool start(goal, now)/update(now)/cancel();outputKind()khai họ output; toàn bộ state của base làprivate. RecoveryContextchỉ chứa cổng (PoseProvider,CollisionChecker,PlanProvider), không chứa con trỏ tới dữ liệu động.RecoveryGoaldùngstd::optional+trigger; bỏ quy ước sentinel "0 = dùng default".RecoveryRegistrynạp theo YAML qua Boost.DLL, giữ factory sống đúng vòng đời.adapters/:CostmapPoseProvider,CostmapCollisionChecker.- Bộ mặc định 4 plugin / 5 instance:
wait,conservative_reset,rotate,aggressive_reset,back_up.regen_path_recoverybị xoá, không thay thế. - 9 bộ test GTest đăng ký với ctest, chạy trên cây config riêng của gói.
Chưa xong
- Họ
kPathchưa có behavior nào. Contract đã sẵn sàng (PlanProvider+outputKind()trảkPath), nhưng một behavior sinh đường thoát thật cần thông tin từ global planner — nằm ngoài phạm vi gói này. ClearCostmapRecoverychưa có test tự động. Nó cầnCostmap2DROBOTthật (TF + chuỗi layer), không dựng được bằng fake củanav_test_harness. Hiện chỉ được kiểm bằng đọc code; test tích hợp thuộc Phase 5 (kịch bản chạy trên sim).- Chưa chạy trên robot thật. Bật từng behavior một, không bật cả bộ cùng lúc.