Thuật toán BA* thực hiện tìm kiếm các vùng boustrophedon ngay trong quá trình robot chạy, đồng thời đưa ra cơ chế quay lui để đảm bảo tất cả các vùng boustrophedon đều được tìm thấy và k
Trang 1LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi trong đó có sự giúp
đỡ rất lớn của thầy hướng dẫn TS Ngô Lam Trung
Các nội dung nghiên cứu, số liệu và kết quả nêu trong luận văn là trung thực
và chưa từng được ai công bố trong bất kỳ công trình nào khác
Trong luận văn, tôi có tham khảo đến một số tài liệu đã được liệt kê tại phần Tài liệu tham khảo ở cuối luận văn Các tài liệu tham khảo được trích dẫn trung thực trong luận văn
Hà Nội, ngày… tháng … năm 2016
Tác giả
Nguyễn Thùy Linh
Trang 2LỜI CẢM ƠN Trước tiên, tôi xin chân thành cảm ơn TS Ngô Lam Trung đã dành thời gian
quý báu, tận tình hướng dẫn chỉ bảo, góp ý cho tôi trong suốt quá trình thực hiện luận văn tốt nghiệp
Tôi xin được cảm ơn sự giúp đỡ nhiệt tình của các Thầy giáo, Cô giáo trong trường Đại học Bách Khoa
Đặc biệt, tôi xin được bày tỏ lòng biết ơn sâu sắc tới các Thầy giáo, Cô giáo trong Viện Công nghệ thông tin và Truyền thông đã tham gia giảng dạy tôi trong quá trình học tập tại Trường Các thầy cô đã tận tình giảng dạy, truyền đạt kiến thức, tạo tiền đề cho tôi hoàn thành luận văn Tôi xin cám ơn các bạn sinh viên trong phòng Phòng thí nghiệm Hệ thống Máy tính và đặc biệt với hai bạn sinh viên Trần Đức Sơn và Nguyễn Hữu Mạnh trong nhóm nghiên cứu irobot đã hỗ trợ tôi mọi mặt để tôi hoàn thành luận văn
Cuối cùng, tôi xin chân thành cảm ơn các bạn bè, đồng nghiệp và nhất là gia đình tôi đã quan tâm và tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập và nghiên cứu để hoàn thành tốt luận văn tốt nghiệp này
Xin trân trọng cảm ơn!
Tác giả
Nguyễn Thùy Linh
Trang 3PHỤ LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
PHỤ LỤC iii
DANH MỤC HÌNH VẼ vi
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ viii
LỜI MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN 3
1.1 Lý do chọn đề tài 3
1.2 Giới thiệu một số khái niệm liên quan 4
1.2.1 Robot dịch vụ là gì? 4
1.2.2 Các ứng dụng của robot dịch vụ 4
1.2.3 Tìm đường bao phủ là gì? 5
1.3 Các phương pháp giải quyết và các công cụ tiếp cận bài toán bao phủ 6
1.3.1 Phương pháp giải quyết bài toán bao phủ 6
1.3.2 Các công cụ tiếp cận bài toán 7
1.4 Nội dung đề tài và kết quả thực hiện được 7
1.4.1 Nội Dung đề tài 7
1.4.2 Kết quả thực hiện được 7
CHƯƠNG 2: PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN BAO PHỦ 9
2.1 Một số phương pháp giải quyết bài toán bao phủ với đơn robot 9
2.1.1 Phương pháp phân chia vùng làm việc cổ điển 9
2.1.1.1 Thuật toán phân chia theo hình thang 10
2.1.1.2 Thuật toán phân chia Boustrophedon 11
2.1.2 Phương pháp dựa trên lưới ô vuông 12
Trang 42.2 Phương pháp giải quyết sử dụng một nhóm robot 16
CHƯƠNG 3: LÝ THUYẾT VÀ PHÁT TRIỂN THUẬT TOÁN MSTC 19
3.1 Các tiêu chí đánh giá 19
3.2 Thuật toán bao phủ với một nhóm robot dựa trên cây bao trùm trên môi trường đã biết 19
3.2.1 Khu vực bao phủ 19
3.2.2 Thuật toán MSTC Offline 20
3.2.2.1 Xây dựng cây bao trùm 20
3.2.2.2 MSTC Offline không quay lui 22
3.2.2.3 Phân tích các tiêu chí của thuật toán 25
3.3 Thuật toán bao phủ với một nhóm robot với môi trường chưa rõ 26
3.3.1 Khu vực bao phủ 26
3.3.2 Thuật toán ORMSTC 27
3.3.3 Phân tích các tiêu chí của thuật toán 31
3.3.3.1 Tính mạnh mẽ 31
3.3.3.2 Tính bao phủ toàn bộ 31
3.3.3.3 Tính không dư thừa 32
3.4 Đề xuất cải tiến và phát triển thuật toán MSTC 32
3.4.1 Đề xuất và phát triển thuật toán ORMSTC dựa trên cách tạo cây con trên MSTC-offline 32
3.4.1.1 Khu vực bao phủ 32
3.4.1.2 Ý tưởng cải tiến thuật toán 33
3.4.1.3 Phát triển thuật toán 35
3.4.1.4 Phân tích các tiêu chí của thuật toán cải tiến 38
3.4.2 Triển khai thuật toán MSTC - Full 40
3.4.2.1 Khu vực bao phủ 40
3.4.2.2 Ý tưởng thuật toán 41
3.4.2.3 Phát triển thuật toán 43
Phân tích các tiêu chí đánh giá thuật toán cải tiến 47
Trang 5CHƯƠNG 4: CÀI ĐẶT VÀ THỬ NGHIỆM CÁC THUẬT TOÁN MSTC 50
4.1 Giới thiệu một số công cụ, phần mềm sử dụng 50
4.1.1 Giới thiệu về ROS 50
4.1.2 Giới thiệu về Gazebo 51
4.1.3 Giới thiệu robot Kobuki 51
4.1.4 Giới thiệu Hokuyo 52
4.2 Giải quyết bài toán giao tiếp giữa các robot 53
4.2.1 Vấn đề phát sinh 53
4.2.2 Áp dụng lập trình socket với thuật toán MSTC 54
4.3 Vấn đề quay lui robot và giải quyết tính mạnh mẽ khi thử nghiệm thuật toán 57 4.3.1 Vấn đề phát sinh 57
4.3.2 Áp dụng phương pháp khoảng cách để di chuyển đến cell cần đi 59
4.4 Vấn đề trong tính mạnh mẽ của thuật toán MSTC 60
4.5 Kết quả thử nghiệm 61
4.5.1 Thử nghiệm trên môi trường mô phỏng: 61
4.5.2 Đánh giá thuật toán trên môi trường giả lập 68
4.5.3 Thử nghiệm trên môi trường thực tế 69
KẾT LUẬN 73
A Kết luận 73
B Những điểm chưa hoàn thiện 73
C Hướng phát triển đề tài 74
TÀI LIỆU THAM KHẢO 75
Trang 6DANH MỤC HÌNH VẼ
Hình 1.1: Một ứng dụng thực tế của robot dịch vụ 5
Hình 2.1: Bao phủ một cell hình chữ nhật bằng thao tác đi ziczag 10
Hình 2.2: Ví dụ về thuật toán phân chia hình thang 11
Hình 2.3: Ví dụ về thuật toán BA* 12
Hình 2.4: Ví dụ phương pháp phân chia dựa trên lưới ô vuông với hai chướng ngại vật 13
Hình 2.5: Gán có số cho các ô bằng cách lan truyền bước sóng với ô bắt đầu (S) và ô đích (G) 14
Hình 2.6: Kế hoạch bao phủ sử dụng biến đổi khoảng cách với thuật toán wavefront 14
Hình 2.7: Phân chia cell trong thuật toán cây bao trùm 15
Hình 2.8: Đường bao phủ của robot khi áp dụng thuật toán Spiral – STC 16
Hình 2.9: Robot thực hiện bao phủ một cell theo thuật toán phân chia boustrophedon sử dụng nhóm robot 18
Hình 3.1: Xây dựng cây bao trùm 22
Hình 3.2: Đường đi cho đa robot 23
Hình 3.3: Nhóm robot sử dụng ORMSTC trên thuật toán Spiral-STC 34
Hình 3.4: Nhóm robot sử dụng MSTC- Offline 35
Hình 3.5: (a): Cạnh có hai phía; (b): Cạnh có một phía; (c): Gấp đôi nút ở cell mất kết nối cục bộ 41
Hình 3.6: Vấn đề gặp phải khi thực hiện MSTC-full 42
Hình 3.7: Các subcell của cell được định nghĩa 43
Hình 3.8: Vấn đề gặp phải khi cell mất kế nối cục bộ 46
Hình 3.9: Vấn đề gặp phải khi cell mất kế nối cục bộ 47
Hình 4.1: Robot Kobuki 52
Hình 4.2: Laze Hokuyo 53
Hình 4.3: Mô hình client-server sử dụng 54
Trang 7Hình 4.4: Tình huống robot chết nằm giữa hai subcell 58
Hình 4.5: Tình huống robot còn sống không thể giúp robot đã chết 61
Hình 4.6: Sơ đồ hệ thống khi triển khai trong môi trường mô phỏng 62
Hình 4.7: Sơ đồ cấu trúc chương trình 63
Hình 4.8: Thuật toán MSTC_Offline chạy với 2 robot 65
Hình 4.9: Thuật toán ORMSTC chạy với 2 robot 65
Hình 4.10: Thuật toán MSTC chạy với 2 robot 66
Hình 4.11: Thuật toán MSTC-full chạy với 2 robot 66
Hình 4.12: Thuật toán MSTC-full chạy khi biết kịp thời robot chết 67
Hình 4.13 Thuật toán MSTC-full chạy xong và thực hiện kiểm tra để quay lui để bao phủ cho robot lỗi 68
Hình 4.14: Sơ đồ hệ thống khi triển khai trong môi trường thực tế 70
Hình 4.15: Hình ảnh chạy thuật toán trong thực tế 72
Trang 8
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ
ORMSTC On-line Robust Multi-robot STC
IFR The International Federation of Robotics
Trang 9LỜI MỞ ĐẦU
Ý tưởng về việc chế tạo các cỗ máy có thể làm việc tự động có từ thời cổ đại, nhưng những nghiên cứu về chức năng và khả năng ứng dụng không có bước tiến nào đáng kể cho đến thế kỷ 20 Xuyên suốt lịch sử, robot học thường được nhìn nhận là để bắt chước hành vi của con người, và thường quản lý các nhiệm vụ theo cách thức tương tự
Ngày nay, robot là một lĩnh vực phát triển nhanh chóng, nhờ công nghệ phát triển liên tục, robot đã được chế tạo để phục vụ cho nhiều mục đích khác nhau Nhiều robot đã thay con người làm những công việc độc hại như tháo ngòi nổ bom, mìn, thăm dò các con tàu bị đắm, đi vào thu thập thông tin ở những nơi độc hại, có phóng xạ, Việc sử dụng robot để giải quyết bài toán bao phủ đã được ứng dụng rất nhiều trong thực tiễn Nhiệm vụ của robot là tìm kiếm và di chuyển theo một thuật toán nào đó nhằm bao phủ được hết khu vực được giao Khu vực làm việc của robot có thể chứa những vật cản Robot có thể được trạng bị các cảm biến hoặc các thiết bị hỗ trợ khác để hỗ trợ cho công việc của mình
Những năm gần đây, sử dụng nhóm nhiều robot trong bài toán bao phủ ngày càng được quan tâm bởi tính hiệu quả và mạnh mẽ của nó Lý do đầu tiên là bởi nhiều robot có thể hoàn thành nhiệm vụ nhanh hơn so với một robot, bằng cách phân chia khu vực làm việc giữa chúng Lý do thứ hai là bởi sử dụng nhóm robot có thể đảm bảo được việc hoàn thành xong công việc tốt hơn Khi nhiều robot được sử dụng, giả sử có một thành viên bị lỗi và không thể hoàn thành phần việc mình được giao, các đồng nghiệp khác của nó có thể hỗ trợ để vẫn đảm bảo công việc chung được hoàn thành
Từ mong muốn muốn thử nghiệm một thuật toán tìm đường bao phủ cho nhóm robot, trong luận văn này tập trung nghiên cứu, tìm hiểu, giải quyết những vấn đề cụ thể như sau:
Trang 10- Lập trình thuật toán tìm đường bao phủ STC với nhóm robot trong môi trường được biết trước (Offline - MSTC)
- Lập trình phát triển thuật toán MSTC trên môi trường chưa biết (Online-MSTC)
Thực hiện chạy thử nghiệm kết quả đã lập trình được trong môi trường mô phỏng và trong môi trường thực tế
Cấu trúc luận văn này gồm bốn chương với những nội dung chính như sau: Chương 1: Tổng quan
- Lý do chọn đề tài
- Giới thiệu một số khái niệm liên quan
- Giới thiệu các phương pháp giải quết và các công cụ tiếp cận bài toán
bao phủ
- Nội dung và kết quả thực hiện được
Chương 2: Cơ sở lý thuyết
- Trình bày các phương pháp tiếp cận giải quyết bài toán bao phủ với
một robot
- Trình bày các phương pháp tiếp cận giải quyết bài toán bao phủ với
nhóm robot
Chương 3: Lý thuyết và phát triển thuật toán MSTC
- Giới thiệu các tiêu chí đánh giá
- Thuật toán bao phủ với một nhóm các robot dựa trên cây bao trùm
trên môi trường đã biết
- Thuật toán bao phủ với một nhóm robot với môi trường chưa rõ
- Đề xuất thuật toán MSTC
Chương 4: Thử nghiệm trong mô phỏng và trong thực tế
- Giới thiệu một số công cụ, phần mềm sử dụng để phát triển
- Trình bày các vấn đề phát sinh khi lập trình thuật toán MSTC
- Trình bày những kết quả đạt được khi thử nghiệm trong mô phỏng và
trong thực tế
Trang 11CHƯƠNG 1 TỔNG QUAN 1.1 Lý do chọn đề tài
Luận văn này có nội dung về nghiên cứu và thử nghiệm thuật toán tìm đường bao phủ MSTC với nhóm robot
Lý do lựa chọn đề tài này có thể bao gồm những lý do sau:
- Cùng với sự phát triển của công nghệ, càng ngày việc sử dụng robot để giúp
đỡ con người trong cuộc sống càng được phổ biến Robot giúp cũng là đang dần trở thành một sản phẩm công nghệ không thể thiếu trong cuộc sống của con người Robot lau nhà ra đời như một tất yếu của cuộc sống giúp con người thoát khỏi những công việc có tính chất lặp đi lặp lại, nhàm chán
- Các bài toán bao phủ được đưa ra để robot có thể hoàn thành nhiệm vụ làm
sạch đồng thời không va đập với các vật cản trong quá trình di chuyển Kế hoạch tìm đường bao phủ (Coverage Path Planning - CPP) là nhiệm vụ tìm ra đường đi có thể đi qua tất cả các điểm cần thiết trong một vùng hoặc không gian cho trước, bên cạnh đó cũng phải tránh được những vật cản Công việc này là cần thiết cho rất nhiều ứng dụng ví dụ như các robot hút bụi, lau nhà, sơn tường, vẽ tranh, robot dò mìn, máy cắt cỏ, máy làm sạch cửa sổ,
- Với khu vực bao phủ rộng lớn khi thực hiện với chỉ một robot duy nhất sẽ
gặp nhiều vấn đề xẩy ra như khi robot đó lỗi hay thời gian thực hiện công việc Phương pháp tiếp cận là sử dụng nhiều robot hoạt động song song, nhờ
đó cho phép rút ngắn thời gian bao phủ không gian làm việc bằng cách phân chia công việc cho từng robot Hay còn gọi là bài toán tìm đường bao phủ cho một nhóm robot
Về mặt công nghệ tác giả muốn:
- Tìm hiểu lập trình nhúng
- Tìm hiểu về các thuật toán tìm đường
Trang 121.2 Giới thiệu một số khái niệm liên quan
1.2.1 Robot dịch vụ là gì?
Robot dịch vụ là loại robot hỗ trợ, thực hiện thay con người trong các công việc; ví dụ như công việc có tính chất lặp đi lặp lại, các công việc trong nhà, công việc phải thực hiện ở những chỗ dơ bẩn, nguy hiểm,… Những robot này thường được điều khiển tự động bởi một hệ thống điều khiển tích hợp được cài đặt thủ công bên trong Thuật ngữ “Robot dịch vụ” không có một định nghĩa chính xác Liên đoàn Robot Quốc Tế (The International Federation of Robotics – IFR) đã đề xuất một định nghĩa: Một robot dịch vụ là một robot mà hoạt động bán tự động hoặc hoàn toàn tự động để thực hiện các dịch vụ hữu ích cho của con người và thiết bị, không bao gồm các hoạt động sản xuất
- Ứng dụng trong các nhà hàng, quán bar, khách sạn: Hiện nay, nhiều nhà hàng, quán bar, khách sạn đã sử dụng robot dịch vụ Các công việc mà robot có thể thực hiện ví dụ như dọn dẹp, pha chế các đồ uống phức tạp, hay thậm chí là tiếp đón khách hàng
- Ứng dụng trong gia đình: Robot trong gia đình thực hiện nhiệm vụ mà con người thường xuyên thực hiện xung quanh nhà như lau chùi sàn nhà, cắt
cỏ, dọn dẹp hồ bơi, Chúng cũng có thể đóng vai trò của một người quản gia trong gia đình
Trang 13- Ứng dụng trong khoa học: Hệ thống robot thực hiện nhiều chức năng như tiến hành các thao tác lặp đi lặp lại trong nghiên cứu Những robot tự động cũng có thể thực hiện các nhiệm vụ khoa học mà con người khó hoặc không thể thực hiện, ví dụ như các vùng biển sâu, không gian bên ngoài Trái Đất
Hình 1.1: Một ứng dụng thực tế của robot dịch vụ
1.2.3 Tìm đường bao phủ là gì?
Tìm đường bao phủ (Coverage Path Planning - CPP) là nhiệm vụ tìm ra đường đi có thể đi qua tất cả các điểm cần thiết trong một vùng hoặc không gian cho trước, bên cạnh đó cũng phải tránh được những vật cản Công việc này là cần thiết cho rất nhiều ứng dụng robot, ví dụ như các robot hút bụi, lau nhà, sơn tường,
vẽ tranh, robot dò mìn, máy cắt cỏ, máy làm sạch cửa sổ Nhiệm vụ mà robot khi thực hiện công việc này được đặt ra theo các yêu cầu như sau:
- Robot phải đi qua tất cả các điểm và bao phủ vùng mục tiêu cần quét một cách hoàn thiện
- Robot phải thực hiện di chuyển mà không được đè các vùng quét lên nhau
- Các tác vụ thực hiện liên tục và tuần tự mà đường đi không bị lặp lại
- Robot phải tránh được các vật cản
- Sử dụng quỹ đạo di chuyển đơn giản (đi thẳng hoặc vòng tròn )
- Bổ sung các đường dẫn tùy chọn khi có thể
Trang 14giải bài toán tìm đường trong trường hợp tổng quát hay áp dụng thực tế không phải
là điều dễ dàng, có thể kể ra ở đây một số ví dụ như: bài toán “Người bán hàng” (Covering/Travelling Salesman problem), bài toán “Phòng trưng bày” (Art Gallery problem) hay bài toán “Người đi tuần tra” (Watchman Route problem) đều là các bài toán có liên hệ đến yêu cầu tìm đường, chúng đều là những bài toán NP-khó
Các thuật toán bao phủ có thể được phân loại thành thuật toán bao phủ tối ưu hoặc bao phủ đầy đủ Nếu khả năng bao phủ toàn bộ vùng làm việc của thuật toán được chứng minh chặt chẽ thì thuật toán được gọi là bao phủ đầy đủ Trong trường hợp ngược lại, nếu thuật toán nhằm tối đa hóa diện tích bao phủ trong điều kiện robot chịu các ràng buộc như thời gian hoạt động, nguồn năng lượng, kích thước và không thể đảm bảo bao phủ toàn bộ vùng làm việc, thì thuật toán được gọi là bao phủ tối ưu
Các thuật toán bao phủ cũng có thể được phân thành hai loại on-line và line Thuật toán off-line hoạt động dựa vào các thông tin tĩnh và các thông tin về môi trường cần bao phủ phải được biết trước khi robot hoạt động Ngược lại, các thuật toán on-line không cần biết trước các thông tin này, mà robot sẽ tự xác định các thông tin về môi trường theo thời gian thực dựa vào các cảm biến được gắn trên robot Do đó, các thuật toán on-line cho phép robot hoạt động linh hoạt ngay cả với các môi trường mà robot hoàn toàn không biết trước Các thuật toán on-line có sử dụng các cảm biến để đánh giá và đi đến mục tiêu nên trong một số trường hợp còn
off-có thể được gọi là giải thuật bao phủ dựa trên cảm biến
1.3 Các phương pháp giải quyết và các công cụ tiếp cận bài toán bao phủ 1.3.1 Phương pháp giải quyết bài toán bao phủ
Có ba hướng chính để giải quyết bài toán bao phủ, đó là:
- Phương pháp phân chia vùng làm việc cổ điển
- Phương pháp dựa trên lưới ô vuông
- Phương pháp sử dụng nhóm robot
Kết hợp hai hay nhiều hướng giải quyết ở trên để giải quyết bài toán bao phủ MSTC chính là thuật toán dựa trên phương pháp tiếp cận vùng bao phủ thành lưới
Trang 15các ô theo thuật toán cây bao trùm STC và kết hợp sử dụng một nhóm robot để bao phủ
Thuật toán MSTC được sử dụng trên các môi trường đã biết hay chưa biết có thể gọi chúng là Offline -MSTC và Online-MSTC
1.3.2 Các công cụ tiếp cận bài toán
Các công cụ tiếp cận bài toán gồm:
- Tiến hành cài đặt thử nghiệm thuật toán trên môi trường mô phỏng Gazebo có vật cản
- Sử dụng ROS phiên bản Indigo trên hệ điều hành Ubuntu 14.04
- Ngôn ngữ C++
- Kết nối các nhóm robot bằng Client – Server trên C++
- Chạy trên môi trường thực tế với robot Kobuki
1.4 Nội dung đề tài và kết quả thực hiện được
1.4.1 Nội Dung đề tài
Nội dung đề tài này trình bày chi tiết những vấn đề như sau:
- Tìm hiểu tổng quan về các phương pháp giải quyết bài toán bao phủ:
- Tìm hiểu và nghiên cứu thuật toán tìm đường bao phủ MSTC cho nhóm robot (MSTC-Offline và ORMSTC)
- Đề xuất thuật toán MSTC mới cho nhóm robot
- Tiến hành cài đặt thử nghiệm thuật toán trên môi trường mô phỏng Gazebo
và trên môi trường thật với robot Kobuki
1.4.2 Kết quả thực hiện được
Cho tới thời điểm hiện tại, tác giả đã thực hiện được những công việc như sau:
- Tìm hiều về các công cụ hỗ trợ trong lập trính nhúng
- Tìm hiểu về các phương pháp giải quyết bài toán bao phủ, hiểu về một số
Trang 16- Đề xuất các phương pháp giải quyết MSTC mới với môi trường có vật cản 2x2 và môi trường vật cản 1x1
- Thử nghiệm lập trình thuật toán trên thuật toán đề xuất MSTC với nhóm robot, sau đó tiến hành cho chạy thử nghiệm và thu được kết quả:
o Chạy được trường hợp thuật toán chạy bình thường, không có robot nào
bị hỏng trong môi trường mô phỏng Gazebo
o Xử lý được một số trường hợp có robot chết trong môi trường mô phỏng Gazebo
- Chạy được trường hợp bình thường, không có robot nào bị hỏng trong môi trường thực tế
Trang 17CHƯƠNG 2 PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN BAO PHỦ
Kế hoạch bao phủ bao phủ là một nhiệm vụ quan trọng đối với robot, với nhiều ứng dụng thực tiễn chẳng hạn như làm sạch sàn, cắt cỏ, khai thác, thu hoạch, sơn, và làm sạch các chất thải nguy hiểm, Tại đây, robot được đưa ra một công việc trong một vùng bị chặn, có thể có những chướng ngại vật, trở ngại Robot được giả định có một công cụ kết hợp của một hình dạng nhất định thường là các cảm biến và/hoặc thiết bị truy câp theo vùng tuần tự Robot cần phải “thăm” tất cả các điểm trong khu vực làm việc Thường thì kích thước công cụ của robot nhỏ hơn nhiều so với khu vực làm việc của nó Nhiệm vụ của robot là tìm kiếm và di chuyển dọc theo một con đường sao cho nó bao phủ hoàn toàn Đôi khi được gọi là tìm kiếm hoàn toàn vùng, hoặc có thể là quét
2.1 Một số phương pháp giải quyết bài toán bao phủ với đơn robot
Thuật toán bao phủ đơn giản nhất là điều khiển robot đi một cách ngẫu nhiên trong vùng làm việc Theo cách tiếp cận này, rõ ràng nếu robot hoạt động trong một thời gian đủ lâu thì toàn bộ vùng làm việc của robot sẽ được bao phủ Đây là thuật toán được sử dụng trong nhiều robot hút bụi như Trilobite của Electrolux và nổi tiếng nhất là Roomba của iRobot Đặc điểm của phương pháp này là đơn giản, không cần tính toán phức tạp và không cần các cảm biến đắt tiền trên robot Tuy nhiên, phương pháp này tỏ ra không hiệu quả nếu vùng làm việc của robot có kích thước lớn và chứa nhiều vật cản có kết cấu phức tạp Khi đó chi phí hoạt động của robot tính theo thời gian và năng lượng tiêu thụ trở nên rất lớn không thể chấp nhận được trên thực tế
Trên thế giới đã có rất nhiều nghiên cứu nhằm giải quyết hiệu quả bài toán tìm đường đi bao phủ Các nghiên cứu này có thể được liệt kê vào ba hướng chính như sau:
2.1.1 Phương pháp phân chia vùng làm việc cổ điển
Trang 18vật cản Tổng diện tích các cell này bằng diện tích mà robot phải bao phủ Do đó, bài toán tìm đường đi bao phủ trở thành bài toán phân chia vùng làm việc của robot thành các cell Vì các cell không chứa vật cản, nên robot có thể dễ dàng bao phủ từng cell bằng các thao tác đơn giản như quét kiểu ziczag đường cày hoặc quét theo vòng tròn Công việc của các robot là làm sao để có thể bao phủ được hết các cell
đó, và việc di chuyển giữa các cell sao cho có thể tối ưu nhất có thể
Hình 2.1: Bao phủ một cell hình chữ nhật bằng thao tác đi ziczag
2.1.1.1 Thuật toán phân chia theo hình thang
Đây là thuật toán off-line Thuật toán cần biết thông tin môi trường làm việc
để thực hiện phân chia vùng làm việc thành các thành các hình thang, không chồng chéo lên nhau Việc phân chia các hình thang hình thành dựa trên chia theo trục tung hoặc trục hoành như ở hình 2.2 dưới đây Sau đó một đồ thị kề chỉ ra quan hệ
về mặt không gian giữa các cell sẽ được hình thành Từ đó để đảm bảo bao phủ toàn
bộ vùng làm việc, robot cần tìm ra một đường đi qua tất cả các cell trên đồ thị kề Cuối cùng, robot thực hiện đi theo đường ziczag tại mỗi cell, và di chuyển giữa các cell theo đúng thứ tự chỉ ra trong đường đi đã xác định trên đồ thị Thuật toán hình thang [1] khá hiệu quả với các vùng làm việc đơn giản dạng đa giác
Trang 19Hình 2.2: Ví dụ về thuật toán phân chia hình thang
2.1.1.2 Thuật toán phân chia Boustrophedon
Thuật toán dựa trên thuật toán trên và được ứng dụng khá nhiều là thuật toán phân chia boustrophedon còn được gọi là thuật toán đường cày [1] Thuật toán này tương tự với thuật toán phân chia hình thang nhưng cho phép nối các cell kề nhau
mà robot có thể quét bởi một đường ziczag lại Trong thuật toán này, một đỉnh chỉ được xem xét khi nó có thể mở rộng cả lên trên và xuống dưới Thuật toán boustrophedon phát triển được kết hợp việc xây dựng lưới đồ thì A* tiêu biểu như thuật toán BA* Thuật toán được áp dụng phát triển trong bài toán bao phủ môi trường chưa biết, thuật toán bao phủ on-line Trong thuật toán này, vùng làm việc của robot sẽ được chia thành các vùng boustrophedon có hình dạng phức tạp mà robot có thể bao phủ trong một lần quét Thuật toán BA* thực hiện tìm kiếm các vùng boustrophedon ngay trong quá trình robot chạy, đồng thời đưa ra cơ chế quay lui để đảm bảo tất cả các vùng boustrophedon đều được tìm thấy và không gian làm việc của robot được bao phủ toàn bộ Hình ở dưới đây mô tả một ví dụ phân chia các vùng boustrophedon dựa vào thuật toán BA* với bốn vùng được đánh số từ 1 tới 4 và quỹ đạo di chuyển tương ứng của robot
Trang 20Hình 2.3: Ví dụ về thuật toán BA*
2.1.2 Phương pháp dựa trên lưới ô vuông
Tìm đường đi bao phủ dựa trên lưới (grid-based) [1] là hướng tiếp cận mạnh
và được quan tâm nhiều nhất khi giải quyết bài toán tìm đường đi bao phủ Phương pháp này thể hiện toàn bộ môi trường làm việc của robot trên một bản đồ dạng lưới
ô vuông Mỗi ô trên lưới nhận một giá trị cho biết tại vị trí ô đó là chướng ngại vật hay vùng không gian trống Toàn bộ lưới cho biết hình dạng xấp xỉ của không gian hoạt động của robot và các chướng ngại vật bên trong Hình dưới đây mô tả một ví
dụ bản đồ lưới ô vuông với hai vật cản Kích thước của mỗi ô vuông thường bằng kích thước của robot hoặc là gấp hai lần kích thước robot
Trang 21Hình 2.4: Ví dụ phương pháp phân chia dựa trên lưới ô vuông với hai chướng
ngại vật
2.1.2.1 Thuật toán tràn sóng wavefront
Đây là thuật toán off-line, sử dụng lưới đại diện môi trường với kích thước gấp hai lần kích thước robot Thuật toán wavefront lập kế hoạch bao phủ hoàn thành vào lưới điện trên Phương pháp này đòi hỏi phải có ô bắt đầu và ô mục tiêu Sự thay đổi khoảng cách bằng cách lan truyền sóng từ ô mục tiêu đến ô bắt đầu sử dụng để chỉ định số đặc trưng cho mỗi phần tử lưới Đầu tiên thuật toán gán nhãn số
0 cho ô mục tiêu và sau đó gán nhãn số 1 cho tất cả các ô mà xung quanh ô đó Quá trình được thực hiện tương tự với các ô còn lại Quá trình này lặp đi lặp lại từng bước cho đến khi tất cả các ô được gán một số nhãn cụ thể Quá trình đó được gọi là quá trình transform (trán sóng) Hình 2.5 ví dụ thể hiện minh họa quy trình này trên một môi trường [1] Khi chuyển đổi khoảng cách được tính toán xong, kế hoạch bao phủ có thể được tìm thấy bằng cách bắt đầu từ các ô bắt đầu và lựa chọn các ô lân cận với các nhãn cao nhất chưa được thăm Nếu có hai hoặc nhiều ô lân cận chưa được thăm chia sẻ cùng một nhãn, thì một trong các ô được chọn ngẫu nhiên Hình 2.6 thể hiện kế hoạch bao phủ thuật toán transform
Trang 22Hình 2.5: Gán có số cho các ô bằng cách lan truyền bước sóng với ô bắt đầu (S)
và ô đích (G)
Hình 2.6: Kế hoạch bao phủ sử dụng biến đổi khoảng cách với thuật toán
wavefront
2.1.2.2 Thuật toán cây bao trùm
Thuật toán này thuộc phương pháp tiếp cận dựa trên lưới ô vuông đã đề cập tới ở trên Trong thuật toán này, chia nhỏ dần vùng làm việc thành các ô vuông kích thước 2Dx2D gọi là cell, với D là kích cỡ mỗi robot (các robot được giả định là giống nhau), mỗi ô chứa bốn ô con, gọi là subcell, có kích thước bằng kích thước robot và bỏ qua những cell bị chiếm (một phần hoặc toàn phần) bởi vật cản Các cell trống tạo thành một cấu trúc đồ thị có các nodes là tâm điểm của từng cell và các cạnh là đoạn thẳng nối tâm điểm các cell liền kề [2]
Trang 23Hình 2.7: Phân chia cell trong thuật toán cây bao trùm
Lớp thuật toán dựa trên cây bao trùm tiêu biểu là thuật toán Spiral-STC (Spiral Spanning Tree Coverage) Spiral-STC [2] là thuật toán tìm đường on-line với đường đi của robot được xây dựng theo hình xoắn ốc Đường đi của robot trong thuật toán này được hình thành bằng cách xuất phát từ cell chứa vị trí bắt đầu của robot rồi đi sang các cell trống bên cạnh theo chiều ngược chiều kim đồng hồ Quá trình tiếp tục tới khi không còn cell nào trống thì robot bắt đầu đi theo chiều ngược lại Do kích thước cell là 2Dx2D, robot sẽ không bao giờ đi qua một subcell hai lần
và sẽ quay lại vị trí ban đầu sau khi đã bao phủ toàn bộ diện tích làm việc Thuật toán có đường đi tối, mỗi ô được thăm chỉ với một lần Hình 2.8 mô tả một ví dụ về đường bao phủ của robot được hình thành khi áp dụng thuật toán Spiral-STC
Trang 24Hình 2.8: Đường bao phủ của robot khi áp dụng thuật toán Spiral – STC
Giải thuật Spiral-STC dần dần xây dựng một cây bao trùm cho đồ thị này và
sử dụng cây bao trùm đó để sinh ra đường dẫn bao phủ như sau: cùng với việc xây dựng cây bao trùm, robot chia nhỏ mọi cell nó bắt gặp thành bốn subcell nhỏ đều có kích thước D và có cùng kích thước cũng như hình dạng với dụng cụ quét Dụng cụ quét đi theo đường dẫn của các subcell vòng quanh dần dần theo cây bao trùm đã được xây dựng cho đến khi toàn bộ tập hợp các cell trống được bao phủ Ở đây một cell trống là “mới” khi tất cả bốn subcell của nó chưa được bao phủ, ngược là thì coi
là “cũ” Tức là chỉ cần 1 subcell trong cell đã được bao phủ, cell đó sẽ được coi là
“cũ”
2.2 Phương pháp giải quyết sử dụng một nhóm robot
Phương pháp tiếp cận này sử dụng nhiều robot hoạt động song song, nhờ đó cho phép rút ngắn thời gian bao phủ không gian làm việc bằng cách phân chia công việc cho từng robot Hơn thế nữa, khi kết hợp hoạt động của nhiều robot hệ thống còn có thể giải quyết nhiều vấn đề khó khác Chẳng hạn các robot có thể trợ giúp lẫn nhau khi có robot gặp lỗi trong quá trình làm việc
Các hệ thống sử dụng nhiều robot thường được xây dựng trên cơ sở mở rộng các thuật toán tìm đường đi bao phủ của một robot như phân chia boustrophedon,
Trang 25cây bao trùm, mạng nơ-ron Ngoài ra cũng có một số thuật toán bao phủ dành riêng cho hệ thống nhiều robot được phát triển
Có thể nêu ra một số tiêu chí chính để đánh giá một thuật toán bao phủ, như
là “tính bao phủ toàn bộ” (tạo ra đường đi bao phủ toàn bộ được khu vực làm việc),
“tính hiệu quả” (robot di chuyển dựa theo thuật toán đó có thể hoàn thành công việc trong thời gian nhanh nhất có thể), “tính mạnh mẽ” (các robot có thể hỗ trợ nhau trong trường hợp có thành viên bị lỗi) Ngoài ra, người ta cũng xét cả tới việc không
dư thừa đường bao phủ, tức là không có một cell được quét lại hai lần trở lên
Có thể lấy ví dụ tiêu biểu cho nhóm các thuật toán sử dụng phương pháp giải quyết bài toán này là thuật toán phân chia boustrophedon sử dụng nhóm robot Thuật toán 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 on-line) Nhóm tác giả của thuật toán 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 đó thuật toán 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 Thuật toán này sử dụng cùng một phương pháp phân tích cell hai chiều như thuật toán bao phủ boustrophedon 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 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
Trang 26lui ở phía trong vùng đó
Hình 2.9: Robot thực hiện bao phủ một cell theo thuật toán phân chia
boustrophedon sử dụng nhóm robot
Trang 27CHƯƠNG 3 LÝ THUYẾT VÀ PHÁT TRIỂN THUẬT TOÁN MSTC 3.1 Các tiêu chí đánh giá
Cũng như đã đề cập ở trong phần phương pháp sử dụng nhóm robot ở trên,
ba tiêu chí chính để đánh giá một thuật toán bao phủ sử dụng nhóm robot là:
- Tính bao phủ toàn bộ: tạo ra đường đi bao phủ toàn bộ được khu vực
làm việc
- Tính hiệu quả: robot di chuyển dựa theo thuật toán đó có thể hoàn thành
công việc trong thời gian nhanh nhất có thể
- Tính mạnh mẽ: các robot có thể hỗ trợ nhau trong trường hợp có thành
viên bị lỗi
Ngoài ra, trong nhiều trường hợp, khi xét tới tính hiệu quả của thuật toán, người ta cũng xét cả tới việc không dư thừa đường bao phủ, tức là không có một ô được quét lại 2 lần trở lên [3]
3.2 Thuật toán bao phủ với một nhóm robot dựa trên cây bao trùm trên môi trường đã biết
3.2.1 Khu vực bao phủ
Ở thuật toán này robot đã biết khu vực làm việc, robot có một bản đồ đầy đủ của khu vực làm việc, các ranh giới khu vực làm việc và tất cả các chướng ngại vật (được giả định là tĩnh) Mỗi Robot có hình dạng công cụ liên quan giống như một hình vuông kích thước D Mục tiêu là để bao phủ các khu vực làm việc sử dụng công cụ này Trong các ứng dụng thực tế, công cụ này có thể tương ứng với các cảm biến chắc chắn là được quét qua các khu vực làm việc để phát hiện một đặc trưng quan trọng, và kích thước D có thể được xác định bởi phạm vi hiệu quả của
bộ cảm biến Giả định các robot có thể di chuyển với công cụ liên tục trong bốn hướng cơ bản (lên / xuống, trái / phải), và có thể xác định vị trí bản thân trong khu vực làm việc để trong phạm vi ô con kích thước D
Trang 28các nodes, với nodes là những điểm trung tâm của mỗi ô, và E là tập các cạnh, là những đoạn thẳng nối những điểm trung tâm của các ô lân cận Xây dựng một cây bao trùm cho đồ thị G sử dụng bất kỳ thuật toán xây dựng cây bao trùm S0, , Sk-1
là vị trí ban đầu của các robot trong phạn vi phân tích chia ô của khu vực làm việc
Các robot được giả định là đồng nhất một tốc độ và kích thước công cụ của chúng D Sử dụng N để ám chỉ số lượng ô trong lưới, và n để ám chỉ số lượng các ô con Khu vực làm việc liên tiếp, tức là, tất cả các ô của khu vực làm việc đều có thể truy cập từ bất kỳ vị trí bắt đầu nào
3.2.2 Thuật toán MSTC Offline
3.2.2.1 Xây dựng cây bao trùm
Khi xây dựng cây trong một hệ thống với duy nhất một robot thì ảnh hưởng của cấu trúc của cây về mặt lý thuyết không ảnh hưởng đến thời gian bao phủ Rõ ràng, người ta có thể muốn xây dựng cây bao trùm với đặc điểm đặc biệt, ví dụ như giảm thiểu số lần chọn hướng Tuy nhiên, thời gian bao phủ vẫn được bảo đảm bởi các thuật toán STC là tuyến tính với khu vực làm việc dựa trên lưới cell vuông, vì mỗi cell trừ các cell biên được bao phủ một lần, do đó tổng thời gian bảo hiểm là N Mặt khác, trong các hệ thống đa robot, cấu trúc của cây có thể ảnh hưởng rất quan trọng vào thời gian bao phủ Sự lựa chọn của cây bao trùm dựa vào vị trí ban đầu của các robot Bất kỳ thuật thoán bao phủ đa robot nếu đồng nhất đều dựa trên một cây bao trùm thì cải thiện tối đa 2 lần [3] Có thể chứng minh, gọi Di là khoảng cách giữa robot Ri và Ri+1 Tính toán khoảng cách lớn nhất Dmax= max R1≤i≤N{Di} thời gian bao phủ sử dụng thuật toán không quay lui Dựa vào Dmax có thể xác định thời gian bao phủ là A Khi robot đồng nhất dựa trên một cây bao trùm thì thời gian bao phủ giảm xuống [𝐷𝑚𝑎𝑥
2 ] Nếu trường hợp xấu nhất với robot Dmax di chuyển đến các robot khác thì đối với một đoạn khác Dj đòi hỏi thời gian tối đa là nếu cho phép quay lui sẽ là t' >[𝐷𝑚𝑎𝑥
2 ]nói cách khác nó sẽ cải thiện được 𝐷𝑚𝑎𝑥
𝑚𝑎𝑥{[𝐷𝑚𝑎𝑥2 ],𝑡} ⩽ 2
Trang 29Mã giả thuật toán 1:
Thuật toán 1: Creat_tree(W, S0, , Sk-1)
Đầu vào:S0, , Sk-1 vị trí ban đầu của các robot, W môi trường làm việc là đồ
thị dạng lưới
Các bước tiến hành:
1 Xây dựng các cây con
2 For Ri,1 ⩽ 𝑖 ⩽ 𝑘 do Với mỗi robot Ri
3 Tìm và tính toán các cell liền kề mới (trái, phải, trên, dưới)
list_cell ← Ni
4 If list_cell.size()>1 then
5 Tính toán khoảng cách Manhattan và chọn một cell có
khoảng cách Manhattan tối đa tối thiểu đến các robot khác
6 If list_cell size() =0 then
7 Di chuyển thì thực hiện thủ tục Hilling(quay về nút gốc)
8 Tìm cầu của cho k cây con
a) Tìm ngẫu nhiên hợp lệ cầu B giữa các các cây con b) Tính toán thiết lập khoảng cách giữa hai cây liên tiếp Si c) Thiết lập giá trị khởi tạo ban đầu Best_result, S0
d) If Si > Best_result then
Best_result = Si
9 Trả về cây bao trùm Best_result
Giải thích mã giả thuật toán 1:
Thuật toán 1 [3] là thuật toán xây dựng cây với hai bước quan trong đó là tạo cây con và tìm cầu nối bất kỳ trên cây để được cây hoàn chỉnh Bước 1 với mỗi robot i với 1 ⩽ 𝑖 ⩽ 𝑘 xây dựng 1 các lá cho cây con bằng cách tìm các cell liên kề theo bốn hướng (trái, phải, trên, dưới) việc tìm thấy nếu 1 cell thì đi đến cell đó
Trang 30điểm bắt đầu S0, nếu chọn ngẫu nhiên được cầu Si có khoảng cách giữa hai cây con
là xa hơn S0 thì lấy cầu đó
Hình 3.1: Xây dựng cây bao trùm
3.2.2.2 MSTC Offline không quay lui
Công việc bao phủ được chia làm hai giai đoạn [3] Đầu tiên, thuật toán 2 xây dựng một đường đi STC sử dụng dựa trên cây đã tạo dựa trên thuật toán 1 theo hướng ngược kim đồng hồ Thuật toán 3 là sử dụng đường đi STC của thuật toán 2
để thực hiện việc bao phủ, mỗi robot đươc xác định vị trí ban đầu trên đường đi và dựa vào đó để đi đến vị trị của robot khác Điều này được thực hiện khi đảm bảo rằng các robot có thể giúp đỡ nếu robot kế tiếp bị lỗi Lưu ý rằng việc thực hiện của thuật toán 2 là hoàn toàn không phải tập trung, như mỗi robot thực hiện công việc độc lập của mình
Mã giả thuật toán 2:
Thuật toán 2 kế hoạch đường đi MSTC (W, S0, , Sk−1)
Đầu vào:S0, , Sk-1 vị trí ban đầu của robot, W là khu vực làm việc
Các bước tiến hành:
Trang 315 Trả về đường đi P, ứng với các điểm ban đầu của robot S0, , Sk−1
Giải thích mã giả thuật toán 2:
Bắt đầu từ điểm S0, dựa vào cây khung của thuật toán 1, thuật toán 2 xây dựng một cây bao trùm cho khu vực làm việc W xây dựng đường đi bao trùm dòng
3 Trả về một con đường hướng ngược kim đồng hồ dọc theo cây bao trùm bắt đầu tại vị trí S0 đi qua tất cả các điểm bắt đầu của tất cả robot dòng 5 hình 3.2 Việc xây dựng các cây bao trùm trong thuật toán 1 có thể được thực hiện bởi một robot và truyền tin tới những robot khác, hoặc các robot biết vị trí các robot khác và được thực hiện bởi mọi con robot độc lập trong khi nó sử dụng cùng một thuật toán cho việc xây dựng cây
Trang 32Mã giả thuật toán 3:
Thuật toán 3 MSTC không quay lui (W, S0, , Sk−1)
Đầu vào:S0, , Sk-1 vị trí ban đầu của robot, W là khu vực làm việc
Các bước tiến hành:
1 i ← ID của robot hiện tai
2 t ← i ⊕ 1 vị trí của robot tiếp theo, theo chu kỳ
3 while vị trí hiện tại ≠ St -1do
4 Di chuyển dọc theo STC đến St, hướng ngược kim đồng hồ
5 Thông báo hoàn thành đoạn đường[Si, St )
6 while robot Rt khác đang còn sống và các vị trí [S0, , Sk-1, S0 ] chưa hoàn thành do
7 Chờ
8 if (robot Rt không còn sống và vị trí [S0, , Sk-1, S0] chưa hoàn
thành) then
9 i ← t Lấy ID của robot tiếp theo
10 t ← t ⊕ 1 lấy vị trí của robot tiếp theo của robot tiếp theo
11 quay về bước 3
12 Kết thúc vòng lặp
13 Dừng
Giải thích mã giả thuật toán 3:
Đường đi đã được xây dựng và chia thành nhiều phần, thuật toán 1 được thực hiện xây dựng cây bao trùm dựa trên vị trí ban đầu của tất cả các robot Sau giai đoạn khởi tạo (ở dòng 1-2), mỗi robot bắt đầu bao phủ phần của mình [Si, , Sj), từ
vị trí hiện tại Si của nó đến vị trí ban đầu Sj của robot tiếp theo, dọc theo đường đi STC theo cây bao trùm có hướng đi ngược chiều kim đồng hồ (dòng 3-4) Từ dòng 6-11 đảm bảo tính mạnh mẽ: Nếu một robot lỗi, robot đi tới điểm bắt đầu của robot
đó có trách nhiệm bao phủ phần của nó
Trang 333.2.2.3 Phân tích các tiêu chí của thuật toán
- Tính mạnh mẽ
Xét về mặt lý thuyết, thuật toán này đã đảm bảo được tính mạnh mẽ Robot
Ri khi thực hiện xong công việc của mình theo hướng ngược kim đồng hồ (đến vị trí
Si đến Sj vị trí tiếp theo của robot Rj) và nếu robot Rj lỗi thì Ri sẽ thực hiện công việc của robot Rj và công liên tục đến khi nó nhận được tất cả robot khác đã thực hiện xong
o Trong trường hợp 𝑘 > 1:
Với cùng một cây bao trùm chứa toàn bộ các cell trên khu vực làm việc W vì cây bao trùm chính là sự kết hợp của các cây con Mỗi cây con là việc tìm kiếm các nodes tìm theo bốn hướng Cell thuộc nodes của cây con này sẽ
Trang 34được thăm ít nhất 1 lần
- Tính không dư thừa
Nếu tất cả robot thực thi theo thuật toán trên và không có robot nào bị chết, thì sẽ không có subcell nào đi nhiều hơn 1 lần điều này có thể chứng minh như sau:
Nếu không có robot nào lỗi thì việc xây dựng đường đi dựa trên cùng một cây bao trùm dựa vào vị trí ban đầu của mỗi robot nên robot nhận được đường đi của robot đó ví dụ robot i hoàn thành đường đi [Si, , Sj) đến robot j Cây bao trùm
là cây chứa các cell mỗi cell chỉ thuộc duy nhất một nodes trên cây (ô chỉ thuộc duy nhất một cây con, mỗi cây con chỉ chứa 1 cell duy nhất trên cây) Nếu không có robot nào lỗi thì tất cả robot đi theo đường đi dựa trên cây bao trùm Đường đi dựa vào cây bao trùm đi theo chiều ngược kim đồng hồ từ S0, , Sk-1, S0 thì mỗi subcell thuộc cell sẽ được thăm 1 lần
3.3 Thuật toán bao phủ với một nhóm robot với môi trường chưa rõ
3.3.1 Khu vực bao phủ
Mỗi robot là một công cụ có kích thước là D để dễ thuận tiện hình dạng mỗi robot xem như một hình vuông kích thước D Mục tiêu là để bao phủ các khu vực làm việc sử dụng công cụ này Trong các ứng dụng thực tế, công cụ này có thể tương ứng với các cảm biến và kích thước D có thể được xác định bởi phạm vi hiệu quả của bộ cảm biến Các robot có thể di chuyển liên tục trong bốn hướng cơ bản (lên, xuống, trái, phải), và có thể xác định vị trí bản thân trong khu vực làm việc để trong phạm vi một ô con kích thước D
Robot không biết ranh giới khu vực làm việc chính xác của tất cả các vị trí chướng ngại vật (được giả định là tĩnh), nhưng các vị trí ban đầu của chúng độc lập Chia khu vực này thành các ô vuông có kích thước 2Dx2D, mỗi ô gồm bốn ô con kích thước DxD Nếu ô có một phần là chướng ngại vật thì xem như ô đó chính là chướng ngại vật Biểu thị số lượng ô trong lưới với N, và chỉ rõ số lượng ô con của
n, tức là, N = 4n Khu vực ban đầu là không được biết như vậy mỗi ô ban đầu được coi là trống
Điểm khởi đầu của thuật toán là khu vực làm việc và k robot với vị trí ban
Trang 35đầu độc lập: A0, , Ak-1 Các vị trí ban đầu của mỗi robot được giả định là trong một cell không có chướng ngại vật, và robot sẽ biết vị trí của nó Giả định làm việc của thuật toán, robot có thể xác định vị trí của chính nó trong triển khai lưới của khu vực làm việc
3.3.2 Thuật toán ORMSTC
Như đã đề cập ở trên, STC (Spanning Tree Coverage) là giải thuật on-line dùng cho một robot di động, chia nhỏ không gian làm việc thành bản đồ [3] Dựa trên thuật toán này, nhằm tận dụng được những điểm mạnh của nhóm robot, người
ta đã phát triển các thuật toán sử dụng cây bao trùm bao trùm sử dụng nhiều robot ORMSTC là viết tắt của cụm từ Online Robust Multi-robot STC Đây là thuật toán MSTC trong trường hợp on-line
Mã giả thuật toán 4:
Thuật toán 4 On-line ORMSTC initialization ()
Đầu vào: W là khu vực làm việc, vị trí của robot
Các bước tiến hành:
1 Chia khu vực làm việc thành một lưới các cell có kích cỡ 2Dx2D
2 Tiếp tục phân chia các cell thành 4 subcell có kích cỡ DxD
3 𝑖 ← ID của robot hiện tại
4 if 𝐴𝑖 ≠ chính giữa một subsell then
10 Thông báo 𝑆𝑖 là cell khởi đầu của mình tới tất cả các robot
11 Cập nhập thông tin map về các vị trí ban đầu của các robot khác:
Trang 36Giải thích mã giả thuật toán 4:
Thuật toán 4 ở trên là khởi tạo của thuật toán MSTC on-line nói chung Tất
cả các robot cùng chạy khởi tạo này Mục đích chính của khởi tạo là để thiết lập môi trường làm việc cho các robot, cho phép robot biết được mình ở đâu trong bản
đồ Hai dòng đầu tiên là việc phân chia các cell và subcell theo đúng như những giả định của các thuật toán STC khác Dòng 3 gán cho một robot cụ thể một định danh nhằm xác định nó với các robot khác Từ dòng 4 tới dòng 8 là đoạn để robot di chuyển vào đúng chính giữa một subcell Do ban đầu vị trí của các robot là ngẫu nhiên, nên sau quá trình phân chia cell và subcell ở dòng 1 và dòng 2, khả năng các robot không nằm đúng một subcell là rất cao, bởi vậy cần đưa robot về đúng subcell, phục vụ cho việc di chuyển ở các bước tiếp theo Ở đây cũng cần chú ý là các robot cần phải di chuyển vào đúng subcell có số thứ tự đã định sẵn Lý do là bởi nếu không làm như vậy, hệ quy chiếu của các robot sẽ không giống nhau, khiến cho việc các robot nhìn 1 cell là cell có thể đi vào hay là vật cản bị ảnh hưởng Sau khi
vào đúng một subcell, robot i nhận một subcell xác định làm subcell khởi đầu (dòng
8) và nhận một cell xác định làm cell khởi đầu (dòng 9) Sau khi nhận vị trí ban đầu,
nó thông báo vị trí của mình cho các robot khác (dòng 10), và đồng thời cũng cập nhật lại vị trí ban đầu của các đồng nghiệp của nó (dòng 11) Tại dòng 12, một
mảng connection được khởi tạo với toàn giá trị null, nhằm mục đích lưu kết nối với các đồng nghiệp sau này Mảng connection này sẽ được trình bày kỹ hơn trong phần
giải thích mã giả thuật toán 5 ở dưới
Mã giả thuật toán 5:
Thuật toán 5 ORMSTC (W,X)
Đầu vào: Cell robot vừa đi ra W (cell cha), cell robot vừa đi vào X
Trang 375 if 𝑁𝑖 đã nằm trong một cạnh của cây bao trùm của một 𝑗 robot khác
then
6 Hỏi robot 𝑗 xem nó còn sống không
7 if robot 𝑗 trả lời then
17 Xóa cạnh nối với cell robot 𝑗 đã đi và thông báo
18 Vẽ cạnh từ 𝑋 tới 𝑁𝑖 và thông báo di chuyển tới 𝑠𝑖
19 Di chuyển tới một subcell của 𝑁𝑖 bằng cách đi theo bên phải
cạnh cây bao trùm
20 Thực thi ORMSTC(X, 𝑁𝑖)
21 if 𝑋 ≠ 𝑆𝑖 then
22 Di chuyển lại từ 𝑋 tới 𝑊 dọc theo bên phải cạnh cây bao trùm
23 return từ chỗ gọi đệ quy
24 if 𝑊 ≠ 𝑣ậ𝑡 𝑐ả𝑛 then
25 Thực thi ORMSTC(X, W)
26 Trở về subcell khởi đầu 𝑠𝑖 bằng cách đi theo bên phải cạnh cây bao trùm
27 Thông báo hoàn thành công việc của mình
Trang 3830 if robot 𝑗 đã chết then
31 Xóa cạnh nối với cell robot 𝑗 đã đi và thông báo
32 Thông báo mình chưa hoàn thành công việc
33 Lựa chọn xem 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑖𝑜𝑛[𝑗][0] hay 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑖𝑜𝑛[𝑗][1] gần với
mình hơn, di chuyển theo chiều kim đồng hồ hay ngược chiều kim đồng hồ theo cạnh của cây bao trùm của mình thì thích hợp hơn
34 Di chuyển theo hướng đã chọn ở trên tới điểm đã kết nối với
robot đã chết
35 𝑋 ←cell mình kết nối với robot j
36 𝑌 ←cell robot j kết nối với mình
37 Xóa robot j khỏi mảng connection và thông báo
38 Vẽ cạnh từ 𝑋 tới 𝑌 và thông báo
39 Di chuyển tới subcell của 𝑌 bằng cách đi theo bên phải cây bao
trùm
40 Thực thi ORMSTC(X, Y)
41 Kết thúc vòng lặp
42 Dừng
Giải thích mã giả thuật toán 5:
Thuật toán 5 mô tả quá trình làm việc của một robot Tất cả các robot đều thực thi thuật toán này, bởi vậy có bao nhiêu robot thì sẽ có bấy nhiêu thể hiện của thuật toán này Từ dòng 1 tới dòng 27 của thuật toán này, về cơ bản là giống thuật toán Spiral-STC Tuy nhiên, nó thêm vào đó một điểm quan trọng, đó là có kiểm tra xem robot đồng nghiệp có còn sống hay không Mảng connection dùng để lưu kết nối giữa cạnh được tạo bởi một cell của robot hiện tại với một cell của robot mà nó gặp trên đường di chuyển Giá trị của 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑖𝑜𝑛[𝑗][0] lưu giá trị lần gặp đầu tiên của robot hiện tại với robot 𝑗, và giá trị của 𝑐𝑜𝑛𝑛𝑒𝑐𝑡𝑖𝑜𝑛[𝑗][1] lưu giá trị lần gặp gần nhất của robot hiện tại với robot 𝑗 Giá trị này được lưu nhằm mục đích phục vụ cho
Trang 39công việc (dòng 33) Một điểm quan trọng nữa khiến nhóm robot khác biệt với đơn robot, đó là có kết nối giữa các robot Như trong mã giả, ta có thể thấy robot hiện tại liên tục có các thông báo với các robot khác để cập nhật thông tin Robot hiện tại, sau khi hoàn thành nhiệm vụ của mình, nó chưa dừng lại hẳn mà vẫn tiếp tục kiểm tra định kỳ xem các robot có kết nối với nó còn sống hay không (dòng 29) Nếu có robot có kết nối với nó đã chết, robot hiện tại sẽ tiến hành giúp đỡ robot kia, nhằm đảm bảo công việc chung được hoàn thành
3.3.3 Phân tích các tiêu chí của thuật toán
3.3.3.1 Tính mạnh mẽ
Xét về mặt lý thuyết, thuật toán này đã đảm bảo được tính mạnh mẽ Các robot khi gặp một cell cũ của một đồng nghiệp khác, nó đã tiến hành lưu lại vị trí gặp nhau đó nhằm giúp đỡ trong tình huống robot đồng nghiệp bị chết sau này
Đoạn sau thuật toán, robot đã hoàn thành công việc nhưng chưa hoàn toàn dừng hẳn ngay lập tức, mà vẫn tiếp tục hoạt động cho đến khi tất cả các đồng nghiệp hoàn thành công việc Trong khi các đồng nghiệp chưa hoàn thành, nó định
kỳ kiểm tra trạng thái của các robot đồng nghiệp xem có robot nào bị chết hay không
Trang 40một đường bao phủ cho một vài cell mà nó đảm nhiệm Các robot khác sẽ xem như các cell này đã bị chiếm, và coi nó chính xác như việc nó là một cell được lấp đầy bởi một vật cản Bởi vậy, tất cả những cell khác cũng được chia thành 𝑘 − 1 đường đi và được 𝑘 − 1 robot bao phủ, giống như với giả
sử ban đầu được đặt ra Robot 𝑖 cũng xem tất cả các cell bị chiếm bởi 𝑘 − 1 robot kia như là một vật cản, do đó nhiệm vụ của nó trở thành bao phủ toàn
bộ một khu vực làm việc, giống như với trường hợp 𝑘 = 1 ở trên
3.3.3.3 Tính không dư thừa
Nếu tất cả robot đều thực thi theo thuật toán ở trên, và không robot nào bị chết, sẽ không có cell nào bị đi nhiều hơn 1 lần Điều này có thể chứng minh như sau:
Nếu không có robot nào bị lỗi, và mỗi robot chỉ đi theo những cell được xây dựng bởi cây bao trùm Nếu một cell đã được robot khác đi, nó đã được đánh dấu là cell cũ, bởi vậy không có một robot nào khác có thể đi vào cell đó nữa Nếu robot không có quay lui, sẽ không có một cell nào bị đi quá nhiều hơn 1 lần
3.4 Đề xuất cải tiến và phát triển thuật toán MSTC
3.4.1 Đề xuất và phát triển thuật toán ORMSTC dựa trên cách tạo cây con trên MSTC-offline
3.4.1.1 Khu vực bao phủ
Mỗi robot là một công cụ có kích thước là D để dễ thuận tiện hình dạng mỗi robot xem như một hình vuông kích thước D Mục tiêu là để bao phủ các khu vực làm việc sử dụng công cụ này Trong các ứng dụng thực tế, công cụ này có thể tương ứng với các cảm biến chắc chắn là được quét qua các khu vực làm việc để phát hiện một đặc trưng quan trọng, và kích thước D có thể được xác định bởi phạm
vi hiệu quả của bộ cảm biến Các robot có thể di chuyển liên tục trong bốn hướng
cơ bản (lên, xuống, trái, phải), và có thể xác định vị trí bản thân trong khu vực làm việc để trong phạm vi một ô con kích thước D
Không biết ranh giới khu vực làm việc chính xác và tất cả các vị trí chướng ngại vật (được giả định là tĩnh), nhưng các vị trí ban đầu của chúng độc lập Chia