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

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


Khung 6 câu hỏi

# 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 minh họa (seminar-ready)

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.

Ba mức cắm RL trên stack.
Ba mức cắm RL trên stack.HiếuTC · gốc
Amortize policy trên phân phối thửa/gió.
Amortize policy trên phân phối thửa/gió.Generated for ebook · seminar OK

0. Mục tiêu học

  1. Nối toàn khóa (LQR, A*, belief, vision) sang ngôn ngữ MDP.
  2. Chọn được tầng action A/B/C cho task path/coverage đa mục tiêu.
  3. Viết pipeline paper-ready: baseline · obs · reward · held-out · safety.
  4. Biết khi chưa nên đụng RL (còn thiếu env/controller/metric).

1. Trực giác

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 (00C Chuyệ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 (00C Chuyệ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.


2. Cốt lõi — cầu nối toàn khóa

2.1. Bảng “đã học gì → dùng gì trong RL”

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

2.2. Pipeline khuyến nghị (vẽ lại cho NCS)

  ┌─ 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

2.3. Ba mức cắm — quyết định một lần, ghi vào T0

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ó

3. Demo (ý REINFORCE — feedback học được)

"""
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.


4. Gắn nghiên cứu path đa mục tiêu của bạn

4.1. Năm quyết định paper-ready (điền vào T0)

# 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

4.2. Ma trận thí nghiệm tối thiểu

                 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.

4.3. Framework

Đ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.


5. Ưu / nhược

✅ 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

6. Lỗi thường gặp

⚠️ 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.


7. Checklist

  1. MDP đủ ô: \(S\) hoặc \(Z\), \(A\) (tầng nào), \(R\), điều kiện kết thúc, safety?
  2. Ba baseline nào sẽ vào bảng so sánh — và cùng cost chưa?
  3. Obs train = obs deploy?
  4. Held-out gồm map nào, gió nào, độ dốc nào?
  5. Fail-safe ghi trong paper chưa?

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