Files
recovery_core/PLAN.md
2026-08-03 22:32:40 +07:00

44 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Trạng thái `recovery_core`
Nội dung PLAN.md cũ đã được gỡ. Hai lý do:
1. **Đá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 15 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ưới `Test/`, là bẫy đọc nhầm.
2. **Tick sai.** Nó đánh `[x]` cho `RecoveryConfig::validate`, `RecoveryConfig::fromNodeHandle`,
`MockBehavior``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`](README.md) |
| Quyết định thiết kế và lý do | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) |
| Quy tắc bắt buộc khi viết plugin họ vận tốc | [`docs/SAFETY.md`](docs/SAFETY.md) |
| Cách thêm behavior mới | [`docs/PLUGIN_GUIDE.md`](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`.
- `RecoveryContext` chỉ chứa **cổng** (`PoseProvider`, `CollisionChecker`, `PlanProvider`), không
chứa con trỏ tới dữ liệu động.
- `RecoveryGoal` dùng `std::optional` + `trigger`; bỏ quy ước sentinel "0 = dùng default".
- `RecoveryRegistry` nạ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_recovery` bị 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ọ `kPath` chư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.
- **`ClearCostmapRecovery` chưa có test tự động.** Nó cần `Costmap2DROBOT` thật (TF + chuỗi layer),
không dựng được bằng fake của `nav_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.