Phạm vi nghiên cứuNghiên cứu và mô phỏng thuật toán tìm đường đi ngắn nhất cho robot trongtrường hợp có vật cản.Nghiên cứu, thiết kế và chế tạo robot hoạt động độc lập trong điều kiệ
Phương pháp nghiên cứu
Thực hiện nghiên cứu thuật toán tìm đường đi ngắn nhất trên ngôn ngữ python
Mô phỏng robot hoạt động trên thư viện pygame.
Code arduino với ngôn ngữ C cho robot chạy thực tế
Khảo sát, tìm hiểu, thu thập thông tin từ Internet, sách báo,
Tổng hợp và phân tích thông tin
Thiết kế và thi công Thử nghiệm, đánh giá và hiệu chỉnh sản phẩm a Nội dung thực hiện
Tìm hiểu nguyên lý hoạt động của robot dò đường.
Nghiên cứu thuật toán tìm đường đi ngắn nhất.
Nghiên cứu ngôn ngữ cần dùng để phù hợp với thuất toán.
Nghiên cứu về mô phỏng thuật toán và robot trên phần mềm.
Nghiên cứu thuật toán cho robot có thể chạy trên bản đồ ngắn nhất tìm được
Thiết kế lắp đặt mạch robot cho khung robot dò đường có sẵn.
Thực nghiệm và đưa ra kết quả cho mô phỏng và robot vận hành thực tế. Nhận xét và đánh giá. b Kế hoạch thực hiện.
Tuần 1: Tìm hiểu nguyên lý hoạt động của robot dò đường.
Tuần 2: Nghiên cứu thuật toán tìm đường đi ngắn nhất.
Tuần 3: Nghiên cứu ngôn ngữ cần dùng để phù hợp với thuất toán.
Tuần 4-6: Nghiên cứu về mô phỏng thuật toán và robot trên phần mềm.
Tuần 7-9: Nghiên cứu thuật toán cho robot có thể chạy trên bản đồ ngắn nhất tìm được trước đó.
Tuần 10: Thiết kế lắp đặt mạch robot cho khung robot dò đường có sẵn.
Tuần 10-12: Thực nghiệm và đưa ra kết quả cho mô phỏng và robot vận hành thực tế.
Tuần 13: Nhận xét và đánh giá.
TỔNG QUAN VỀ ĐỀ TÀI
1Giới thiệu chung
Cuộc cách mạng công nghiệp là những bước phát triển vượt bậc của con người, cuộc cách mạng cho phép ứng dụng rộng rãi các robot trong nhiều lĩnh vực của cuộc sống Yếu tố này phù hợp với nhận thức về vấn đề an toàn trong công việc, robot thay thế cho con người trong sản xuất, trong lao động, trong các nhà máy… điều đó đã góp phần vào sự xuất hiện nhu cầu sử dụng các robot Ngày nay trong đời sống có rất nhiều công việc do tính chất công việc nặng nhọc, môi trường làm việc khó khăn độc hại rất nguy hiểm và tác hại trực tiếp đối với con người Một số nơi địa hình quá khó khăn để di chuyển (vùng rừng núi, sa mạc, vùng có lở núi, động đất, vùng bị cháy rừng, vùng nhiễm phóng xạ, khu vực bị khủng bố…) Ở những nơi này con người rất cần tới sự hỗ trợ của robot Với mô hình robot đa năng có sự tuỳ biến cao, dễ lắp đặt và vận chuyển, được thiết kế và lập trình từ máy tính cá nhân, robot có thể làm việc độc lập theo chu trình được cài đặt sẵn hoặc theo sự điều khiển từ xa qua vô tuyến từ người điều khiển, tính chất và công việc cụ thể được thay đổi dễ dàng, khả năng kết nối với các thiết bị chuyên dụng linh hoạt. Robot có kích thước tương đối và làm việc được trong nhiều môi trường khắc nghiệt về thời tiết, khí hậu độc hại và nguy hiểm đối với con người Ngoài ra robot có thể được thiết kế cho phù hợp với các công việc mang tính chất tự động hoá cao, có thể ứng dụng vào các dây chuyền sản xuất tự động ở các nhà máy, xí nghiệp, các khu công nghiệp, khu chế xuất… Hiện nay hầu hết các thiết bị robot và dây chuyền tự động hoá được sử dụng trong các ngành công nghiệp sản xuất và chế biến đều được nhập từ nước ngoài rất đắt tiền Trong khi nhu cầu ở nước ta đang rất cao và trong nước có khả năng chế tạo sản xuất để phù hợp với điều kiện làm việc ở Việt Nam Lĩnh vực thiết kế, chế tạo robot và các thiết bị điều khiển tự động rất mới mẻ và có tiềm năng rộng lớn không những ở trong nước mà còn cả trên thế giới Việc thâm nhập, nghiên cứu và chế tạo một số mô hình điều khiển tự động như robot thông minh, robot thăm dò, robot sản xuất là một hướng cần thiết nhằm rút ngắn khoảng cách giữa khoa học công nghệ trong nước và trên thế giới trong lĩnh vực này.
2Giới thiệu một số hệ thống hiện nay
Hiện nay có rất nhiều ứng dụng công nghệ được áp dụng trong công nghiệp đời sống trên cơ sở Robot dò đường Có rất nhiều người đã nghe, đã đọc và đã đang sử dụng nhưng không biết đấy chính là 1 ứng dụng của công nghệ được nói trên.
Robot vận chuyển hàng hóa hay được biết đến là xe tự hành AGV (Autonomous Guided Vehicles) Đây là Robot được vận hành rất nhiều trong các khu công nghiệp lớn Với nhiệm vụ phân phối và vận chuyển hàng hóa một cách tự động Với sự kết hợp của các Sensor quang điện giúp định hướng đường đi.
Và Sensor siêu âm tránh va chạm gây ảnh hướng đến hàng hóa và nhân viên kỹ thuật trong nhà máy.
Hình I.1: Xe tự vận hành AVG vận chuyển hàng hóa
Hình I.2: Robotics dẫn đầu ngành logistics tự động
Do vận hành 1 cách tự động, có khả năng tự sạc pin, dễ dàng điều phối và quản lý lượng hàng hóa qua hệ thống Cộng với ưu điểm hoạt động được lâu dài, vận chuyển lượng hàng hóa có khối lượng lớn AGV đang ngày càng được lựa chọn để thay thế hoàn toàn con người để giảm chi phí thuê nhân công, cũng như tăng độ chính xác trong công việc.
Trước đây việc nghĩ đến có 1 chiếc ô tô có thể tự di chuyển mà không cần tài xế, là 1 suy nghĩ thật viển vông Nhưng thực tế ở hiện tại có rất nhiều dòng xe được thì nghiệm và phát triển để có thể thực hiện được điều đó một cách hoàn thiện Ở Việt Nam cũng đã có những dòng xe được nhập khẩu về có thể tự động tìm và di chuyển vào vị trí đậu xe: các dòng Mercedes, BMW,… mới Dù hiện tại chưa có dòng xe hoàn toàn có thể được di chuyển trên đường 1 cách tự động Nhưng trong tương lai gần việc những xe không người lái đi trên đường sẽ không còn xa với đâu, hãy tin tôi đi Và đây cũng là 1 ứng dụng được phát triển nên từ Robot tự động tìm đường
Hình I.3: Xe oto tự ở chế độ tự lái
Công nghệ Robot lau nhà
Gần gũi hơn với chúng ta, Robot lau nhà không còn quá xa lạ với mỗi người Dù không sử dụng đường line có sẵn và cảm biến quang điện Nhưng Robot lau nhà lại áp dụng công nghệ cảm biến siêu âm để tránh va chạm.
Hình I.4: Robot máy hút bụi điều khiển bằng điện thoại di động Để kể tên được hết tất cả các ứng dụng phát triển nên từ cơ sở robot dò đường thì rất nhiều Đây là công nghệ tương lai, công nghệ dành cho tự động hóa IOT(Internet of Things) vạn vật kết nối.
3Phân tích một số ưu nhược điểm hiện của các robot di động hiện nay
Không phải ngẫu nhiên, Robot di động lại được ứng dụng rộng rãi trong các dây chuyền sản xuất Dưới đây là một số ưu điểm của robot di động:
- Tăng năng suất: Robot di động có thể hoạt động 24/24 trong một ngày, 1 tuần và thậm chí một tháng và cả năm Nhờ đó, năng suất sản xuất tăng cao vượt trội.
- Tăng mức độ an toàn: Robot di động có thể thay thế con người trong những môi trường nguy hiểm, làm các công việc nặng nhọc và đòi hỏi tính chuẩn xác cao, ít sai số.
- Giảm chi phí vận hành: Robot di động giúp giảm thiểu nguồn nhân lực, chi phí vận hành, giảm được các chi phí liên quan đến chi phí vận hành và nguồn lao động.
- Tăng tính linh hoạt: Robot di động được lập trình để thực hiện các thao tác mới mà không cần qua đào tạo hay hướng dẫn, nhờ đó giúp quy trình sản xuất trở nên linh hoạt hơn.
Hội tụ nhiều ưu điểm tuy nhiên vẫn tồn tại những nhược điểm của robot công nghiệp khiến nhiều người khá khó khăn khi quyết định lựa chọn Cụ thể:
- Vì được vận hành theo cơ chế tự động, hệ thống được điều khiển bằng máy tính nên nguy cơ bị hack rất cao Khi hệ thống bị tấn công, sản phẩm sẽ bị đình trệ và gây ra những thiệt hại nghiêm trọng.
- Khó vận hành, chi phí bảo dưỡng cao: Để vận hành hiệu quả robot, đòi hỏi bạn phải trải qua một khóa học và có những hiểu biết nhất định về thiết bị hiện đại này Bên cạnh đó, robot khá tốn chi phí để bảo dưỡng hay bảo hành.
- Chi phí đầu vào cao: Việc ứng dụng robot đòi hỏi chi phí đầu tư ban đầu rất cao Ngoài ra, cũng cần có chi phí cho việc đào tạo nhân công vận hành các loại thiết bị, máy móc hiện đại và phức tạp. Ưu – Nhược điểm của robot di động luôn song song tồn tại Vậy nên lựa chọn ở môi trường nào là điều quan trọng nhất.
4Vấn đề tồn tại liên quan đến hệ thống sản phẩm hiện nay
Có một số sự khác biệt quan trọng giữa các yêu cầu của việc lắp đặt robot cố định truyền thống với các yêu cầu của các hệ thống robot di động Một trong những mối quan tâm hàng đầu là sự không biết trước môi trường vận hành của robot di động Đối với các hệ thống robot cố định, người ta thường xây dựng (thiết kế) một không gian làm việc nhỏ để thực hiện công việc và robot cố định thường thực hiện các công việc lặp đi lặp lại trong môi trường xác định trước Đối với các hệ thống robot di động, việc nhận biết được môi trường làm việc là một yếu tố quyết định tới các “hành động” của robot, chỉ khi nhận biết được đầy đủ các thông tin về môi trường xung quanh thì robot di động mới có thể thích ứng được trong các môi trường làm việc khác nhau
Theo khái niệm, robot di động phải có một số bộ phận chuyển động Chuyển động có thể dưới dạng bánh xe, chân, cánh hoặc một số cơ cấu khác Việc lựa chọn cơ cấu chuyển động là dựa vào chức năng của robot và các công việc của robot cần phải thực hiện Trong nhiều môi trường làm việc công nghiệp, bánh xe là dạng chuyển động thích hợp nhất Đối với các hệ thống nghiên cứu ứng dụng khác, chân hoặc cánh có thể giúp cho robot di động chuyển động được trên địa hình mà robot không có khả năng đi qua
Một nhân tố quan trọng trong thiết kế của các hệ thống robot di động là khả năng mang theo các thiết bị Thiết bị bao gồm nguồn điện cũng như tất cả các phần cứng là các bộ cảm biến và các bộ xử lý mà robot đòi hỏi Các thiết bị lắp đặt của robot cố định có thể được kết nối trực tiếp với các nguồn điện và bộ xử lý, không gian làm việc thường được xác định trước và có thể được kiểm soát Hầu hết các robot di động đều có một trọng tải (payload) nhất định, điều này có thể dẫn tới những sự giới hạn trong thiết kế của hệ thống, đặc biệt trong các ứng dụng hay bị giới hạn về kích cỡ và cân nặng
Các robot công nghiệp truyền thống thường cồng kềnh và nguy hiểm đối với con người vì vậy các quy trình thường là hoàn toàn tự động hoặc hoàn toàn thủ công
Xây dựng một nhà máy tự động hoàn toàn, không có sự xuất hiện của con người dường như là một nỗ lực bất khả thi qua nhiều bài học trước đó Việc này đòi hỏi sự đầu tư nghiên cứu, chi phí triển khai cao và rủi ro cũng không hề nhỏ Để có thể nhanh chóng linh hoạt thích ứng những biến động trong kinh doanh và giải quyết được thách thức giữa công việc tự động và thủ công thì kết hợp giữa robot với con người là điều cần thiết.
Sức mạnh, sự chính xác và nhanh nhẹn của robot có thể giúp đảm nhiệm các công việc nặng nhọc, nguy hiểm và lặp đi lặp lại Trong khi đó, con người có thể đảm nhiệm các công việc khác có giá trị hơn, điều này cũng giúp họ cảm thấy hạnh phúc hơn.
Sự cộng tác này cũng giúp nhanh chóng linh hoạt chuyển đổi sản xuất phù hợp với nhu cầu của thị trường Con người và robot có thể dễ dàng bố trí, thay đổi vị trí với các nhu cầu sản xuất khác nhau mà vẫn đảm bảo an toàn Robot dò đường cộng tác được thiết kế với bo tròn, không có góc cạnh nhọn hoặc sắc bén gây nguy hiểm cho người ở gần Ngoài ra, các thành phần điện tử bên trong robot được bịt kín và chống thấm giúp hạn chế các nguy hiểm về rò rỉ hoặc các chất lỏng bên ngoài thấm vào khiến robot hoạt động sai.
Các yếu tố về địa hình, cảm biến trong nhà và ngoài trời cũng ảnh hưởng rất lớn đến sự hoạt động của robot Một robot khi đưa tới một địa hình lạ sẽ rất khó để sử dụng nó một cách tưu ưu.
Dù lợi thế và tối ưu về nhiều mặt nhưng giá thành robot rất cao nên các nhà máy vừa và nhỏ khó tiếp cận đến hình thức tự động hóa này.
Dù được công nhận về các tiêu chuẩn an toàn, robot cộng tác vẫn phải được thực hiện đánh giá rủi ro và điều chỉnh các thiết lập an toàn trong môi trường làm việc đặc thù trước khi được vận hành chính thức Yếu tố quan trọng nhất đảm bảo sự an toàn khi làm việc với robot không thể kể đến đó chính là các công nghệ và cảm biến hiện đại tích hợp trong robot Một số có thể kể đến như thiết lập vùng an toàn, robot sẽ tự động dừng hoặc hoạt động chậm khi có người bước vào khu vực được chỉ định hay Giới hạn phạm vi và tốc độ các khớp robot và tự động dừng khi có lực tác động Tất cả các chức năng an toàn đều có thể tùy chỉnh cho từng ứng dụng cụ thể.
CƠ SỞ LÝ THUYẾT VÀ THIẾT KẾ HỆ THỐNG
Bài toán tìm đường đi ngắn nhất
-Bài toán tìm đường đi ngắn nhất là bài toán tìm 1 đường đi giữa 2 đỉnh sao cho tổng các trọng số của các cạnh tạo ra đường đi đó nhỏ nhất.
-Cho trước một đồ thị có trọng số (nghĩa là một tập đỉnh V, một tập cạnh E, và một hàm trong số có giá trị thực f : E → R), cho trước một đỉnh v thuộc V, tìm một đường đi P từ v tới mỗi đỉnh v' thuộc V sao cho: ∑ p ∈P f(p) là nhỏ nhất trong tất cả các đường nối từ v tới v' Bài toán đường đi ngắn nhất giữa mọi cặp đỉnh là một bài toán tương tự, trong đó ta phải tìm các đường đi ngắn nhất cho mọi cặp đỉnh v và v'
-Các thuật toán quan trọng nhất giải quyết bài toán này là:
Thuật toán Best First Search (BFS)
Thuật toán Uniform Cost Search (UCS)
2.1.1 Thuật toán Best First Search
Thuật toán tìm kiếm theo chiều rộng BFS là thuật toán tìm kiếm trong đồ thị bằng cách tìm kiếm dựa trên 2 thao tác chính là: cho trước một đỉnh của đồ thị và thêm các đỉnh kề với nó vào danh sách chờ duyệt Phương pháp cài đặt này là
“lập lịch” để duyệt các đỉnh theo thứ tự duyệt ưu tiên trên chiều rộng (đỉnh nào gần với đỉnh gốc sẽ được duyệt trước)
Hình II.5: Hình ảnh minh họa BFS
Hình II.6: Hình ảnh minh họa BFS Vì nguyên tắc trên (đỉnh nào gần gốc sẽ được duyệt trước) nên thuật toán tìm kiếm theo chiều rộng BFS thường được dùng để tìm đường đi ngắn nhất giữa các đỉnh.
Chúng ta sẽ xây dựng một danh sách chứa các đỉnh đang chờ duyệt, tại mỗi bước chúng ta thăm đỉnh ở đầu danh sách và thêm những đỉnh kề với nó chưa có trong danh sách chờ vào cuối danh sách.
Vì nguyên tắc đó nên chúng ta có thể tổ chức danh sách chờ đó bằng cấu trúc dữ liệu hàng đợi (Queue).
2.1.2 Thuật toán Uniform Cost Search
Hình II.7: Hình ảnh minh họa ví dụ về thuật toán UCS Định nghĩa: Hàng đợi ưu tiên PQ là cấu trúc dữ liệu lưu trữ các phần tử cùng với độ ưu tiên của nó và khi lấy phần tử ra khỏi hàng đợi sẽ căn cứ vào độ ưu tiên nhỏ nhất.
Cho một trạng thái n, ký hiệu g(n) là tổng chi phí đường đi ngắn nhất (hiện có) từ trạng thái ban đầu S đến trạng thái n Thuật toán UCS sử dụng một hàng đợi ưu tiên (Priority Queue – PQ) để lưu trữ và duyệt các trạng thái trên đường đi Thuật toán dùng thêm một danh sách CLOSE để lưu trữ các trạng thái đã được xét.
Khởi tạo: PQ rỗng, CLOSE rỗng. Đưa trạng thái ban đầu START vào PQ, độ ưu tiên g(START) = 0
Lặp đến khi PQ rỗng
Lấy một trạng thái n (có g thấp nhất) ra khỏi PQ Đưa n vào CLOSE.
Nếu n là trạng thái đích GOAL thì “đã tìm thấy” Dừng thuật toán.
Nếu không, với mỗi trạng thái con n’ chưa xét (n’ không thuộc CLOSE) của n: Tính độ ưu tiên: g(n’) = g(n) + cost(n, n’ đưa (n’, g(n’)) vào PQ
Cuối lặp: Thông báo không có đường đi từ START đến GOAL.
Trong khoa học máy tính, A* là thuật toán tìm kiếm trong đồ thị Thuật toán 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) Thuật toán này sử dụng một "đá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 đó Thuật toán này duyệt các nút theo thứ tự của đánh giá heuristic này Do đó, thuật toán A* là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (best-first search).
Thuật toán 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ọ, thuật toán được gọi là thuật toán A; khi sử dụng thuật toán 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 thuật toán Dijkstra Thuật toán này được gọi là A1. Năm 1967 Bertram Raphael đã cải thiện đáng kể thuật toán này, nhưng không thể hiển thị tối ưu Ông gọi thuật toán 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 thuật toán 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ề thuật toán cũng bao gồm một phần cho thấy rằng các thuật toán A2 mới là thuật toán tốt nhất có thể được đưa ra các điều kiện Do đó ông đặt tên cho thuật toán mới là A *(A sao, A-star).
A* lưu giữ một tập các lời giải chưa hoàn chỉnh, nghĩa là các đường đi qua đồ thị, bắt đầu từ nút xuất phát Tập lời giải này được lưu trong một hàng đợi ưu tiên (priority queue) Thứ tự ưu tiên gán cho một đường đi x được quyết định bởi hàm f(x)=g(x)+h(x).
Trong đó, g(x) là chi phí của đường đi cho đến thời điểm hiện tại, nghĩa là tổng trọng số của các cạnh đã đi qua h(x) là hàm đánh giá Heuristic về chi phí nhỏ nhất để đến đích từ x Ví dụ, nếu "chi phí" được tính là khoảng cách đã đi qua, khoảng cách đường chim bay giữa hai điểm trên một bản đồ là một đánh giá Heuristic cho khoảng cách còn phải đi tiếp Hàm f(x) có giá trị càng thấp thì độ ưu tiên của x càng cao
Thuật toán Dijkstra, mang tên của nhà khoa học máy tính người Hà LanEdsger Dijkstra vào năm 1956 và ấn bản năm 1959, là một thuật toán giải quyết bài toán đường đi ngắn nhất nguồn đơn trong một đồ thị có hướng không có cạnh mang trình con trong các thuật toán đồ thị hay trong công nghệ Hệ thống định vị toàn cầu (GPS).
Ta bắt đầu khởi tạo các mảng n phần tử: label, length, prev Gán label[k] = 1, length[k] = -1 (inf), prev[k] = -1 với k chạy từ 0 -> n – 1 Gán length[first] = 0.
Chọn đỉnh v trong mảng sao cho length[k] là nhỏ nhất Sau đó gán label[k] 0 (Đã đánh dấu).
Tạo vòng lặp với biến chạy k, xét nếu label[k] = 1 (Chưa đánh dấu) và có đường đi từ v -> k: Nếu length[k] > length[v] + trọng số từ v -> k hoặc length[k] inf, có nghĩa là nếu ta tìm được 1 đường từ v -> k là nhỏ nhất, hoặc là chưa tìm được đường nào ngắn nhất (inf) => Gán length[k] = length[v] + trọng số v -> k, prev[k] v (Tạo vết chân đỉnh trước đó).
Nếu label[last] = 0 (Đã đánh dấu đỉnh đến), kết thúc vòng lặp Nếu không thì quay lại bước 2. Đánh giá độ phức tạp Độ phức tạp của thuật toán trên sẽ là O(V2).
Thiết kế hệ thống
Thiết kế của các hệ thống robot di động phần nhiều sẽ bị chi phối bởi mục đích ứng dụng Không có giới hạn về số lượng các kết hợp giữa các thiết bị thao tác, các bộ phận cảm biến và các thuật toán điều khiển cho các hệ thống robot di động. Hơn nữa, luồng thông tin trong phạm vi hệ thống sẽ thay đổi tuỳ thuộc vào quá trình thực thi, sẽ có một số thiết kế robot khác đáng kể Trong một số trường hợp, dữ liệu từ các bộ phận cảm biến được trực tiếp cung cấp cho bộ lên kế hoạch và điều khiển, cho phép hệ thống phản ứng nhanh hơn với những thay đổi mạnh mẽ của môi trường
2.2.1 Sơ đồ khối hệ thống và nguyên lý hoạt động
Thuyết minh nguyên lý hoạt động:
-Nguyên lý hoạt động của hệ thống được bắt đầu từ việc giải thuật tìm đường đi ngắn nhất Bản đồ được tạo ra trên thư viện pygame với tọa độ điểm đầu, điểm đích và tọa độ của các vật cản Thuật toán Dijkstra được thực hiện dựa trên bản đồ đã input rồi tìm ra đường đi ngắn nhất từ bản đồ Cùng với đó là mô phỏng lại đường đi của robot sau khi thuật toán đã tìm được đường đi tối ưu nhất Sau đó sẽ in ra file đường đi ngắn nhất vừa tìm được
-Đường đi vừa tìm được sẽ được đưa trực tiếp vào robot để robot thực hiện theo như mô phỏng, robot sẽ nhờ các cảm biến xác định từng điểm đã, đang và sẽ đi qua
-Sau khi đến đích thì robot sẽ dừng hoạt động.
Sơ đồ nguyên lý hoạt động:
Thiết kế phần cứng
Hình II.8: Sơ đồ nguyên lý của robot
2.3.2.1 Vi điều khiển Arduino uno R3
+ Thông số vi điều khiển Arduino uno R3
Arduino UNO dùng vi điều khiển họ 8bit AVR Atmega328 Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V.
Hình II.9: Vi điều khiển Atmega 328 + Atmega 328 có 2 nhiệm vụ chính :
• Nhận tín hiệu điều khiển từ máy tính thông qua cổng giao thức UART
• Điều khiển mạch điều khiển động cơ => Điều khiển chiều quay và tốc độ của động cơ => Điều khiển hướng đi và tốc độ di chuyển của Robot
+ Các đặc điểm cơ bản của Atmega 328
• Bộ nhớ flash : 32Kbytes với 0.5KB dùng bởi bootloader
• Tần số hoạt động : 16 MHz
+ Sơ đồ chân của vi điều khiển
Hình II.10: Sơ đồ chân của Atmega 328
• Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập, xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead(). Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển.
• Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10 bit (0 – 1023 ) Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead()
• PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung PWM (8 bit) thông qua hàm analogWrite().
• UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và chân 1 (TX).
2.3.2.2 Mạch điều khiển động cơ module Motor Shield L293D
Module điều khiển động cơ - Motor Shield L293D là board mở rộng cho các board Arduino, dùng để điều khiển các loại động cơ như Motor DC, Stepper Motor và Motor Servo Driver Motor Shield L293D được thiết kế gọn gàng, đẹp mắt và tương thích hoàn toàn với các board Arduino: Arduino uno r3, Arduino leonardo, Arduino mega2560, giúp việc ghép nối sử dụng Driver điều khiển động cơ tiện lợi. Kết cấu Xe robot được tinh gọn.
Thông số kỹ thuật chung Driver Motor Shield L293D:
- Có thể điều khiển 4 động cơ một chiều (motor DC) hoặc 2 động cơ bước(Stepper motor) hoặc 2 động cơ Servo, với mức áp lên đến 36V, dòng tối đa 600mA
- sử dụng 2 IC cầu H L293D hoàn chỉnh với các chế độ bảo vệ và 1 IC logic 74HC595 để điều khiển các động cơ.
- Điện trở kéo xuống GND giữ cho Motor không tự chạy khi cấp nguồn
- Tương thích: Arduino Uno, Arduino Mega, Arduino Leonardo
Hình II.11: Module Motor Shield L293D khi được ghép nối với Arduino
2.3.2.3 Động Cơ DC giảm tốc Động cơ DC giảm tốc V1 Dual Shaft Plastic Geared TT Motor là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các thiết kế khung Robot, xe, thuyền, , động cơ có chất lượng và giá thành vừa phải cùng với khả năng dễ lắp ráp đem đến chi phí tiết kiệm và sự tiện dụng cho người sử dụng.
Điện áp hoạt động : 3~9VDC
Dòng điện tiêu thụ: 110~140mA
Hình II.12: Động cơ DC giảm tốc V1 Dual Shaft Plastic Geared TT Motor2.
Hình II.13: Pin cell 18650 Pin cell 18650 có dung lượng phù hợp cho các mô hình robot, xe điều khiển, Ở đây ta sẽ dùng 3 viên để cấp nguồn cho động cơ
Hình II.14: Hình dạng robot -Thông số robot:
+Đường kính bánh xe lớn: 142 mm
+Đường kính bánh xe nhỏ: 80 mm
+ Khung của robot được làm bằng nhựa có nhiều lỗ sẵn để bắt ốc vào những vị trí cần thiết để gắn pin, động cơ ,…
-Robot được cầu tạo gồm 2 phần:
+Phần động cơ: Gồm 2 động Cơ DC gắn vào 2 bánh xe lớn đường kính 100 mm, cùng với 2 bánh xe nhỏ đường kính 80mm có thể quay tự do.
• Động cơ được gắn vào module Motor Shield L293D, mỗi động cơ là 1 bộ điều khiển.
• Vi điều khiển Arduino uno R3 sẽ tiếp nhận tín hiệu từ máy tính và điều khiển động cơ thông qua module module Motor Shield.
Thiết kế phần mềm
2.2.1 Lưu đồ thuật toán và mô tả thuật toán
- B2: Vẽ mặt phẳng tọa độ hai chiều xy từ thư viện pygame sang mặt phẳng tọa độ có kích thước 10x10
- B3: Tạo bản đồ đường đi gồm vị trí điểm bắt đầu, vị trí điểm kết thúc, vị trí các vật cản trên bản đồ.
- B4: Xem có sự kiện start hay reset xảy ra hay không?
Nếu có sự kiện start thì khởi chạy hàm thuật toán Dijkstra tìm đường đi ngắn nhất:
TH1: Không tìm được đường đi ngắn nhất thì quay lại B4.
TH2: Nếu tìm được đường đi ngắn nhất thì mô phỏng di chuyển của robot từ vị trí xuất phát đến vị trí đích theo đường đi ngắn nhất tìm được Sau đò quay lại B4.
Nếu có sự kiện reset thì xóa tất cả các vật cản, điểm ban đầu, điểm kết thúc đã tọa trước đó Sau đó quay lại B4
2.2.2 Mô tả ngôn ngữ lập trình: Python
Python là ngôn ngữ lập trình đa năng ra đời năm 1991 do Guido van Rossum sáng tạo ra Đây là ngôn ngữ lập trình với những điểm mạnh như dễ đọc, dễ nhớ, dễ học Với cấu trúc rõ ràng, thuận tiện nên thu hút khá nhiều người mong muốn học ngôn ngữ này.
So với các ngôn ngữ khác, Python có cấu trúc cú pháp ít hơn Cấu trúc của Python cho phép người sử dụng viết mã lệnh với số lần gõ phím ít nhất.
Lúc đầu Python được phát triển trên cơ sở Unix Nhưng theo sự phát triển của thời đại, ngôn ngữ lập trình này được mở rộng sang mọi hệ điều hành từ MS Dos đến Mac Os, Linux,…
Lập trình Python để làm gì là vấn đề mà nhiều người thắc mắc, thực tế Python là ngôn ngữ ứng dụng đa dạng trong các lĩnh vực Hãy cùng xem những ứng dụng đó:
Với ngôn ngữ Python sẽ giúp bạn làm trang web một cách đơn giản hơn.
Hiện nay những web frameworks Django và Flask ngày càng được sử dụng phổ biến nên việc phát triển web bằng Python dễ dàng hơn Từ khung ứng dụng web cho đến các phiên bản thiết kế đầy đủ các thư viện cần thiết thực sự hữu ích cho người dùng. Đây là một đặc điểm lợi thế của ngôn ngữ Python Chỉ với Python bạn sẽ có thể tạo ra những nguyên mẫu phần mềm – bản chạy thử Tuy nhiên tốc độ của Python sẽ chậm hơn so với Java hay C++ Do vậy bạn cần cân nhắc về nguồn lực cũng như hiệu quả để lựa chọn ngôn ngữ phù hợp.
Ngoài các ứng dụng trên, lập trình python còn có ứng dụng nào khác không? Đó chính là sự ứng dụng vào khoa học và tính toán Ngôn ngữ Python sở hữu thư viện dành cho lĩnh vực khoa học, tính toán số liệu như NumPy, SciPy Ngoài ra, Python còn có EarthLy dành cho khoa học trái đất, AstroPy cho các ngành thiên văn học, Biopython cho ngành sinh học, Graph-tool cho ngành phân tích biểu đồ,
… Ngôn ngữ lập trình Python được sử dụng trọng khai thác dữ liệu,…
Thông thường, dân IT luôn tự viết tool để công việc trở nên dễ dàng hơn Thay vì sử dụng ngôn ngữ Java, PHP để viết tool thì việc sử dụng ngôn ngữ lập trình Python sẽ giúp lập trình viên chủ động hơn trong công việc Bởi tốc độ viết tool bằng ngôn ngữ này nhanh gấp 10 lần so với các ngôn ngữ khác
Bạn có thể tạo ra từ điển, quét trang web, làm việc với các tệp khác,….
Hình II.15: Python giúp dân IT tạo ra tool tự động hóa trong công việc. Trong Python có rất nhiều thư viện quan trọng trong khoa học máy tính như: Open Computer Vision viết tắt là Opencv – một thư viện mã nguồn mở cho xử lý về thị giác máy tính, xử lý ảnh và machine learning.
Numpys: là thư viện hỗ trợ cho việc tính toán các mảng đa dạng Numpy rất hữu ích
Scipy: Là phần mềm nguồn mở dành cho lĩnh vực toán học, khoa học và kỹ thuật. Scipy gồm các tập con cho đại số tuyến tính, tích hợp và thống kê.
Pandas là một thư viện dành cho công việc phân tích dữ liệu.
Với các nền tảng nhúng, hoặc những ứng dụng cần truy xuất dữ liệu lớn thì Python là giải pháp phù hợp Python còn được ứng dụng trên trang instagram hay Pinterest nên ngày càng quen thuộc với người dùng.
Pygame nằm trong thư viện SDL sẽ giúp việc phát triển các game 2D một cách dễ dàng hơn bao giờ hết.
Nắm vững ngôn ngữ lập trình Python sẽ giúp các lĩnh vực liên quan đến Machine Learning, Ai một cách dễ dàng Bởi Python có những hệ thống dữ liệu quan trọng như: SciPy, scikit-learn, panda,…
Hình II.16: Lập trình python có liên hệ mật thiết với trí tuệ nhân tạo
Với nhiều ứng dụng trong các lĩnh vực nên ngôn ngữ này được sử dụng cho mục đích giảng dạy như: phân tích dữ liệu, tự động hóa, lập trình game 2D,…
THỬ NGHIỆM VÀ THẢO LUẬN
3.1 Môi trường thử nghiệm mô phỏng
Ngôn ngữ python (đã giới thiệu ở trên)
Pygame là một bộ mô-đun Python đa nền tảng được thiết kế để viết trò chơi điện tử Nó bao gồm đồ họa máy tính và thư viện âm thanh được thiết kế để sử dụng với ngôn ngữ lập trình Python.
Pygame sử dụng thư viện Simple DirectMedia Layer (SDL), với mục đích cho phép phát triển trò chơi máy tính trong thời gian thực mà không cần cơ chế bậc thấp của ngôn ngữ lập trình C và các dẫn xuất của nó Điều này dựa trên giả định rằng các chức năng đắt tiền nhất bên trong trò chơi có thể được trừu tượng hóa khỏi logic trò chơi, do đó có thể sử dụng ngôn ngữ lập trình bậc cao, chẳng hạn như Python, để cấu trúc trò chơi
Các tính năng khác mà SDL không có bao gồm toán học vectơ, phát hiện va chạm, quản lý độ họa 2d, hỗ trợ MIDI, camera, thao tác mảng pixel, chuyển đổi, lọc, hỗ trợ phông chữ freetype nâng cao và vẽ.
Các ứng dụng sử dụng pygame có thể chạy trên điện thoại và máy tính bảng Android với việc sử dụng Bộ phụ pygame cho Android Âm thanh, rung, bàn phím và gia tốc kế được hỗ trợ trên Android.
3.2 Các kịch bản thử nghiệm mô phỏng.
- Hình ảnh biểu thị.
OTO: vị trí bắt đầu.
Hình tròn đỏ: vị trí kết thúc.
Xanh: Đường đi tối ưu tìm được.
- Các kịch bản thử nghiệm.
Kịch bản 1: Oto di chuyển khi không có vật cản.
Kịch bản 2: Oto di chuyển khi vật cản ít.
Kịch bản 4: Oto không có khoảng trống để di chuyển đến đích.
Hình III.17: Thực nghiệm lần 1
Hình III.18 Thực nghiệm lần 2
Hình III.19 Thực nghiệm lần 3
Hình III.20 Thực nghiệm lần 4
Hình III.21: Thực nghiệm lần 5
Hình III.22: Thực nghiệm lần 6
Hình III.23: Thực nghiệm lần 7 Hình III.24: Thực nghiệm lần 8
Hình III.25: Thực nghiệm lần 9
Hình III.26: Thực nghiệm lần 10
Hình III.27: Thực nghiệm lần 11
Hình III.28: Thực nghiệm lần 12
+ Lần 14: Hình III.29: Thực nghiệm lần 13
3.3 Kết quả thử nghiệm và nhận xét
Lần thử nghiệm Thành công Thất bại
Hình III.30: Thực nghiệm lần 14
Bảng III.31: Bảng kết quả mô phỏng
+ Qua 15 lần thử nghiệm thuật toán đã tìm được đường đi thành công 11 lần và thất bại 3 lần
+ Lý do tìm kiếm thất bại là vì vị trí kết thúc nằm trong vùng bao quanh bởi vật cản, không có khoảng trống để robot đi qua
+ Thuật toán chạy tốt tìm kiếm nhanh và tối ưu.
3.3 Thử nghiệm thực tế robot:
Robot được test ở trong phòng với kích thước bản đồ là 3x3 Đường để robot có thể dò là keo dán màu đen được dán lên đường của những lát gạch hoa.
3.4 Các kịch bản thử nghiệm robot:
Kịch bản 1: Robot đi khi không có vật cản
Kịch bản 2: Robot di chuyển khi có 1 vật cản.
Kịch bản 3: Robot di chuyển khi có 2 vật cản.
Hình III.32 Robot di chuyển khi không có vật cản
Hình III.33 Robot di chuyển khi có 1 vật cản
- Robot chạy thành công tại 3 lần thử nghiệm nhưng độ chính xác chưa cao Robot đi lệch đường nhiều.
- Tốc độ 2 động cơ của robot chưa được cân bằng.
Link video: https://bit.ly/3lHjI4p
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
-Thuật toán chạy đúng đã vạch ra được đường đi ngắn nhất, tối ưu nhất.
-Robot mô phỏng chạy đúng theo đường đi của thuật toán và hoàn thành đường đi
-Robot thực tế còn nhiều mặt hạn chế như kích thước và tốc độ.
-Sự cân bằng giữa 2 động cơ của robot không bằng nhau dẫn đến có những kết quả chưa được chính xác.
- Thiết kế hình dạng robot cho phù hợp với môi trường sử dụng
- Thiết kế giao diện để người dùng có thể dễ dàng sử dụng.
- Giao tiếp giữa robot và máy chủ thông qua điện thoại để có thể hoạt động một cách chủ động hơn
- Tích hợp camera để chụp ảnh liên tục địa hình và xử lý hình ảnh để xử lý ngay lập tức trước các thay đổi địa hình.
- Tích hợp thêm encoder để động cơ robot có thể di chuyển được cân bằng, tránh hiện tượng sai lệnh, chạy không đúng mong muốn ban đầu.