5.1.1.Khả năng di chuyển của robot
Bằng việc sử dụng 2 động cơ dẫn động độc lập, tác giả luận văn đã xây dựng các hàm con để điều khiển robot di chuyển.
Hàm Turn Left() : giúp robot xoay góc 900 sang trái nhờ vào xử lí số encoder của từng động cơ và bộ điều khiển PID vị trí.
Hàm Turn Right(): giúp robot xoay góc 900 sang phải.
Hàm Run Straight(): giúp robot bám tường bên trái hoặc phải với khoảng cách xác định để xe di chuyển theo tường. Đọc encoder để đánh dấu từng ô robot đi qua.
Robot sẽ dừng khi gặp tường phía trước nhờ vào cảm biến siêu âm ở giữa hoặc so sánh số encoder trong một ô di chuyển.
5.1.2.Khả năng nhận dạng vật cản của bộ 3 cảm biến siêu âm:
Việc trang bị 3 cảm biến siêu âm ở ba hướng trái, phải, thẳng giúp cho mô hình có thể dễ dàng nhận biết được đặc tính của ô đang đứng trong mê cung như đường cụt, ngã ba, ngã tư, … Từ đó, song song với quá trình di chuyển qua các ô, robot cập nhật các mảng dữ liệu tường để xây dựng được bản đồ mê cung hoàn thiện.
5.1.3.Khả năng di chuyển trong mê cung theo thuật toán:
Bằng việc nhúng chương trình tự hành theo thuật toán Trémaux xuống vi điều khiển trung tâm, từ vị trí bắt đầu mặc định, robot có khả năng di chuyển trong mê cung theo các bước ưu tiên quy định trong thuật toán, nhận dạng các bức tường và xây dựng mảng dữ liệu mê cung.
Robot cũng có khả năng di chuyển theo đường ngắn nhất tới điểm đích khi đã được gởi lệnh từ máy tính theo thuật toán floodfill.
Thực nghiệm 5.2.
5.2.1.Mê cung thực nghiệm
Mê cung thực nghiệm là một mê cung bất kì được xây dựng theo kích thước ở chương 3 gồm 8x8 ô. Mô hình mê cung như hình sau:
Hình 5.1. Robot và 1 góc của mê cung 5.2.2.Kết quả thực nghiệm
Thực nghiệm với một mê cung chưa biết trước có các ngõ vào và ra IN, OUT như hình.
Tiến hành cho robot di chuyển trong mê cung theo các bước ưu tiên tại vị trí mặc định là IN. Robot chạy ba lần với các thứ tự ưu tiên đi thẳng, rẽ trái, rẽ phải như sau:
- Lần 1: Ưu tiên đi thẳng, nếu có tường ở phía trước thì rẽ trái, nếu có tường ở phía trước và bên trái thì rẽ phải.
- Lần 2: Ưu tiên đi thẳng, nếu có tường ở phía trước thì rẽ phải, nếu có tường ở phía trước và bên phải thì rẽ trái.
- Lần 3: Ưu tiên rẽ phải, nếu có tường bên phải thì đi thẳng, nếu có tường phía trước và bên phải thì rẽ trái.
Trong luận văn này tác giả không xét đến trường hợp Robot gặp cả tường bên trái, bên phải và phía trước.
Lần đầu tiên Robot bắt đầu dò mê cung, trong file mydata.txt của Matlab sẽ không có dữ liệu, giao diện Matlab GUI sẽ không có các đường đỏ biểu diễn bức tường.
Khi Robot bắt đầu di chuyển tại vị trí mặc định là IN, nó sẽ được set các thông số ban đầu (Huong=3, X=1, Y=1) theo quy định về hướng, tọa độ đã được nêu ở chương 4.
Nếu di chuyển được một quãng đường đúng bằng số xung encoder đã định trước Robot lập tức truyền về thông tin của một ô trong mê cung mà nó thu thập được bằng bộ 3 cảm biến siêu âm, từ đó người dùng có thể theo dõi trực tiếp các bước di chuyển của Robot.
Thông tin của một ô trong mê cung sẽ được cập nhật lần lượt vào file mydata.txt. Sau khi robot di chuyển xong một lần thì một phần bản đồ mê cung đã được lưu trữ.
Robot luôn bắt đầu di chuyển tại vị trí IN, nó sẽ di chuyển đến khi nào trở về vị trí IN, OUT hoặc lặp lại các bước di chuyển giống nhau nhiều lần mà không thoát ra được thì Robot sẽ kết thúc lần di chuyển đó.
Khi cho Robot chạy lần 1, bản đồ mê cung thu được như hình với đường đỏ là các bức tường trong mê cung robot đã đi qua, đường xanh có mũi tên biểu diễn hướng đi của Robot.
Hình 5.3. Bản đồ mê cung sau khi chạy lần 1
Theo thứ tự ưu tiên ở lần 1 thì sau khi di chuyển Robot sẽ trở về vị trí IN, như vậy dữ liệu bản đồ lần thứ nhất đã được cập nhật vào file mydata.txt. Dữ liệu này sẽ được sử dụng ở lần kế tiếp.
Khi cho Robot chạy lần 2 thì Robot sẽ không tìm được đường ra, robot sẽ lặp lại chu trình di chuyển của mình như hình.
Hình 5.4. Bản đồ mê cung sau khi chạy lần 2
Tuy nhiên Robot vẫn cập nhật dữ liệu bản đồ mê cung theo file mydata.txt đã tìm được ở lần chạy thứ nhất. Có nghĩa là bản đồ mê cung lần chạy thứ nhất và lần chạy
thứ 2 đã được chồng lên nhau. Dữ liệu này lại tiếp tục được sử dụng trong lần chạy thứ 3.
Khi cho Robot chạy lần 3 thì Robot trở ra đúng vị trí OUT, đồng thời dữ liệu bản đồ mê cung lại tiếp tục được cập nhật vào file mydada.txt đã sử dụng ở hai lần trước. Như vậy dữ liệu bản đồ mê cung cả ba lần chạy đã được chồng lên nhau.
Hình 5.5. Bản đồ mê cung sau khi chạy lần 3
Tổng cộng cả 3 lần Robot đã chạy được 46 ô. Như vậy cơ bản Robot đã dò tìm được mê cung, dữ liệu về mê cung đủ cho người dùng sử dụng các thuật toán để tìm đường đi ngắn nhất sau này. Kết quả bản đồ mê cung sau 3 lần chạy của Robot như hình.
Bản đồ mê cung được dựng khi robot dò mê cung mô hình nhiều lần. So với mô hình mê cung thực tế, bản đồ hệ thống thu được gần như hoàn chỉnh.
Theo những phân tích đã nêu ở mục 2.8 chương 2. Tác giả sử dụng thuật toán Floodfill để tìm đường đi ngắn nhất dựa trên cơ sở bản đồ mê cung và dữ liệu trong file mydata.txt đã tìm được ở phần trên.
Sau khi áp dụng thuật toán Floodfill, đường đi ngắn nhất của mê cung như hình với các đường xanh là tường mê cung, đường đỏ là đường đi ngắn nhất từ điểm IN đến điểm OUT.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 1. Những vấn đề đã làm đƣợc:
- Tìm hiểu các thuật toán di chuyển tìm đường trong mê cung. - Lựa chọn, cải tiến và mô phỏng thuật toán Trémaux trên Matlab.
- Xây dựng chương trình trao nhận dữ liệu, chương trình xử lý dữ liệu mảng để vẽ lại bản đồ mê cung và đưa ra đường đi ngắn nhất.
- Thiết kế cơ khí, thiết kế hệ thống điều khiển cho robot tự hành. - Xây dựng mô hình robot, xây dựng mô hình mê cung.
- Tiến hành điều khiển các module của mô hình để thực nghiệm giải thuật. - Việc trao đổi dữ liệu thực hiện liên tục, vị trí của robot sẽ được hiển thị theo thời gian thực trên máy tính.
2. Những vấn đề chƣa làm đƣợc:
- Thiết kế cơ khí còn sơ sài, đơn giản.
- Nguyên nhân: thiếu kinh nghiệm thiết kế cơ khí thực tế, không thường xuyên thực hiện bản vẽ cơ khí trong quá trình học.
- Mô hình chạy gồm bốn sợi dây điện , khi chuyển động sẽ vướng vào tường, làm thiếu thẩm mĩ và ảnh hưởng đến việc chuyển động của mô hình.
3. Hƣớng phát triển đề tài:
- Thiết kế khối nguồn di động riêng cho mạch công suất và mạch điều khiển, tránh hiện tượng dòng ngược về mạch điều khiển gây cháy vi điều khiển.
- Thiết kế thêm các giao diện người dùng (GUI) để thuận tiện hơn trong quá trình điều khiển Robot.
TÀI LIỆU THAM KHẢO
[1] Sebastian Thrun (2002). Robot Mapping: A Survey.
[2] Joseph Jones. Mobile Robots: Inspiration to Implementation.
[3] Vassilis Varveropoulos. Robot Localization and Map Construction Using Sonar Data.
[4] Fawaz Y. Annaz , University of Nottingham, Department of Electrical & Electronic Engineering, Faculty of Engineering, Jalan Broga, 43500 Semenyih, Malaysia, “A Mobile Robot Solving a Virtual Maze Environment ”, IJECCT 2012. [5] Student of Masters of Technology, Yadavindra College of Engineering, Talwandi Sabo, Bathinda, India, “A new shortest path finding algorithm for a maze solving robot with simulator”, July-December 2011.
[6] Phan Trọng Đạt, Phạm Đức Linh, Nguyễn Văn Lượm, Nguyễn Thái Sơn, Phan Lương Tín, Lê Đăng Trọng. Lớp 07CLC, Khoa Kỹ sư Chất Lượng Cao, Trường Đại học Bách khoa, “Thiết kế robot mini tự hành dò đường trong mê cung”, Tuyển tập Báo cáo Hội nghị Sinh viên Nghiên cứu Khoa học lần thứ 7 Đại học Đà Nẵng năm 2010. [7] Trần Hữu Quế. Vẽ Kĩ Thuật Cơ Khí.
[8] Francisco Bonin-Fon. Visual Navigation for Mobile Robots: a Survey.
[9] Reza N. Jazar, Theory of Applied Robotics. Nhà xuất bản Springer.
[10] Nguyễn Hữu Lộc, (2004). Cơ sở thiết kế máy. Nhà xuất bản Đại học Quốc Gia Tp. HCM.
[11] http://robotics.ee.uwa.edu.au/eyebot/
[12] http://www.robotshop.com/en/caddytrek-mobile-autonomous-robotic-golf-cart- caddy-black.htm