Những ph-ơng pháp tổ hợp phải xây dựng một cấu trúc dữ liệu hữu hạn để mã hoá chính xác vấn đề lập lộ trình. Những giải thuật phân ly ô h-ớng tới việc chia cắt Cfree thành một tập hợp hữu hạn những vùng gọi là những ô.
Sự phân ly ô cần phải thỏa mãn ba thuộc tính :
1.Việc xây dựng một đ-ờng đi từ một điểm bên trong một ô phải dễ dàng. Ví dụ, nếu mỗi ô lồi, thì bất kỳ cặp điểm nào trong một ô đều có thể nối đ-ợc bởi một đoạn thẳng.
2. Sự cung cấp thông tin cho những ô liền kề phải dễ dàng để xây dựng roadmap.
3. Cho tr-ớc một qI và qG, sự phân ly ô cần phải xác định đ-ợc những ô nào chứa chúng.
Nếu một sự phân ly ô thỏa mãn những thuộc tính này, thì vấn đề lập lộ trình chuyển động đ-ợc biến đổi thành vấn đề tìm kiếm đồ thị. Tuy nhiên, trong sự thiết đặt hiện thời, toàn bộ đồ thị, G, thông th-ờng đ-ợc biết tr-ớc. Điều này không giả thiết riêng cho những vấn đề lập lộ trình.
3.3.2.1. Định nghĩa sự phân ly dọc:
Phần này chúng ta giới thiệu một giải thuật mà xây dựng một sự phân ly ô dọc. Cfree đ-ợc phân chia vào trong một tập hợp hữu hạn của những 2 -cell và 1-cell. Mỗi 2 - cell là một hình thang có những cạnh dọc hoặc là một hìn h tam giác (là một hình thang suy biến). Với lý do này, ph-ơng pháp này còn đ-ợc gọi sự phân ly hình thang.
Sự phân ly đ-ợc định nghĩa nh- sau: Cho P biểu thị tập hợp của đỉnh định nghĩa Cobs. Tại mỗi p P, dùng những tia thẳng h-ớng h-ớng lên hoặc xuống xuyên qua Cfree, cho đến khi va phải Cobs thì dừng lại.
60
Hình 3.7 : Bốn tr-ờng hợp tổng quát của tia phân ly: 1) Có thể theo hai h-ớng xuống xuôi hoặc h-ớng lên, 2) Chỉ h-ớng lên, 3) Chỉ xuôi xuống, và 4) Không thể mở rộng.
1. Khi phân ly sẽ có bốn tr-ờng hợp, nh- trong Hình 3.7, phụ thuộc vào là nó có thể để mở rộng theo hai ph-ơng h-ớng hay không. Nếu Cfree đ-ợc phân chia theo những tia này, thì kết quả là một sự phân ly dọc. Ví dụ với Cobs trong Hình 3.7 a sử dụng sự phân ly dọc Cfree ta đ-ợc hình Hình 3.7 b.
Hình 3.8 : Sử dụng ph-ơng pháp phân ly ô dọc để xây dựng một roadmap, đ-ợc tìm kiếm để sinh ra một giải pháp cho một truy vấn.
Chú ý rằng chỉ những hình thang và những hình tam giác thu đ-ợc gọi là những 2 - cell trong Cfree. Mỗi 1-cell là một đoạn dọc đáp ứng nh- một cạnh giữa hai 2 - cell. Khi phân ly chúng phải bảo đảm rằng topology của Cfree đ-ợc biểu diễn chính xác.
Ta đã biết rằng Cfree đã đ-ợc định nghĩa là một tập hợp mở. Mỗi 2 - cell thật sự cũng đ-ợc định nghĩa là một tập hợp mở trong R2; nh- vậy, nó là phần trong của một hình thang hoặc hình tam giác và1- cell là những điểm trên các đoạn thẳng.
3.3.2.2 Định nghĩa roadmap trong ph-ơng pháp
61
xây dựng từ sự phân ly dọc.
Cho mỗi ô Ci, gọi qi là một đỉnh sao cho qi Ci khi đó qi đ-ợc gọi là điểm mẫu. Những điểm mẫu có thể đ-ợc lựa chọn theo nhiều cách, ví dụ nh- những trọng tâm trong các ô, nh-ng sự lựa chọn đặc biệt không phải là quá quan trọng, có thể tồn tại nhiều cách lựa chọn điểm mẫu khác.
Hình 3.9 : Roadmap bắt nguồn từ sự phân ly ô dọc.
Cho G(V,E) là một đồ thị tôpô định nghĩa nh- sau: Với mỗi ô, Ci, định nghĩa một đỉnh qi V. Với mỗi 2- cell, định nghĩa một cạnh từ điểm mẫu đã lựa chọn của nó đến điểm mẫu đã lựa chọn của mỗi 1- cell nằm dọc theo ranh giới của nó. Mỗi cạnh là một đoạn thẳng nối giữa các điểm lựa chọn của các ô. Đồ thị kết quả là một roadmap (Hình 3.9). Điều kiện dễ tiếp cận đ-ợc thỏa mãn bởi vì mỗi điểm mẫu có thể đạt đ-ợc bởi một đ-ờng đi nhờ vào tính lồi của mỗi ô. Điều kiện kết nối cũng đ-ợc thỏa mãn vì G nhận đ-ợc từ sự phân ly ô, mà khi phân ly vẫn giữ quan hệ thuộc Cfree.
Mỗi lần roadmap xây dựng xong, các thông tin về ô không cần đ-ợc l-u giữ nữa. Đối với việc trả lời cho những truy vấn lập lộ trình chính là roadmap đã xây dựng.
3.3.2.3. Tìm lời giải cho một truy vấn
Một lần roadmap thu đ-ợc, nó có thể trả lời rõ ràng cho một truy vấn của vấn đề lập lộ trình chuyển động từ qI đến qG. Cho C0 và Ck biểu thị những ô chứa đựng
62
qI và qG t-ơng ứng. Trong đồ thị G, tìm kiếm một đ-ờng đi có thể nối từ điểm mẫu của C0 tới điểm mẫu của Ck. Nếu không có đ-ờng đi nh- vậy nào tồn tại, thì giải thuật tuyên bố không tồn tại giải pháp. Nếu tồn tại một đ-ờng đi thì cho C1, C2, . . ., Ck-1 lần l-ợt đi qua tất cả những điểm mẫu của các 1 - cell và 2- cell từ C0 đến Ck.
Một đ-ờng đi giải pháp có thể đ-ợc hình thành một cách đơn giản bằng cách “Nối những điểm”, q0, q1, q2, . . ., qk-1, qk biểu thị những điểm mẫu dọc theo đ-ờng đi bên trong G. Đ-ờng đi giải pháp, : [ 0, 1 ] Cfree, đ-ợc hình thành bởi việc đặt
(0) = qI, (1) = qG, và việc đến thăm mỗi điểm trong dãy các điểm từ q0 đến qk đi theo một đ-ờng đi ngắn nhất. Ví dụ, Giải pháp trong Hình 3.10.
Trong việc lựa chọn những điểm mẫu, điều đó quan trọng để bảo đảm rằng mỗi đoạn đ-ờng đi từ điểm mẫu của một ô đến điểm mẫu của những ô láng giềng của nó không có va chạm xảy ra.
Hình 3.10 : Ví dụ một đ-ờng đi giải pháp
3.3.2.4. Đánh giá giải thuật: Hiệu quả tính toán sự phân ly sẽ đ-ợc xem xét. Thực chất trong vấn đề này các b-ớc đều đơn giản và thực hiện bởi ph-ơng pháp brute - force (bắt ép thô bạo) . Nếu Cobs có n đỉnh, thì cách tiếp cận này cần ít nhất thời gian là O(n2) vì phải kiểm tra sự giao nhau giữa mỗi tia dọc và mỗi đoạn. Nếu tổ chức cẩn thận các b-ớc tính toán thì kết quả chạy thời gian chỉ còn là O(nlgn).
3.3.2.5. Nguyên lý quét mặt phẳng:
63
học trên máy tính, đây cũng là cơ sở của nhiều giải thuật lập lộ trình tổ hợp và nhiều giải thuật chung khác. Nhiều vấn đề hình học tính toán bởi máy tính có thể đ-ợc xem xét nh- sự phát triển của những cấu trúc dữ liệu và giải thuật mà khái quát hóa phân loại vấn đề cho nhiều chiều. Nói cách khác, những giải thuật cẩn thận “ sắp xếp ” các thông tin hình học.
Từ “Quét” được sử dụng khi trình bày những giả i thuật này vì có thể hình dung đó là một đ-ờng (hoặc mặt phẳng) quét ngang qua không gian, chỉ dừng khi đạt đến trạng thái thay đổi nào đó khi tìm thấy thông tin.
Trên đây mới là sự miêu tả trực quan, còn việc quét ch-a đ-ợc biểu diễn rõ ràng bằng giải thuật. Để xây dựng sự phân ly dọc, hình dạng một đ-ờng dọc là đ-ờng quét từ x = - tới x = , giả sử (x, y) là một điểm trong C = R2. Dữ liệu đầu vào là tập hợp P của đỉnh Cobs. Bởi vậy chúng ta chỉ quan tâm đến những vấn đề xuất hiện ở những điểm này. Sắp xếp những điểm trong P theo thứ tự toạ độ x tăng dần. Giả thiết thông th-ờng không có hai điểm nào có cùng tọa độ x. Những điểm trong P bây giờ sẽ đ-ợc thăm theo thứ tự đã sắp xếp. Mỗi lần thăm một điểm sẽ đ-ợc coi là một sự kiện. Tr-ớc, sau, và giữa mỗi sự kiện, một danh sách L chứa một vài cạnh Cobs sẽ đ-ợc xác nhận. Danh sách này phải đ-ợc duy trì trong suốt thời gian theo thứ tự những cạnh đến khi nào va phải đ-ờng quét dọc. Danh sách đ-ợc sắp xếp theo thứ tự tăng dần.
64
Hình 3.12: Tình trạng của L đ-ợc chỉ ra sau mỗi 14 sự kiện xuất hiện.
Những b-ớc thực hiện giải thuật Hình 3.11 và 3.12 thể hiện sự trình diễn giải thuật. Đầu tiên, L trống rỗng, sau đó với mỗi sự k iện sẽ đ-a vào danh sách những cạnh biểu diễn của Cfree có liên quan đến sự kiện. Mỗi thành phần liên quan của Cfree sinh ra mộtphần tử đơn trong cấu trúc dữ liệu. Sau vài b-ớc lặp ta xây dựng đ-ợc L chính xác. Mỗi sự kiện sẽ xuất hiện là một trong số bốn tr-ờng hợp trong Hình 3.7.
Việc duy trì L trong một cây tìm nhị phân cân đối, có thể đ-ợc xác định trong thời gian O(lg n), tốt hơn rất nhiều so với thời gian O(n) của tr-ờng hợp bắt buộc phải kiểm tra mọi đoạn. Việc phụ thuộc vào bốn tr-ờng hợp xuất hiện từ Hình 3.7, dẫn tới nh-ng cập nhật khác nhau của L đ-ợc thực hiện.
Nếu tr-ờng hợp xuất hiện đầu tiên, thì hai cạnh khác nhau đ-ợc chèn vào, và thể hiện đó trên p là hai nửa đoạn. Hai tr-ờng hợp tiếp theo trong Hình 3.7 thì đơn giản hơn; chỉ một thể hiện đơn đ-ợc thực hiện.Tr-ờng hợp cuối cùng, không xuất hiện việc phân ly.
Một lần thực hiện thao tác phân ly bề mặt của Cfree thì L đ-ợc cập nhật. Khi tia quét qua p, luôn luôn có hai cạnh bị ảnh h-ởng. Ví dụ, trong tr-ờng hợp đầu tiên và cuối cùng của Hình 3.7, hai cạnh phải đ-ợc chèn vào trong L (ảnh đối xứng của những tr-ờng hợp này là nguyên nhân hai cạnh sẽ đ-ợc xóa đi từ L). Nếu hai tr-ờng hợp giữa xuất hiện, thì một cạnh đ-ợc thay thế bởi đối t-ợng khác trong L. Những thao tác thêm vào và xóa đi này có thể đ-ợc thực hiện trong thời gian O(lgn). Từ đó khi có sự kiện n, thời gian cho xây dựng giải thuật là O(nlgn).
65
3.3.2.6. Ch-ơng trình thử nghiệm
Ch-ơng trình đ-ợc viết bằng ngôn ngữ Visual Basic (xem phụ lục 2) dựa theo sơ đồ thuật toán nh- (hình 3.13).
Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnu.edu.vn 66
Xác định các đa giác vật cản với tổng số n đỉnh Ghi nhận toạ độ đỉnh của vật
cản A[i,j]
Phân ly Cfree tia dọc tại đỉnh I
Xác định điểm mẫu
Xây dựng Roadmap theo các điểm mẫu Tính toán và cập nhật ma trận trọng số của Roadmap Tìm đ-ờng đi giải pháp từ qI đến qG Begin End
Sắp xếp toạ độ các điểm mẫu theo thứ tự tăng dần I=1 I<=n DK=True J <=n đoạn [J,J+1] giao với tia dọc qua I J =1 , DK=False DK=False J=J+1 T T F I=I+1 F Hình 3.13
67
Kết quả đạt đ-ợc:
Ch-ơng trình cũng đáp ứng đ-ợc cho không gian trạng thái bất kỳ với đích và nguồn bất kỳ. Ví dụ:
68
Hình 3.14- Một số đ-ờng đi giải pháp của ch-ơng trình thực nghiệm giải thuật Cell Decompsition
Kết luận
Trong luận văn " Một số ph-ơng pháp chính xác lập lộ trình lập lộ trình chuyển động cho Robot " em đã thực hiện đ-ợc một số công việc sau:
1. Đã trình bày đ-ợc tổng quan của bài toán lập lộ trình chuyển động cho robot và các ứng dụng của bài toán trong thực tế.
2. Khái quát đ-ợc cơ sở toán học để biểu diễn không gian cấu hình của bài toán cho các giải thuật lập lộ trình cho Robot .
3. Đi sâu nghiên cứu hai ph-ơng pháp chính xác lập lộ trình chuyển động cho Robot đó là Rodmap Visibility Graph và Vertical Cell Decomposition. Cài đặt thực nghiệm thành công hai ph-ơng pháp trên với không gian trạng thái bất kỳ và tìm đ-ợc đ-ờng đi tối -u cho Robot.
4. H-ớng mở rộng của đề tài này là tiếp tục mở rộng nghiên cứu áp dụng cho
các ph-ơng pháp lập lộ trình chính xác trên và một số các ph-ơng pháp khác nh- Vonoroi Diagram hay Cylindrical Algebraic Decomposition trong các không gian trạng thái có số chiều lớn hơn . Mở rộng bài toán sang các phương pháp lấy mẫu cơ sở….
70
TÀI LIệU THAM KHảO
1. A. Abrams and R. Ghrist(2002), Finding topology in a factory:
Configuration spaces. The American Mathematics Monthly.
2. B. Aronov and M. Sharir(December-1997). On translational motion
planning of a convex polyhedron in 3-space. SIAM Journal on Computing.
3. G. Dudek, M. Jenkin (2000), Computational Principles of Mobile Robots, MIT Press.
4. J.C. Latombe (1991), Robot Motion Planning, Kluwer Academic Publishers.
5. J. Angeles. Spatial Kinematic Chains (1982). Analysis, Synthesis, and Optimisation. Springer-Verlag, Berlin.
6. J. F. Canny (1988). The Complexity of Robot Motion Planning. MIT Press, Cambridge, MA.
7. M. A. Armstrong (1983). Basic Topology. Springer-Verlag, New York.
8. P. K. Agarwal, B. Aronov, and M. Sharir (1999). Motion planning for a convex polygon in a polygonal environment. Discrete and Computational Geometry.
9. Steven M. LaValle (2006), Planning algorithms, Cambridge University Press, 842 pages.
71
Phụ lục 1
Ch-ơng trình ph-ơng pháp visibility Graph Option Explicit
Dim dx, dy, a, b, c, i, j, n, k, k1, k2, s, t, u, v, di, ddx, ddy, dcx, dcy As Integer Dim maxint, minp As Single
Dim ts(1 To 50, 1 To 50) As Single Dim truoc(1 To 50), d(1 To 50) As Single Dim final(1 To 50) As Boolean
Dim Ar(1 To 50), Br(1 To 50), dc(1 To 10) As Integer Dim x1, x2, y1, y2, xp1, xp2, yp1, yp2, xc, yc As Integer Dim dk, dk1 As Boolean
--- Private Sub Command1_Click()
For i = 1 To n For j = 1 To n ts(i, j) = maxint Next j Next i For s = 2 To t For i = 1 To n For j = 1 To n dk = False
'Loai truong hop hai diem cung da giac
If (j <> i + 1) And (i <= dc(s)) And (j <= dc(s)) Then dk = True
End If
If (j <> i + 1) And (i >= dc(s)) And (j >= dc(s)) Then dk = True
End If 'Các truong hop khac For k = 1 To n - 3 If (i <> j) Then x1 = Ar(j) - Ar(i) y1 = Br(j) - Br(i) x2 = Ar(k + 1) - Ar(k) y2 = Br(k + 1) - Br(k)
If ((y1 * Ar(k) - x1 * Br(k) - Ar(i) * y1 + Br(i) * x1) * (y1 * Ar(k + 1) - x1 * Br(k + 1) - Ar(i) * y1 + Br(i) * x1) < 0) And ((y2 * Ar(i) - x2 * Br(i) - Ar(k) * y2 + x2 * Br(k)) * (y2 * Ar(j) - x2 * Br(j) - Ar(k) * y2 + x2 * Br(k)) < 0) Then
dk = True
End If 'Loại tr-ờng hợp điểm cuối mỗi đa giác k1 = dc(s - 1) + 1
k2 = dc(s) + 1 x2 = Ar(k2) - Ar(k1) y2 = Br(k2) - Br(k1)
If ((y1 * Ar(k1) - x1 * Br(k1) - Ar(i) * y1 + Br(i) * x1) * (y1 * Ar(k2) - x1 * Br(k2) - Ar(i) * y1 + Br(i) * x1) < 0) And ((y2 * Ar(i) - x2 * Br(i) - Ar(k1) * y2 + x2 * Br(k1)) * (y2 * Ar(j) - x2 * Br(j) - Ar(k1) * y2 + x2 * Br(k1)) < 0) Then
dk = True End If
72 End If
Next k
If dk = False And (Ar(j) <> 0) And (Ar(i) <> 0) Then DrawWidth = 2
Line (Ar(i), Br(i))-(Ar(j), Br(j)), &H800080
ts(i, j) = Sqr((Ar(j) - Ar(i)) * (Ar(j) - Ar(i)) + (Br(j) - Br(i)) * (Br(j) - Br(i))) ts(j, i) = Sqr((Ar(j) - Ar(i)) * (Ar(j) - Ar(i)) + (Br(j) - Br(i)) * (Br(j) - Br(i))) End If Next j Next i Next s End Sub --- Private Sub Command3_Click() 'duong di ngan nhat
s = n - 1 t = n ' Khoi tao For v = 1 To n d(v) = ts(s, v) truoc(v) = s final(v) = False Next v truoc(s) = 0 d(s) = 0 final(s) = True
Do While Not (final(t)) minp = maxint For v = 1 To n
If (Not (final(v))) And (minp > d(v)) Then u = v