6 Tổng kết
2.3 Mã giả thủ tục trích xuất đường đi từ cây tìm kiếm G(V, E)
nếu một lời giải tồn tại. Câu hỏi được đặt ra cho các giải thuật lấy mẫu là tính toàn vẹn về mặt xác suất.
Đã có một số nghiên cứu về tính toàn vẹn của giải thuật RRT* được công bố [9] và [26]. Theo [26], lời giải cho chứng minh tính toàn vẹn có thể được tóm tắt như sau:
• Giả sử tồn tại lời giải π : [0, tπ] → Xf ree với khoản hở tối đa δclearance. Gọi v = min(δclearance, δgoal,⋉)vàm = 5vL với Llà độ dài của lời giảiπ. Sau đó, ta định nghĩa
m+ 1 điểm x0 = xinit, ..., xm = xgoal trên π, sao cho ||xi−xi+1|| ≤ v/5. Sau đó, ta định nghĩa Bv/5 ⊂ X là m+ 1 hình cầu với bán kính v/5 và có tâm tương ứng là xi. • Với khoảng hở δclearance ≥v, ta chứng minh được bổ đề: Nếu cây tìm kiếm chứa đỉnh
x′
i ∈ Bv/5(xi), và nếu một mẫu mới được lấy ra sao cho xrand ∈ Bv/5(xi+1), thì đoạn thẳng từxrand đến đỉnh gần nhất xnear nằm hoàn toàn trongXf ree. Bổ đề trên có thể được chứng minh bằng bất đẳng thức tam giác như sau :
||xnear−xi|| ≤ ||xnear−xrand||+||xrand−xi|| ≤ |||x′i−xrand||+||xrand−xi|| ≤2||xrand−xi+1||+ 2||xi+1−xi||+||x′i−xi|| ≤2v 5 + 2 v 5 + v 5 =v. (2.11) và ||xrand−xi|| ≤ ||xrand−xi+1||+||xi+1−xi|| ≤2v 5 < v (2.12)
Từ hai bất đẳng thức trên ta nhận thấy rằng xnear, xrand ∈ Bv(xi). Vậy đoạn thẳng
xnearxrand⊂ Bv(xi) và nằm trong Xf ree.
• Từ bổ đề trên, ta nhận thấy rằng, nếuBv/5(xi)chứa một đỉnh của RRT*, nếuxrand ∈ Bv/5(x+ 1), cây tìm kiếm sẽ đến Bv/5(x+ 1). Để giải thuật đến Xgoal từ xinit, ta cần lặp lại m lần nối xi đến xi+1 cho0≤i < m. Gọi xác suất một biến ngẫu nhiênxrand
tuân theo phân bố đều nhận giá trị trong Bv/5 là p . Ta có thể xem quy trình lặp là phép thử Bernoulli k lần với xác suất thành công là p. Gọi Xk là số lần lấy mẫu thành công trong k lần thử, theo như tác giả tại [26] đã chứng minh, ta có:
P r(Xk< m) = m−1 X i=0 k i pi(1−p)k−i ≤ m (m−1)!k me−pk, (2.13)
với k ≫m. Vế phải tiến về 0 theo hàm mũk. Vậy P r(Xk ≥m) = 1−P r(Xk < m)
lời giải tồn tại.
Tính tiệm cận về tối ưu của giải thuật RRT*
Vì ... Giải thuật RRT* sẽ dần tiệm cận đến lời giải tối ưu. Theo như tác giả tại [9], ta có
P({lim
n→∞YnRRT∗ =c∗}) = 1 (2.14) vớic∗là giá trị tối ưu thật sự, và YRRT∗
n là giá trị lời giải của RRT*. Ta thấy rằng giá trị xác suất để đạt được lời giải tối ưu tiến về 1 khi giải thuật được khai triển với số lượng lớn vòng lặp. Tuy nhiên, lời giải chứng minh cho nhận định trên tại [9] khá phức tạp và còn nhiều tranh cãi về tính đúng đắng, như nhóm tác giả tại [27] đã chỉ ra. Bạn đọc có thể tham khảo thêm về lời giải chứng minh tính tiệm cận về tối ưu của thuật toán RRT* tại [9] và [?].
Informed Rapidly-exploring Random Tree*
Ta nhận thấy rằng, giải thuật RRT* không chỉ cố gắng tiệm cận đến lời giải tối ưu của trạng thái mục tiêu, mà còn tìm lời giải tương tự đến tất cả các trạng thái trong không gian trạng thái. Đều này không nhất quán với bản chất của bài toán motion planning đã đề cập, khi ta chỉ muốn tìm lời giải từ trạng thái bắt đầu đến trạng thái kết thúc. Giải thuật Informed Rapidly-exploring Random Tree chính là cải tiến nhằm khắc phục vấn đề này. Tương tự như cách mà A* là cải tiến của Dijkstra, Informed RRT* tập trung lấy mẫu trong một vùng ellipsoid mà tại đó, lời giải đến trạng thái kết thúc có thể được cải thiện thay vì mở rộng cây tìm kiếm vào vùng không gian bất kì nào. Từ đó, thời gian tiệm cận lời giải tối ưu được giảm thiểu.
Mã giả
Mã giả cho giải thuật Informed RRT* được trình bày tại bảng 2.4. Giải thuật tương tự với RRT* với những chỉnh sửa tại các dòng màu đỏ. Tại dòng 21 và 22, khi một lời giải đến trạng thái mục tiêu được tìm thấy, nó được thêm vào tậpXsoln chứa các trại thái trong vùng lời giải. Sau đó, tại dòng 5 và 6, giá trị của lời giải tốt nhất được lấy ra làm bán kính cực cho vùng ellipsoid.
Thủ tục 2.5 mô tả cách lấy một trạng thái ngẫu nhiên trong vùng ellipsoid với tiêu điểm xstart, xgoal và bán kính cực là c. Thay vì xây dựng không gian trạng thái con với tất cả trạng thái phù hợp. Thủ tục lấy trạng thái ngẫu nhiên trong một hình cầu đơn
1: procedure RRT∗(xs, n, xg)
2: V ←us; E ← ∅;
3: Xsoln← ∅;
4: for i= 1, ..., n do
5: cmin ←minxsoln∈Xsoln{c(xsoln)};
6: xrand ←Sample(xs, xgoal, cbest);
7: xnearest ←N earest(G(V,E), xrand);
8: xnew ←Steer(vnearest, xrand);
9: if ObstacleF ree(xnearest, xrand)then
10: Xnear ←N ear(G, xnew, rRRT∗);
11: V ← V ∪ {xnew};
12: xmin ←xnearest; cming(xnearest) +c(xnearest, xnew);
13: for xnear ∈Xnear do ⊲ Connect new vertext to a minimun cost path
14: if CollisionF ree(xnew, xnear)∧g(xnear) +c(xnew, xnear)< cmin then
15: xmin ←xnear; cmin ←g(xnear) +c(xnew, xnear);
16: E ← E ∪ {(xmin, xnew)};
17: for xnear ∈Xnear do ⊲ Rewire the tree
18: if CollisionF ree(xnew, xnear)∧g(xnear) +c(xnew, xnear)< g(xnear)then
19: xparent ←P arent(xnear);
20: E ←(E \ {(xparent, xnear)} ∪ {(xnew, xnear)});
21: if InGoalRegion(xnew) then
22: Xsoln← Xsoln∪xnew
23: return G(V,E)