Ebook Robotics · RL–UAV
Lecture 23 — RL trong Robotics / UAV
Chương D** · đặt RL đúng chỗ trên stack (bạn đã vững thuật toán RL) · bài khóa toàn ebook
Chế độ Slide · phím ← → · F toàn màn · Esc về đọc · S mở slide
Chương D** · đặt RL đúng chỗ trên stack (bạn đã vững thuật toán RL) · bài khóa toàn ebook
Chương D · đặt RL đúng chỗ trên stack (bạn đã vững thuật toán RL) · bài khóa toàn ebook
| # | Câu hỏi | Trả lời ngắn |
|---|---|---|
| 1 | Tại sao cần? | Không viết tay nổi mọi map/gió/phi tuyến — cần học hành vi từ tương tác. |
| 2 | So với cái khác? | Vs LQR/PID: linh hoạt, cần data. Vs RRT/MPC: amortized realtime, yếu bảo đảm nếu thiếu shield. Vs supervised: không có nhãn action đúng. |
| 3 | Giải quyết gì & thế nào? | MDP trên \(z\) + action đúng tầng; tối ưu \(\mathbb{E}\sum r\); PPO/SAC + residual/shield. |
| 4 | Kết quả ra sao? | Policy triển khai; bảng so baseline cổ điển + generalization. |
| 5 | Nên dùng khi nào? | Task khó model hết; có sim; đã có baseline; obs trung thực; held-out. |
| 6 | Không nên khi nào? | Chưa ổn định tầng thấp; cheat GT state rồi claim sim-to-real; không fail-safe. |
🖼️ Hình nhanh — RL ngồi đâu trên stack:
```
cảm biến ──► z / ảnh
│
[Estimator] ──► x̂ (Lec 11–16)
│
┌─────┴─────┐
│ POLICY π │ ★ đây là chỗ RL
└─────┬─────┘
│ reference / setpoint
[Controller + shield] (Lec 3–5, 10)
│ u
[Dynamics f] (Lec 2)Mức A: waypoint Mức B: vel/attitude+thrust Mức C: gần motor
an toàn hơn ◄──────────────────────────────► rủi ro sim-to-real cao
```
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.
RL không thay thế vật lý — nó thay (một phần) khối “quyết định” khi luật viết tay quá phức tạp.
Hình dung nghiên cứu của bạn:
Cách cũ (từng map): mapᵢ ──NSGA-II──► pathᵢ* (giải lại mỗi lần)
Cách amortized (RL): phân phối map+gió ──train──► π(z) (chạy realtime)
Chỉ chuyển sang RL sau khi có: env động lực tối thiểu, controller bám, baseline A*/RRT*, metric năng lượng/phủ trung thực (00A Ví dụ 7). Nếu chưa có bốn thứ đó, RL chỉ thêm nhiễu vào câu chuyện.
🇻🇳 Chuyện thật (sân A + D + thời sự): RL không phải phép màu “một nút Train là xong cả đồi chè”.
- Đúng bài: học \(\pi\) trên phân phối thửa (dốc/gió khác nhau) để khỏi chạy lại NSGA-II từng map — amortized policy (00CChuyện 1).
- Sai nhịp: sau bão miền Trung mà bỏ VIO + replan + người giám sát để “PPO trước” là nhảy cóc (00CChuyện 3).
- Cùng tinh thần thời sự: logistics y tế / kiểm tra hạ tầng nhắc một điều lạnh — năng lượng và fail-safe là ràng buộc cứng, không phải hệ số phụ trong loss.
Chốt: RL ngồi đúng tầng + baseline + obs trung thực mới đáng đưa vào luận án.../00C.
| Robotics (đã học) | Trong MDP / paper RL |
|---|---|
| LQR \(Q,R\), \(P\), \(-Kx\) (Lec 5) | reward shaping; value tuyến tính; residual \(u=-Kx+\pi_\theta\) |
| A* \(h\) (Lec 7) | critic / potential-based shaping |
| Belief / \(z\neq x\) (Lec 11–13) | POMDP; obs = \(\hat{x}\) hoặc ảnh, không cheat \(x\) |
| Min-snap / MPC (Lec 9–10) | lớp thực thi + shield / replan |
| Camera / GSD (Lec 17) | obs coverage; reward phủ gắn footprint |
| Overfit ≠ domain gap (Lec 21) | held-out maps/gió; domain rand |
┌─ SIM ─────────────────────────────────────────────┐
│ f(x,u) + gió + trễ + nhiễu cảm biến │
│ obs = x̂ hoặc (ảnh/flow + goal) │
│ act = vel / attitude+thrust ← tránh PWM sớm │
│ r = tiến − λ‖a‖² − coll − smooth [− E] │
└──────────────────┬────────────────────────────────┘
▼
PPO / SAC
(+ residual LQR)
(+ MPC / geofence shield)
│
domain randomization
│
fine-tune (tùy)
│
fail-safe / RTL
| Mức | π xuất | Baseline so sánh | Rủi ro |
|---|---|---|---|
| A | waypoint / mode phủ | A*, RRT*, NSGA-II của bạn | thấp |
| B | velocity hoặc attitude+thrust | LQR/PID tracking | trung bình — khuyên dùng |
| C | gần lệnh motor | attitude controller tay | cao |
Path MOO của bạn ──thường──► hybrid: planner/π mức A
+ LQR bám (để đo E thật)
Khi học policy tổng quát ──► mức B trên phân phối map+gió
"""
Policy tuyến tính 1 tham số: a ~ N(θ * s, 0.5)
Task: đưa s về 0; reward = -s^2
Kỳ vọng: θ học thành số ÂM (kéo ngược dấu s).
Không phải thuật toán production — chỉ nối 'feedback học được' với Lec 3–5.
"""
import numpy as np
rng = np.random.default_rng(1)
theta = 0.0
lr, sigma = 0.05, 0.5
for ep in range(80):
s = 0.8
grads, rewards = [], []
for t in range(20):
mu = theta * s
a = mu + sigma * rng.normal()
# ∇_θ log π(a|s), π = N(μ,σ²), μ=θs
grads.append(((a - mu) / (sigma ** 2)) * s)
s = np.clip(s + 0.1 * a, -1.0, 1.0)
rewards.append(-(s ** 2))
G, returns = 0.0, []
for r in reversed(rewards):
G = r + 0.95 * G
returns.append(G)
returns = np.asarray(list(reversed(returns)))
returns = (returns - returns.mean()) / (returns.std() + 1e-8)
theta += lr * np.mean(np.asarray(grads) * returns)
print("θ ≈", round(theta, 3), " (kỳ vọng âm)")
print("Sanity mạnh hơn: trên task LQR tuyến tính, π học có gần K không? (Lec 5)")
🧪 Kỳ vọng demo: \(\theta < 0\) (thường khoảng −0.3…−1 tùy seed).
Nếu \(\theta>0\): policy đang đẩy state ra xa — bug dấu reward/grad.
| # | Quyết định | Lecture neo |
|---|---|---|
| 1 | Tầng action A/B/C | Lec 1 |
| 2 | Obs: GT sim hay onboard \(\hat{x}\)/ảnh | Lec 11–18 |
| 3 | Baseline: LQR + A*/RRT* + (MPC) cùng cost | Lec 5,7,8,10 |
| 4 | Reward: tiến + smooth + collision [+ năng lượng] | Lec 3–4, 00A |
| 5 | Held-out: map đô thị khác · dốc/gió khác | Lec 21 |
privileged x noisy z / VIO
classical LQR+A* LQR+A* + estimator
RL PPO(x) PPO(z) ★ cột claim
safe RL PPO+shield PPO+shield+fail-safe
Đừng chỉ báo cột trên-trái (privileged + classical yếu) rồi claim thắng.
Điền T0–T4 trong ../06_CauChuyen_va_Framework_PhatTrien.md.
Đối chiếu gap năng lượng/gió/pose: ../00A_MoDau_NghienCuuCuaToi_vs_KhoaHoc.md.
| ✅ Nên dùng RL khi | ❌ Không nên khi |
|---|---|
| Có phân phối môi trường (nhiều map/gió) cần amortized | Chưa có controller ổn định tầng thấp |
| Baseline cổ điển đã đo được và yếu ở edge-case | Cheat \(x\) sim rồi claim onboard |
| Có shield / fail-safe rõ | Làm yếu A*/LQR để “thắng dễ” |
| Metric held-out đã định | Chưa đo được năng lượng/phủ trung thực |
⚠️ Nói “policy điều khiển drone” mà không nêu tầng A/B/C.
⚠️ Train với \(x\) thật, deploy với \(z\) nhiễu — reality gap tự tạo.
⚠️ Reward chỉ “tới goal” → path giật, tốn pin, đụng góc.
⚠️ Bỏ qua cost gió/airspeed trong env rồi claim tối ưu năng lượng.
⚠️ Không có RTL/geofence trong phần limitation.
⚡ Nhớ một câu: RL là một lớp quyết định trên stack robotics — mạnh khi đặt đúng tầng, có baseline cổ điển và observation trung thực.
🔗 Sang tiếp: Capstone & ethics —../05_BroaderTopics_Capstone.md; sườn phát triển —../06_CauChuyen_va_Framework_PhatTrien.md.
Trước: Lec22 · Tiếp: Capstone ../05_BroaderTopics_Capstone.md