Chương B** · đường phải *bay được*, không chỉ *vẽ được* — cửa sổ receding horizon
1 / 11
← → · Space · F · Esc · S
Lecture 10 — Kinodynamic Planning & MPC
Chương B · đường phải bay được, không chỉ vẽ được — cửa sổ receding horizon
Khung 6 câu hỏi
#
Câu hỏi
Trả lời ngắn
1
Tại sao cần?
Path hình học đẹp vẫn có thể vượt \(a_{\max}\)/attitude — drone không bay nổi (Lec 9 làm mượt giúp nhưng chưa phải mọi trường hợp).
2
So với cái khác?
Vs decouple (RRT+min-snap): chậm hơn nhưng tôn trọng \(f\) từng cạnh. Vs RL: MPC giải online; RL amortize vào mạng.
3
Giải quyết gì & thế nào?
Kinodynamic RRT / traj opt có ràng buộc; MPC = opt chân trời ngắn + chỉ thực thi bước đầu + lặp.
4
Kết quả ra sao?
Quỹ đạo khả thi; baseline so RL; ý tưởng shield / receding horizon.
5
Nên dùng khi nào?
Bay nhanh, vật cản dày, cần ràng buộc cứng; so RL vs MPC trong paper.
6
Không nên khi nào?
Onboard quá yếu cho NLP nặng mỗi 10 ms mà không rút gọn; so sánh MPC cấu hình không thực tế.
🖼️ Hình nhanh: cửa sổ MPC trượt theo thời gian thời gian ──►
t₀ t₁ t₂
|████ horizon ██|···· giải opt, chỉ dùng bước đầu u₀
|████ horizon ██|···· dịch cửa sổ, giải lại từ x đo mới
|████ horizon ██|
★ = trạng thái hiện tại (feedback) ██ = kế hoạch dự định
🇻🇳 Chuyện thật (sân D · cũng B): Sau bão miền Trung: map cũ lệch, gió còn giật — plan cả chuyến trên giấy đẹp nhưng ba mươi giây sau đã sai như chỉ đường trước khi đường sập.
Góc nhà đô thị cũng thế: gió hẻm đổi hướng, bám traj dài là “tin lời hứa cũ”.
MPC nhìn lại \(x\) đo được, tối ưu cửa sổ ngắn, chỉ thực thi bước đầu rồi giải lại — replan có kỷ luật. Chốt: kinodynamic + receding horizon = đường bay được theo \(f\), và sửa khi gió/map đổi, không bám plan chết. ../00C.
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.
Cửa sổ tối ưu trượt theo thời gian.HiếuTC · gốc
0. Mục tiêu học
Phân biệt planning hình học và kinodynamic.
Nêu ba chiến lược chính + trade-off.
Giải thích MPC như re-plan vòng kín (receding horizon).
Chứng minh số: đường vẽ được ≠ đường bay được (cua 90°).
1. Trực giác
Xe tải không đi được đường thiết kế cho xe đạp.
Mọi “đường” đều ngầm chứa thời gian; khả thi hay không nằm ở đạo hàm
(vận tốc/gia tốc), không nằm ở hình vẽ trên bản đồ.
Ba chiến lược khi đường hình học không bay nổi:
Decouple — plan hình học trước, làm mượt + timing sau (RRT → min-snap, Lec 9).
Kinodynamic RRT — mọc cây trong state \((p,v,\ldots)\); mỗi cạnh = forward sim \(f(x,u)\).
Decoupled: [RRT hình học] → [smooth+time] → [tracking ctrl]
Kinodynamic: [RRT trong state-space; cạnh = ∫ f(x,u) dt]
Trajectory opt: min Σ c(x,u) s.t. dynamics + limits + obstacle
MPC: traj opt chân trời ngắn, lặp mỗi 10–50 ms
Chiến lược
✅ Khi nào
❌ Khi nào
Chi phí
Decouple + min-snap
Bay hiền, map thưa
Cua gắt / vật cản dày tốc độ cao
Thấp
Kinodynamic RRT
Cần feasibility từng cạnh
Thời gian chặt, không gian state lớn
Cao (sim mỗi cạnh)
Traj opt (một phát)
Có warm-start tốt
Phi lồi, kẹt local min
Trung–cao
MPC
Nhiễu, gió, map đổi
Onboard không kịp giải
Cao nhưng chân trời ngắn
2.2. Kinodynamic RRT (ý)
x = (p, v, …) ∈ state-space
mỗi cạnh: chọn u ∈ U_allowed ──► tích phân ẋ=f(x,u) ──► x_new
(không còn đoạn thẳng Euclidean trong workspace)
2.3. MPC = feedback planning
Mỗi chu kỳ điều khiển:
Đo / ước lượng \(x_t\) (sang Chương C: \(z\) nhiễu!).
Giải \(\min \sum_{k=0}^{H-1} c(x_k,u_k)\) trên horizon \(H\) (0.5–2 s).
Chỉ áp dụng \(u_0\); bỏ phần còn lại.
Lặp — cửa sổ trượt.
quá khứ hiện tại ★ tương lai (kế hoạch)
──────────────●─────────●═══════════════●········
│←── horizon H ──→│
chỉ gửi u₀ xuống plant
Vì sao thường robust hơn opt “một phát”: mỗi bước hấp thụ nhiễu gió / model error bằng cách replan từ state thật.
3. Demo — đường hình học ≠ đường bay được
"""
Cua vuông góc 90° với v=3 m/s trong 0.2 s.
So với a_max=5 m/s² → kết luận khả thi / cách vá.
"""
import numpy as np
v = 3.0 # m/s
t_turn = 0.2 # giây đổi hướng π/2
a_max = 5.0 # giới hạn gia tốc ngang giả định
a_need = v * (np.pi / 2) / t_turn
print(f"Gia tốc cần ≈ {a_need:.1f} m/s²")
print(f"Giới hạn = {a_max:.1f} m/s²")
if a_need > a_max:
v_ok = a_max * t_turn / (np.pi / 2)
R_ok = v * v / a_max
print("→ KHÔNG khả thi với tốc độ/thời gian này.")
print(f" Vá: chậm còn ≈ {v_ok:.2f} m/s, hoặc bán kính cua ≥ {R_ok:.2f} m")
🧪 Kỳ vọng demo: in a_need ≈ 23.6 m/s² > 5 → không khả thi; gợi ý chậm ≈ 0.64 m/s hoặc bán kính ≥ 1.80 m. Bài học: timing và \(a\) quyết định feasibility.
Hình minh họa trade-off:
v cao + cua hẹp: ●──┐ cần a lớn (❌)
└──●
v thấp hoặc R lớn: ●········● a = v²/R nhỏ (✅)
(cung rộng)
4. Gắn RL–UAV / đa mục tiêu
Policy RL điều khiển trực tiếp ≈ amortize planning vào mạng — so paper: RL vs MPC (chất lượng, latency, bền khi model sai / gió).
Action bound trong env phải khớp thrust-to-weight, \(\omega_{\max}\) thật — env cho action bất khả thi → khó sim-to-real.
Hybrid: MPC/shield tầng dưới, RL chọn reference / trọng số đa mục tiêu (energy vs coverage) tầng trên.
Gió đô thị: MPC horizon ngắn hấp thụ gust; cost trong MPC có thể phạt vùng gió mạnh (cùng cost map Lec 7).
Năng lượng: \(c\) trong MPC/traj opt = proxy pin; đừng chỉ tối thiểu độ dài đường.
5. Ưu / nhược
✅ Nên
❌ Không
≈ Gần đúng
Ràng buộc cứng feasibility
Đánh giá planner chỉ bằng độ dài path
Decouple + check \(a\) sau
Baseline MPC vs RL công bằng (latency thật)
Cho MPC horizon/time không onboard nổi
RL warm-start cho MPC
Cost có gió / năng lượng
Action unbound trong sim
Soft constraint + barrier
Nghĩa với năng lượng / gió / độ phủ: kinodynamic ép “bay nổi”; MPC cho phép cost đa mục tiêu trên horizon ngắn; phủ dài hạn thường vẫn ở tầng waypoint.
6. Lỗi thường gặp
⚠️ Lỗi hay gặp: Đánh giá planner chỉ bằng độ dài mà quên gia tốc / giới hạn motor.
⚠️ So RL với MPC nhưng cho MPC thời gian tính không thực tế.
⚠️ Nhầm “đã min-snap” với “đã kinodynamic đầy đủ” — min-snap vẫn dựa model flat/giả định.
⚠️ Horizon MPC quá ngắn → myopic (không thấy vật cản xa); quá dài → không kịp giải.
7. Checklist
Ba chiến lược kinodynamic — trade-off chính từng cách?
MPC khác trajectory optimization “chạy một phát” ở điểm nào?
Trong env RL của bạn, action bound lấy từ đâu — đã khớp giới hạn thật chưa?
Cost MPC/path đã có năng lượng hoặc gió chưa, hay chỉ độ dài?
⚡ Nhớ một câu: Đường đẹp trên map vẫn có thể bất khả thi — feasibility nằm ở \(f(x,u)\) và cửa sổ MPC trượt theo feedback.
🔗 Sang bài sau mang theo: Mọi planning/control từ Ch.A–B hay giả định biết \(x\). Chương C bắt đầu: máy thật chỉ cho \(z\) nhiễu — phải giữ belief.
★ Hình nhớ mãi (hết Chương B):
vẽ được ──?──► bay được ──(MPC)──► bay được *dưới nhiễu*
Chương B** · đường phải *bay được*, không chỉ *vẽ được* — cửa sổ receding horizon
Chế độ Slide · phím ←→ · F toàn màn · Esc về đọc · S mở slide
Chương B · đường phải bay được, không chỉ vẽ được — cửa sổ receding horizon
Khung 6 câu hỏi
#
Câu hỏi
Trả lời ngắn
1
Tại sao cần?
Path hình học đẹp vẫn có thể vượt \(a_{\max}\)/attitude — drone không bay nổi (Lec 9 làm mượt giúp nhưng chưa phải mọi trường hợp).
2
So với cái khác?
Vs decouple (RRT+min-snap): chậm hơn nhưng tôn trọng \(f\) từng cạnh. Vs RL: MPC giải online; RL amortize vào mạng.
3
Giải quyết gì & thế nào?
Kinodynamic RRT / traj opt có ràng buộc; MPC = opt chân trời ngắn + chỉ thực thi bước đầu + lặp.
4
Kết quả ra sao?
Quỹ đạo khả thi; baseline so RL; ý tưởng shield / receding horizon.
5
Nên dùng khi nào?
Bay nhanh, vật cản dày, cần ràng buộc cứng; so RL vs MPC trong paper.
6
Không nên khi nào?
Onboard quá yếu cho NLP nặng mỗi 10 ms mà không rút gọn; so sánh MPC cấu hình không thực tế.
🖼️ Hình nhanh: cửa sổ MPC trượt theo thời gian thời gian ──►
t₀ t₁ t₂
|████ horizon ██|···· giải opt, chỉ dùng bước đầu u₀
|████ horizon ██|···· dịch cửa sổ, giải lại từ x đo mới
|████ horizon ██|
★ = trạng thái hiện tại (feedback) ██ = kế hoạch dự định
🇻🇳 Chuyện thật (sân D · cũng B): Sau bão miền Trung: map cũ lệch, gió còn giật — plan cả chuyến trên giấy đẹp nhưng ba mươi giây sau đã sai như chỉ đường trước khi đường sập.
Góc nhà đô thị cũng thế: gió hẻm đổi hướng, bám traj dài là “tin lời hứa cũ”.
MPC nhìn lại \(x\) đo được, tối ưu cửa sổ ngắn, chỉ thực thi bước đầu rồi giải lại — replan có kỷ luật. Chốt: kinodynamic + receding horizon = đường bay được theo \(f\), và sửa khi gió/map đổi, không bám plan chết. ../00C.
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.
Cửa sổ tối ưu trượt theo thời gian.HiếuTC · gốc
0. Mục tiêu học
Phân biệt planning hình học và kinodynamic.
Nêu ba chiến lược chính + trade-off.
Giải thích MPC như re-plan vòng kín (receding horizon).
Chứng minh số: đường vẽ được ≠ đường bay được (cua 90°).
1. Trực giác
Xe tải không đi được đường thiết kế cho xe đạp.
Mọi “đường” đều ngầm chứa thời gian; khả thi hay không nằm ở đạo hàm
(vận tốc/gia tốc), không nằm ở hình vẽ trên bản đồ.
Ba chiến lược khi đường hình học không bay nổi:
Decouple — plan hình học trước, làm mượt + timing sau (RRT → min-snap, Lec 9).
Kinodynamic RRT — mọc cây trong state \((p,v,\ldots)\); mỗi cạnh = forward sim \(f(x,u)\).
Decoupled: [RRT hình học] → [smooth+time] → [tracking ctrl]
Kinodynamic: [RRT trong state-space; cạnh = ∫ f(x,u) dt]
Trajectory opt: min Σ c(x,u) s.t. dynamics + limits + obstacle
MPC: traj opt chân trời ngắn, lặp mỗi 10–50 ms
Chiến lược
✅ Khi nào
❌ Khi nào
Chi phí
Decouple + min-snap
Bay hiền, map thưa
Cua gắt / vật cản dày tốc độ cao
Thấp
Kinodynamic RRT
Cần feasibility từng cạnh
Thời gian chặt, không gian state lớn
Cao (sim mỗi cạnh)
Traj opt (một phát)
Có warm-start tốt
Phi lồi, kẹt local min
Trung–cao
MPC
Nhiễu, gió, map đổi
Onboard không kịp giải
Cao nhưng chân trời ngắn
2.2. Kinodynamic RRT (ý)
x = (p, v, …) ∈ state-space
mỗi cạnh: chọn u ∈ U_allowed ──► tích phân ẋ=f(x,u) ──► x_new
(không còn đoạn thẳng Euclidean trong workspace)
2.3. MPC = feedback planning
Mỗi chu kỳ điều khiển:
Đo / ước lượng \(x_t\) (sang Chương C: \(z\) nhiễu!).
Giải \(\min \sum_{k=0}^{H-1} c(x_k,u_k)\) trên horizon \(H\) (0.5–2 s).
Chỉ áp dụng \(u_0\); bỏ phần còn lại.
Lặp — cửa sổ trượt.
quá khứ hiện tại ★ tương lai (kế hoạch)
──────────────●─────────●═══════════════●········
│←── horizon H ──→│
chỉ gửi u₀ xuống plant
Vì sao thường robust hơn opt “một phát”: mỗi bước hấp thụ nhiễu gió / model error bằng cách replan từ state thật.
3. Demo — đường hình học ≠ đường bay được
"""
Cua vuông góc 90° với v=3 m/s trong 0.2 s.
So với a_max=5 m/s² → kết luận khả thi / cách vá.
"""
import numpy as np
v = 3.0 # m/s
t_turn = 0.2 # giây đổi hướng π/2
a_max = 5.0 # giới hạn gia tốc ngang giả định
a_need = v * (np.pi / 2) / t_turn
print(f"Gia tốc cần ≈ {a_need:.1f} m/s²")
print(f"Giới hạn = {a_max:.1f} m/s²")
if a_need > a_max:
v_ok = a_max * t_turn / (np.pi / 2)
R_ok = v * v / a_max
print("→ KHÔNG khả thi với tốc độ/thời gian này.")
print(f" Vá: chậm còn ≈ {v_ok:.2f} m/s, hoặc bán kính cua ≥ {R_ok:.2f} m")
🧪 Kỳ vọng demo: in a_need ≈ 23.6 m/s² > 5 → không khả thi; gợi ý chậm ≈ 0.64 m/s hoặc bán kính ≥ 1.80 m. Bài học: timing và \(a\) quyết định feasibility.
Hình minh họa trade-off:
v cao + cua hẹp: ●──┐ cần a lớn (❌)
└──●
v thấp hoặc R lớn: ●········● a = v²/R nhỏ (✅)
(cung rộng)
4. Gắn RL–UAV / đa mục tiêu
Policy RL điều khiển trực tiếp ≈ amortize planning vào mạng — so paper: RL vs MPC (chất lượng, latency, bền khi model sai / gió).
Action bound trong env phải khớp thrust-to-weight, \(\omega_{\max}\) thật — env cho action bất khả thi → khó sim-to-real.
Hybrid: MPC/shield tầng dưới, RL chọn reference / trọng số đa mục tiêu (energy vs coverage) tầng trên.
Gió đô thị: MPC horizon ngắn hấp thụ gust; cost trong MPC có thể phạt vùng gió mạnh (cùng cost map Lec 7).
Năng lượng: \(c\) trong MPC/traj opt = proxy pin; đừng chỉ tối thiểu độ dài đường.
5. Ưu / nhược
✅ Nên
❌ Không
≈ Gần đúng
Ràng buộc cứng feasibility
Đánh giá planner chỉ bằng độ dài path
Decouple + check \(a\) sau
Baseline MPC vs RL công bằng (latency thật)
Cho MPC horizon/time không onboard nổi
RL warm-start cho MPC
Cost có gió / năng lượng
Action unbound trong sim
Soft constraint + barrier
Nghĩa với năng lượng / gió / độ phủ: kinodynamic ép “bay nổi”; MPC cho phép cost đa mục tiêu trên horizon ngắn; phủ dài hạn thường vẫn ở tầng waypoint.
6. Lỗi thường gặp
⚠️ Lỗi hay gặp: Đánh giá planner chỉ bằng độ dài mà quên gia tốc / giới hạn motor.
⚠️ So RL với MPC nhưng cho MPC thời gian tính không thực tế.
⚠️ Nhầm “đã min-snap” với “đã kinodynamic đầy đủ” — min-snap vẫn dựa model flat/giả định.
⚠️ Horizon MPC quá ngắn → myopic (không thấy vật cản xa); quá dài → không kịp giải.
7. Checklist
Ba chiến lược kinodynamic — trade-off chính từng cách?
MPC khác trajectory optimization “chạy một phát” ở điểm nào?
Trong env RL của bạn, action bound lấy từ đâu — đã khớp giới hạn thật chưa?
Cost MPC/path đã có năng lượng hoặc gió chưa, hay chỉ độ dài?
⚡ Nhớ một câu: Đường đẹp trên map vẫn có thể bất khả thi — feasibility nằm ở \(f(x,u)\) và cửa sổ MPC trượt theo feedback.
🔗 Sang bài sau mang theo: Mọi planning/control từ Ch.A–B hay giả định biết \(x\). Chương C bắt đầu: máy thật chỉ cho \(z\) nhiễu — phải giữ belief.
★ Hình nhớ mãi (hết Chương B):
vẽ được ──?──► bay được ──(MPC)──► bay được *dưới nhiễu*