với thuật toán wavefront
2.1.3. Phƣơng pháp sử dụng nhiều robot.
Giải thuật này nhằm bao phủ đường đi đầy đủ sử dụng một nhóm robot trong môi trường chưa xác định (môi trường online). Nhóm tác giả của giải thuật này cho rằng, việc sử dụng nhiều robot có thể giảm thời gian làm việc, tuy nhiên chỉ có thể đạt được tối đa hiệu quả làm việc nếu như số lượng các vùng mà robot đi lặp lại là ít nhất. Do đó giải thuật này tập trung vào việc giảm thiểu tối đa sự lặp đi lặp lại các vùng di chuyển của robot. Giải thuật này sử dụng cùng một phương pháp phân chia cell hai chiều như giải thuật bao phủ đường cày sử dụng robot đơn, nhưng nó mở rộng để xử lý việc làm thế nào để các robot có thể đi hết các vùng đơn lẻ, và làm thế nào để phân bố các robot giữa các vùng. Giải pháp của họ là tính toán để hạn chế các thành viên trong nhóm robot di chuyển giao nhau trong quá trình làm việc. Các robot sẽ di chuyển chủ yếu theo các đường thẳng. Để có thể quét được toàn bộ vùng đang làm việc, các robot được chia làm hai nhóm để đảm nhận hai vai trò: một vài robot, được gọi là explorer (robot thăm dò) đi men theo các ranh giới của vùng mục tiêu hiện tại, trong khi các robot khác, được gọi là coverer (robot bao phủ) thực hiện
25
các chuyển động tới lui để có thể đi hết được các phần còn lại. Để phân phối các nhiệm vụ cho các robot, cũng như phân phối các vùng hoạt động cho từng robot, một cơ chế đấu giá tham lam được sử dụng. [1]
Hình 11: 5 robot thực hiện bao phủ một cell theo giải thuật phân chia đường cày sử dụng đa robot
Hình trên mô tả việc hai robot tham dò thực hiện di chuyển ở hai biên trên và dưới của vùng mục tiêu, trong khi ba robot coverer thực hiện các chuyển động tới lui ở phía trong vùng đó.
2.1.4. Phƣơng pháp sử dụng hƣớng tiếp cận xác suất.
Để các thuật toán bao phủ trên đây hoạt động hiệu quả, việc xác định chính xác vị trí của robot trong quá trình hoạt động là rất quan trọng. Tuy nhiên, trong rất nhiều trường hợp việc xây dựng một hệ thống định vị vị trí của robot chính xác là rất khó khăn. Mặc dù bản thân các phương pháp phân chia vùng làm việc đã cho phép chịu lỗi định vị ở mức độ nhất định, việc định vị sai có thể dẫn đến điều khiển robot đi lệch quỹ đạo đã tính toán.
Trong một số ứng dụng khác, khi cần bao phủ một đối tượng trong không gian ba chiều và ở những điều kiện khó khăn, phương pháp tiếp cận hướng xác suất là phương pháp hay được sử dụng.
26
CHƢƠNG 3: LÝ THUYẾT VÀ CẢI TIẾN THUẬT TOÁN CCD*
3.2. Lý thuyết về thuật toán CCD*
CCD* là thuật toán kết hợp giữa thuật toán D* và thuật toán PT. D* là một thuật toán tìm kiếm, phiên bản động của thuật toán A*. Tuy nhiên trong thuật toán CCD* chỉ lấy ý tưởng một phần của D*. Thuật toán D* là thuật toán tìm kiếm nên cần điểm đầu và điểm cuối (Vì thuật toán bao phủ chỉ có điểm đầu, nên chỉ lấy được ý tưởng tính toán của D* để đưa vào CCD*). Thuật toán PT: CCD* lấy ý tưởng đường đi dựa vào trọng số của cell.
3.2.1. Bản đồ chiếm dụng và sự biểu diễn robot
Một bản đồ chiếm dụng được tạo ra bởi sự phân chia một cách xấp xỉ các ô có kích thước 𝑒𝑐𝑒𝑙𝑙, là những ô mà biểu diễn trừu tượng của tập phần tử 𝑀 = {1, … , 𝑀}
tương ứng với hệ tọa độ Đề Các, lấy tâm là ô trung tâm 𝑐𝑖 ∈ 𝑅2, 𝑖 ∈ 𝑀. Mỗi ô chứa thông tin chiếm dụng của phần môi trường nó phủ lên. Một hàm chiếm dụng có trọng số 𝜊 𝑖 ∈ 1,2, … , 𝑀𝑐 + 1,∞ , 𝑖 ∈ 𝑀 được sử dụng cho việc đại diện tập tất cả các chướng ngại trong môi trường được ký hiệu bởi 𝑂 = 𝑖 ∈ 𝑀 ∨ 𝑜 𝑖 = ∞ và tập các ô chưa bị chiếm dụng được ký hiệu là N = M\O. Hàm số thể hiện sự chiếm dụng được định nghĩa như sau:
𝑜 𝑖 = 𝑚𝑎𝑥 1, 𝑀𝑐 + 2 − 𝑚𝑖𝑛𝑗 ∈𝑂 𝑐𝑖 − 𝑐𝑗 ∞ if i0
∞ 𝑖𝑓 𝑖 ∈ 𝑂 (1)
Hàm số trên thể hiện thủ tục sinh mặt nạ chi phí an toàn xung quanh các chướng ngại vật bằng cách giảm dần giá trị chiếm dụng tính từ vị trí có chướng ngại vật cho đến vùng không gian trống. Kích thước của mặt nạ chi phí an toàn này được định nghĩa bởi số nguyên định trước của các ô𝑀𝑐. Mặt nạ chi phí an toàn của bản đồ lưới chiếm dụng có trọng số 𝑀𝑐 = 4 ô được thể hiện ở hình bên dưới:
27
Hình 12: Mặt nạ chi phí an toàn của bản đồ lưới chiếm dụng có trọng số 𝑴𝒄 = 𝟒
Ở đây ta giả sử rằng công cụ lau dọn gắn lên robot là một hình vuông có kích thước bằng kích thước của số nguyên các ô và lớn hơn kích thước của robot. Trong tường hợp đó, robot được đại diện bằng một mặt nạ hình vuông trên bản đồ có kích thước bao quát được chu vi của robot. Để cho phép robot được đứng ở bất kỳ một ô nào chưa bị chiếm dụng, tất cả các vật cản được mở rộng cho số nguyên của ô 𝑀𝑅. Ví dụ, robot được biểu diễn bởi mặt nạ hình vuông có kích thước 2 ∙ 𝑀𝑅+ 1 ô. Hình thực của robot và mặt nạ chiếm dụng của nó được mô tả ở hình trên. Vị trí của robot được bố trí ở ô R. Vị trí của vật cản được biểu diễn bởi ô màu đen.
Đồ thị có trọng số không liên kết 𝐺 𝑁, 𝐸, 𝑊 được tạo ra từ bản đồ chiếm dụng bằng cách cho rằng tất cả các ô chưa bị chiếm dụng 𝑁 đại diện cho tập các nút trong đồ thị. Ngoài ra hai nút 𝑖, 𝑗𝜖𝑁 là hàng xóm của nhau nếu 𝑐𝑖 − 𝑐𝑗 ∞= 𝑒𝑐𝑒𝑙𝑙 . Tập các cạnh được định nghĩa là 𝐸 = 𝑖, 𝑗 ∨ 𝑖, 𝑗𝜖𝑁, 𝑖 𝑣à 𝑗 𝑙à à𝑛𝑔 𝑥ó𝑚 𝑐ủ𝑎 𝑛𝑎𝑢 .
Tập các trọng số 𝑊 = 𝑤𝑖,𝑗𝜖𝑁, 𝑖 𝑣à 𝑗 𝑙à à𝑛𝑔 𝑥ó𝑚 được định nghĩa là chi phí di chuyển giữa hai hàng xóm, giá trị được xác định như sau:
28
Một đường trong đồ thị 𝐺 𝑁, 𝐸, 𝑊 được định nghĩa là một chuỗi các nút. Ví dụ đường 𝑃 có độ dài 𝐿 được định nghĩa như sau:
𝑃 = 𝑛1,𝑛2,….,𝑛𝐿 nếu 𝑛𝑖, 𝑛𝑖+1 𝜖𝐸, 𝑖 = 1,2, … , 𝐿 − 1 (3)
Chi phí của đường 𝑃là tổng các trọng số của các cạnh nằm trên đường đi đó:
𝑐 𝑃 = 𝐿−1𝑤𝑛𝑖,𝑛𝑖+1
𝑖=1 (4)
Chi phí tối ưu của đường đi từ S tới G được ký hiệu là 𝑔 𝑆, 𝐺 là chi phí tối thiểu trong các đường có thể đi từ S đến G. 𝑔 𝑆, 𝐺 = ∞ nếu không có đường đi từ S đến G. Để ngắn gọn, hàm này sẽ được ký hiệu là g(n) ≡ 𝑔 𝑛, 𝐺 . [5]
3.2.2. Giải thuật A*
Trong khoa học máy tính, A* là một giải thuật tìm kiếm trong đồ thị. Giải thuật này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích). Giải thuật này sử dụng một hàm”đánh giá heuristic” để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất đi qua nút đó. Giải thuật này duyệt các nút theo thứ tự của đánh giá heuristic này. Do đó, giải thuật A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search).
Giải thuật A* được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và Bertram Raphael. Trong bài báo của họ, giải thuật được gọi là giải thuật A; khi sử dụng giải thuật này với một đánh giá heuristic thích hợp sẽ thu được hoạt động tối ưu, do đó mà có tên A*.
Năm 1964, Nils Nilsson phát minh ra một phương pháp tiếp cận dựa trên khám phá để tăng tốc độ của giải thuật Dijkstra. Giải thuật này được gọi là A1. Năm 1967 Bertram Raphael đã cải thiện đáng kể giải thuật này, nhưng không thể hiển thị tối ưu. Ông gọi giải thuật này là A2. Sau đó, trong năm 1968 Peter E. Hart đã giới thiệu một đối số chứng minh A2 là tối ưu khi sử dụng giải thuật này với một đánh giá heuristic thích hợp sẽ thu được hoạt động tối ưu. Chứng minh của ông về giải thuật cũng bao gồm một phần cho thấy rằng các giải thuật A2 mới là giải thuật tốt
29
nhất có thể được đưa ra các điều kiện. Do đó ông đặt tên cho giải thuật mới là A* (A sao, A-star).
Xét bài toán tìm đường – bài toán mà A* thường được dùng để giải. A* xây dựng dần tất cả các tuyến đường từ điểm xuất phát cho tới khi nó tìm thấy một đường đi chạm tới đích. Tuy nhiên, cũng như tất cả các giải thuật tìm kiếm có thông tin (informed tìm kiếm giải thuật), nó chỉ xây dựng các tuyến đường “có vẻ” dẫn về phía đích.
Để biết những tuyến đường nào có khả năng sẽ dẫn tới đích, A* sử dụng một “đánh giá heuristic” về khoảng cách từ điểm bất kỳ cho trước tới đích. Trong trường hợp tìm đường đi, đánh giá này có thể là khoảng cách đường chim bay – một đánh giá xấp xỉ thường dùng cho khoảng cách của đường giao thông.
Điểm khác biệt của A* đối với tim kiếm theo lựa chọn tốt nhất là nó còn tính đến khoảng cách đã đi qua. Điều đó làm cho A* “đầy đủ” và “tối ưu”, nghĩa là, A* sẽ luôn luôn tìm thấy đường đi ngắn nhất nếu tồn tại một đường đi như thế. A* không đảm bảo sẽ chạy nhanh hơn các giải thuật tìm kiếm đơn giản hơn. Trong một môi trường dạng mê cung, cách duy nhất để đến đích có thể là trước hết phải đi về phía xa đích và cuối cùng mới quay lại. Trong trường hợp đó, việc thử các nút theo thứ tự “gần đích hơn thì được thử trước” có thể gây tốn thời gian. [6]
30
h(A) = 60 / h(B) = 53 / h(C) = 36 / h(D) = 35 / h(E) = 35 / h(F) = 19 / h(G) = 16 / h(H) = 38 / h(I) = 23 / h(J) = 0 / h(K) = 7
Đỉnh bắt đầu A. Đỉnh kết thúc K.
Ước lượng khoảng cách từ đỉnh hiện tại cho đến đỉnh kết thúc f(x)=g(x)+h(x) trong đó g là khoảng cách ngắn nhất từ đỉnh hiện tại đến đích. VD f(A) = 0 + 60.
Bước P Các đỉnh nối với P Open Close
0 A60 1 A B, H B64, H53 A 2 H G, I, A B64, G34, I45 A, H 3 G H, K, F B64, I45, K32, F53 A, H, G 4 K G, F, J B64, J32, F49, I45 A, H, G 5 K (dừng)
31
3.2.3. Giải thuật D*
Stentz (1994) đã giới thiệu một thuật toán tìm kiếm trên đồ thị nổi tiếng có khả năng nhanh chóng lập lại kế hoạch khi môi trường thay đổi. Nó được biết đến là phiên bản động của thuật toán A* bỏ đi hàm phỏng đoán.
Với mọi nút đã được duyệt n, thuật toán D* tính chi phí 𝑔 𝑛 của đường đi tối ưu từ n đến điểm đích G và giá trị của hàm khóa k(n) cho quá trình lên kế hoạch, hàm này lưu thông tin giá trị g(n) cũ trước khi thay đổi trọng số trong đồ thị
𝐺 𝑁, 𝐸, 𝑊 . Thuật toán lưu lại con trỏ quay lại của mọi nút được duyệt n, trỏ đến nút cha trong đường đi có chi phí tối ưu. Một con trỏ ngược được ghi lại bởi hàm
b() mà b(n) = m nếu n có chi phí nhỏ nhất nếu nó đi theo đường tiếp sau m. Hàm này cho phép truy ngược lại đường đi tối ưu từ một điểm bất kỳ đến đích.
Quá trình thực hiện thuật toán D* có thể chia làm hai pha, pha khởi tạo và pha lên kế hoạch lại. Pha khởi tạo là khi robot đứng yên tại vị trí ban đầu và pha lên kế hoạch lại là khi robot nhận ra có sự thay đổi của môi trường. [5]
Hình 15 : Quá trình thực hiện tìm kiếm D* từ điểm S đến G
Robot nhận ra sự thay đổi của môi trường và lập lại kế hoạch (replanning) tại các điểm X và chạy từ S tới G theo giải thuật tìm kiếm D*
s
s s
32
2.2.4. Giải thuật Path Transform (PT)
Giải thuật Path Transform (PT) là giải thuật dựa trên thuật toán lan truyền sóng WaveFront. Nó tính chi phí của đường đi từ mọi nút đến nút đích. Chi phí được tính toán bằng thuật toán lan truyền ngược, bắt đầu từ nút G. Ví dụ, nút G sẽ có chi phí là 1, các hàng xóm của nó sẽ có chi phí là 2, các hàng xóm của hàng xóm nếu chưa được xét đến sẽ có chi phí là 3, và cứ tiếp như thế cho đến hết. Chúng ta có thể xem hình minh họa bên dưới, ở đây đường chéo và đường thẳng được xem như nhau. Giải thuật này với giải thuật D* giống nhau ở pha khởi tạo. Đường đi che phủ hết bản đồ được xác định là đường dài nhất xuất phát từ đỉnh S ( hình 16). Thuật toán Path Transform là phiên bản chỉnh sửa của thuật toán lan truyền sóng WaveFront. Sóng lan truyền là tổng các trọng số và sự đo lượng khoảng cách với các vật cản. Điều này tương tự với việc tìm đường đi trên đồ thị có trọng số đi kèm với mặt nạ chi phí an toàn. [5]
Hình 16: Đường đi bao phủ từ S đến G hoàn thành bởi thuật toán PT
3.3. Thuật toán CCD*
3.3.1. Kế hoạch ban đầu của đƣờng bao phủ hoàn toàn
Ban đầu, thuật toán D * thực hiện tìm kiếm đầy đủ của đồ thị G (N, E, W) từ nút start S. Đối với mỗi nút n trong đồ thị G (N, E, W), D * tính toán chi phí g (n ) đến nút bắt đầu cũng như k (n) và backpointer b (n) cần thiết cho kế hoạch lại đường đi. Để tránh truy cập các nút đã ghé thăm, các hàm nhị phân visited (n) = {0, 1} được
33
sử dụng và giá trị của nó được lưu trữ cho mỗi nút. Để tránh chồng chéo các phần của đường dẫn bao quát đầy đủ, các hàm chồng chéo nhị phân overlapped (n) = {0, 1} được sử dụng và giá trị của nó được lưu trữ cho mỗi nút. Ban đầu, tất cả các nút được thiết lập để không được ghé qua và không chồng chéo. Các nút C hiện tại được thiết lập để bắt đầu nút S. Đường đi của đường bao phủ hoàn toàn được tạo ra bằng cách làm theo sự gia tăng của giá trị g quanh nút C hiện hành bắt đầu từ nút start S. Xung quanh các nút NC là những nút không được ghé qua và không chồng chéo mà có thể truy cập (g (n) <∞) và giữ khoảng cách từ nút C hiện tại cho các kích thước Robot vuông (2 · MR + 1 cells) trong bốn hướng thẳng qua lưới. Nút M
tiếp theo trên con đƣờng bao phủ hoàn toàn là nút với giá trị g nhỏ nhất trong số các nút xung quanh ứng viên khác. Sự kết nối giữa hai nút trong con đường
bao phủ hoàn toan được lưu trữ như là con đường phụ trợ Paux gồm các nút gần kề trong bản đồ lưới. Tất cả các nút xa khỏi con đường phụ trợ Paux trong bề mặt robot MR được thiết lập để ghé qua, và trong hai bề mặt robot (2 · MR) được đặt chồng lên nhau. Nếu không có nút ứng viên tồn tại xung quanh sau đó D * tìm kiếm thêm được thực hiện từ C. nút hiện tại D * tìm kiếm này được ghi nhận như là D *' vì nó không thay đổi giá trị của g, k, b tính toán bởi việc tìm kiếm D * đầu tiên. Nó được sử dụng như kế hoạch ban đầu và giá trị g' và b' được sử dụng thay cho g, k, b giá trị. Việc tìm kiếm của D*' dừng lại nếu (a) không ghé thăm nút đầu tiên (nút M) được tìm thấy hoặc (b) các nút được đi đến M được tìm thấy đó là ô gần vật cản mở rộng và không tồn tại nút đi đến khoảng cách n từ nút M ít hơn hoặc bằng bề mặt robot MR. Con đường ngắn nhất từ C đến M được tính theo cách điểm backpointer b' từ M đến C. nút M được thiết lập để được mới nút C hiện tại cho các thuật toán lặp kế tiếp. Các thuật toán dừng lại khi không có các nút có thể truy cập không đi đến hoặc nút không thể với tới được bề mặt robot MR từ các nút truy cập. [5]
34
Hình 17: Bước đi ban đầu của thuật toán CCD*