A*
f(n) = g(n) + h(n)
- Ô đã xét
- 0
- Đang chờ
- 1
- Chi phí đường
- —
- Số cạnh
- —
Chưa lấy ô nào ra khỏi hàng đợi.
LẬP LỘ TRÌNH DI CHUYỂN · ĐẠI HỌC
Từ A* và Dijkstra trên lưới đến RRT, RRT* và PRM trong không gian liên tục. Hãy tự đặt vật cản, chạy từng bước và xem mỗi thuật toán tạo đường đi ra sao.
Cùng bản đồ và ngân sách. Seed giúp tái lập từng thuật toán; RRT và RRT* có 10% mẫu hướng về đích. Độ dài tính theo cạnh ô, không phải chi phí 10/14 của chế độ lưới.
Nhấn hoặc kéo trên một bản đồ; bản đồ bên cạnh sẽ đổi theo. Dùng phím mũi tên để chọn ô, Enter để đặt. Mỗi lần sửa sẽ bắt đầu lại phép so sánh.
f(n) = g(n) + h(n)
Chưa lấy ô nào ra khỏi hàng đợi.
f(n) = g(n)
Chưa lấy ô nào ra khỏi hàng đợi.
Chưa lấy mẫu.
Chưa lấy mẫu.
Chưa lấy mẫu.
Thử đoán trước: A* có cần xét hết vùng quanh điểm đầu không?
Chọn một ô trên bản đồ bằng phím mũi tên để đọc chi phí.
Các ô có cùng mức ưu tiên được xử lý theo thứ tự đưa vào hàng đợi. Danh sách ở đây sắp thêm theo tọa độ để dễ đọc; đường tối ưu có thể không duy nhất.
ĐỌC KẾT QUẢ
Một bước ngang hoặc dọc có chi phí 10; một bước chéo có chi phí 14. Chi phí đường là tổng các bước, nên hai đường có số cạnh khác nhau vẫn có thể có cùng chi phí. Đây là đơn vị quy ước của lưới, chưa quy đổi ra mét hay năng lượng.
“Ô đã xét” là số ô được lấy ra khỏi hàng đợi để xử lý, kể cả ô đích. “Đang chờ” là số ô đã được tìm thấy nhưng chưa xử lý. Mỗi lần bấm “Tiến một bước”, mỗi thuật toán còn chạy sẽ lấy ra một ô.
g(n) là chi phí tốt nhất hiện biết từ S đến ô n; h(n) là ước lượng chi phí còn lại đến G. A* ưu tiên ô có tổng f nhỏ nhất, còn Dijkstra chỉ dùng g để xếp thứ tự.
Với 4 hướng, A* dùng khoảng cách Manhattan: h = 10(Δx + Δy). Với 8 hướng, A* dùng khoảng cách octile: h = 14 min(Δx, Δy) + 10|Δx − Δy|.
Ở đây, Δx và Δy là độ chênh lệch tuyệt đối về cột và hàng giữa ô đang xét với đích.
Hai ước lượng này không vượt chi phí ngắn nhất còn lại và nhất quán với chi phí cạnh đang dùng. A* và Dijkstra vì thế phải tìm được cùng chi phí tối ưu nếu có đường, dù có thể chọn những đường khác nhau.
Đường chéo chỉ được phép khi cả hai ô kề cạnh đều trống. Quy tắc này tránh đi xuyên qua góc vật cản.
Ghi lại bản đồ, cách di chuyển, chi phí và số ô đã xét. Hãy so sánh trên cùng cấu hình; tốc độ hoạt ảnh chỉ giúp theo dõi, không phải phép đo thời gian tính toán.
LẤY MẪU · NỐI CẠNH · KIỂM VA CHẠM
Mỗi lần thử chọn một điểm, tìm nút gần nhất rồi tiến về phía mẫu trong giới hạn bước mở rộng. Chỉ thêm đoạn nối nếu toàn bộ đoạn không chạm vật cản. Khi nối được tới G, đường được lần ngược qua các nút cha.
Demo tiếp tục lấy mẫu đến hết ngân sách để so sánh. RRT giữ cách nối cũ nên có thể tìm được một đường vòng khá dài.
Sau khi tạo điểm mới, thuật toán thử những nút lân cận làm cha để giảm tổng độ dài từ S. Nếu đi qua nút mới giúp một nhánh cũ ngắn hơn, nhánh ấy được nối lại; chi phí các nút con cũng được cập nhật. Cạnh vừa nối lại có màu tím.
Đường tốt nhất được cập nhật trong khi chạy. Tính tối ưu tiệm cận của RRT* không có nghĩa là một lần chạy với vài trăm mẫu đã tối ưu.
Mẫu nằm trong vùng trống được thêm vào mạng và nối với các nút trong bán kính đã chọn. Mỗi cạnh đều được kiểm va chạm. Khi hết số lần thử, demo dùng Dijkstra tìm đường ngắn nhất trên mạng đã tạo, gồm cả S và G.
Đường ngắn nhất trong mạng hữu hạn chưa chắc là đường ngắn nhất trong toàn vùng trống. PRM có thể tái dùng mạng khi bản đồ không đổi; để dễ so sánh, demo này dựng lại mạng mỗi khi sửa S, G hoặc vật cản.
Mỗi bước là một lần thử lấy mẫu; mẫu hoặc cạnh bị loại vẫn tính vào ngân sách. Số nút RRT/RRT* gồm S; số nút PRM gồm S và G. Độ dài là tổng khoảng cách Euclid của các đoạn nối, theo cạnh ô lưới. Lấy mẫu không bị giới hạn vào tâm ô hay 4/8 hướng.
RRT và RRT* dùng 10% mẫu đích, còn PRM lấy mẫu đều. Seed giữ nguyên cho từng thuật toán khi chạy lại. Với RRT*, bán kính lân cận là min(2η, 2√A √(ln(n+1)/(n+1))), trong đó η là bước mở rộng, A là diện tích bản đồ theo ô vuông và n là số nút hiện có. Bản minh họa dùng kết nối đoạn thẳng và kiểm va chạm trên cả đoạn.
“Chưa tìm được” nghĩa là chưa có đường trong ngân sách hiện tại, chưa đủ để kết luận không tồn tại đường. Thời gian hoạt ảnh không dùng làm chuẩn so sánh tốc độ tính toán.
Đọc thêm: LaValle · Sampling-Based Motion Planning và Karaman & Frazzoli · RRT* và tính tối ưu tiệm cận.