Ebook Robotics · RL–UAV
Lecture 11 — Nondeterministic Filter (Belief phình / co)
Chương C** · bắt đầu: \(z \neq x\) — giữ vùng nghi ngờ, không chỉ một điểm
Chế độ Slide · phím ← → · F toàn màn · Esc về đọc · S mở slide
Chương C** · bắt đầu: \(z \neq x\) — giữ vùng nghi ngờ, không chỉ một điểm
Chương C · bắt đầu: \(z \neq x\) — giữ vùng nghi ngờ, không chỉ một điểm
| # | Câu hỏi | Trả lời ngắn |
|---|---|---|
| 1 | Tại sao cần? | Ch.A–B hay giả định biết \(x\). Máy thật chỉ cho đo nhiễu — phải giữ vùng nghi ngờ (belief). |
| 2 | So với cái khác? | Vs tin một điểm \(\hat{x}\): còn biểu diễn bất định. Vs Bayes (Lec 12): đây là tập hợp; sau là xác suất. |
| 3 | Giải quyết gì & thế nào? | Predict (theo \(u\)) phình tập; update (theo \(z\)) co tập (giao). |
| 4 | Kết quả ra sao? | Belief set → nền mọi filter; cảnh báo quyết định khi bất định lớn. |
| 5 | Nên dùng khi nào? | Đặt nền tư duy estimation; thiết kế obs RL không privileged. |
| 6 | Không nên khi nào? | Đừng chỉ predict mãi (bất định nổ); đừng quyết định liều khi vùng còn rất rộng. |
🖼️ Hình nhanh: blob belief phình (predict) rồi co (update)
bel(x_{t-1}) bel⁻(x_t) bel(x_t) ◯◯◯ ─u─► ◯◯◯◯◯◯ ─z─► ◯◯ (gọn) (phình ~) (co lại) nhiễu quá trình đo hữu ích🇻🇳 Chuyện thật (sân B): Hẻm phố cổ Hà Nội hay khe cao ốc HCM — GPS nhảy rồi mất như đèn đường tắt giữa đêm.
Mỗi bước chỉ còn odometry: đám mây bất định phình ra, clearance “nửa mét” trên planner trở thành ảo giác.
Khi tường / thị giác / đo hữu ích trở lại, vùng nghi ngờ mới co — không phải chốt một điểm tọa độ rồi quên.
Chốt: belief = vùng nghi ngờ; chỉ predict → phình không Bound; quyết định khi blob còn rộng là liều.../00C.
Hình gốc hoặc minh họa cho ebook — không cắt từ slide Princeton. Dùng Present: bật Slide · F toàn màn.
Bạn đi trong phòng tối. Mỗi bước chân, vị trí có thể lệch vài chục centimet.
Mỗi lần sờ tường: “à, khoảng khu vực này”. Bạn không chốt một điểm tọa độ,
mà giữ một vùng nghi ngờ, rồi thu hẹp dần khi có thêm bằng chứng.
Đó chính là tinh thần của mọi bộ lọc trạng thái (state filter).
Với UAV đô thị / đồi chè: GPS urban canyon nhiễu, gió đẩy lệch odometry —
nếu chỉ tin \(\hat{x}\) điểm, planner đa mục tiêu sẽ “tự tin sai”.
| Bước | Input | Hiệu ứng lên belief |
|---|---|---|
| Predict | \(bel(x_{t-1})\), lệnh \(u_t\) | \(bel^-(x_t)\) — vùng phình (~ nhiễu quá trình) |
| Update | \(z_t\) | \(bel(x_t)\) — vùng co (giao với tập nhất quán đo) |
u_t z_t
│ │
▼ ▼
bel_{t-1} ──► [PREDICT] ──► bel⁻_t ──► [UPDATE] ──► bel_t ──► …
phình (~) co (∩ đo)
Predict = hợp mọi chuyển tiếp khả dĩ dưới \(u\) + slack.
Update = giao với tập state giải thích được \(z\).
Nếu giao rỗng → đo mâu thuẫn model (outlier / map sai) — cần cơ chế xử lý.
predict: [====] + u±slack → [========]
update: [========] ∩ [..zzzz..] → [zzz]
"""
Vùng nghi ngờ [lo, hi].
Bước đi +1 với sai ±0.3 (predict), rồi đo x∈[2.6, 3.4] (update).
"""
lo = hi = 2.0
print("Ban đầu :", lo, hi)
u, slack = 1.0, 0.3
lo, hi = lo + u - slack, hi + u + slack # PREDICT: phình
print("Sau predict :", round(lo, 2), round(hi, 2))
z_lo, z_hi = 2.6, 3.4
lo, hi = max(lo, z_lo), min(hi, z_hi) # UPDATE: giao
print("Sau update :", round(lo, 2), round(hi, 2))
# Thử chỉ predict 5 lần — vùng nổ
lo2 = hi2 = 2.0
for _ in range(5):
lo2, hi2 = lo2 + u - slack, hi2 + u + slack
print("5× chỉ predict: độ rộng =", round(hi2 - lo2, 2), "(phình không Bound)")
🧪 Kỳ vọng demo: ban đầu
[2,2]→ sau predict khoảng[2.7, 3.3]→ sau update giao với đo còn đoạn hẹp; dòng cuối độ rộng = \(5\times 0.6 = 3.0\) nếu chỉ predict — minh họa “quên vị trí”.
| ✅ Nên | ❌ Không | ≈ Gần đúng |
|---|---|---|
| Tư duy mọi estimator = predict–update | Chỉ dùng \(\hat{x}\) điểm khi P/vùng rất lớn | Điểm + ngưỡng phương sai |
| Thiết kế obs RL có nhiễu / trễ | Train full-state, deploy \(z\) thô mà không nói | Domain rand noise trên \(x\) |
| An toàn theo kích thước belief | Chỉ predict (odometry) dài trong đô thị | Fuse GPS khi còn tin cậy |
Nghĩa với năng lượng / gió / độ phủ / GPS urban: gió và multipath làm blob phình; coverage plan phải tôn trọng bất định pose.
⚠️ Lỗi hay gặp: Coi \(\hat{x}\) điểm là đủ, quên phương sai / đa đỉnh → quyết định liều.
⚠️ Nhầm predict với update: “càng bay càng chắc” mà không cảm biến hiệu chỉnh — thực tế ngược nếu chỉ odometry.
⚠️ Giao rỗng mà ép lấy trung điểm — che giấu outlier.
⚠️ Trong sim RL: cho policy \(x\) GT rồi ngạc nhiên khi onboard lệch.
⚡ Nhớ một câu: Không chốt một điểm — giữ blob nghi ngờ: lệnh làm phình, đo tốt làm co.
🔗 Sang bài sau mang theo: Đổi tập hợp → phân phối xác suất; hai phương trình Bayes filter là xương sống mọi KF/PF.
★ Hình nhớ mãi:
◯◯ ─u─► ◯◯◯◯◯ ─z─► ◯◯