HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG ---⸙∆⸙--- ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ VÀ ĐIỀU KHIỂN CÁNH TAY ROBOT KẾT HỢP XE TỰ HÀNH LẤY HÀNG THEO ĐƠN TRONG MÔI TRƯỜN
TỔNG QUAN
Đặt vấn đề
Sự phát triển mạnh mẽ của robotics trong những năm gần đây đánh dấu việc đẩy mạnh khoa học công nghệ vào nhiều lĩnh vực trong đời sống của con người Đối với lĩnh vực logistics và quản lý kho bãi, AGV và AMR đang là 2 ứng dụng nổi bật trong việc tối ưu hóa quy trình vận chuyển và quản lý hàng hóa Thêm vào đó, bằng cách tích hợp thêm cánh tay robot sẽ mở ra thêm nhiều ứng dụng tiến bộ hơn trong ngành
Từ đó, giảm thiểu sự phụ thuộc vào lao động nhân công mà còn tối ưu hóa chi phí và thời gian
Trong bài báo “Mobile Picking-Robot having wide reach area for shelves” của tác giả Kazuma Komoda cùng các cộng sự được xuất bản năm 2019 tập trung vào việc phát triển hệ thống lấy hàng tự động dựa trên một cơ chế trục tuyến tính, nhằm giải quyết các thách thức trong việc lấy hàng từ các giá đỡ hàng hóa có khoảng cách hẹp và mặt hàng được xếp lộn xộn Nghiên cứu đã tập trung vào thiết kế một hệ thống robot di động linh hoạt, sử dụng cơ chế tay cầm có khả năng hoạt động trong không gian hạn chế và có thể nhận diện, lấy hàng một cách hiệu quả [1]
Trong bài báo “Toward Future Automatic Warehouses: An Autonomous Depalletizing System Based on Mobile Manipulation and 3D Perception” của tác giả Jacopo Aleotti cùng các cộng sự được xuất bản năm 2021 đã nghiên cứu về nền tảng điều khiển và vận hành cho một hệ thống điều khiển robot di động kết hợp cánh tay robot UR10 thực hiện các nhiệm vụ depalletizing (giải thùng pallet) tự động, tích hợp của thị giác máy móc, điều khiển và các thành phần cơ khí để tăng tính linh hoạt và dễ triển khai trong môi trường công nghiệp như các kho hàng [2]
Trong bài báo “Storage Assignment Policy and Route Planning of AGVS in Warehouse Optimization” xuất bản năm 2019 của tác giả Ly Gia Bao cùng các cộng sự đã nghiên cứu tập trung vào tối ưu hoá hoạt động kho hàng để giảm chi phí và tăng lợi nhuận trong lĩnh vực logistics và chuỗi cung ứng Tác giả nghiên cứu áp dụng hệ
CHƯƠNG 1 TỔNG QUAN ĐỒ ÁN TỐT NGHIỆP
2 thống xe hướng dẫn tự động (AGVS) để cải thiện hiệu suất vận chuyển và lưu lượng hàng hóa Họ phân tích và đề xuất các chiến lược phân bổ vị trí lưu trữ và lập kế hoạch đường đi cho AGVS trong kho hàng theo cấu trúc kho hình chữ nhật truyền thống [3]
Trong bài báo “Planning Optimal Trajectories for Mobile Manipulators under End-effector Trajectory Continuity Constraint” xuất bản năm 2023 của hai tác giả
Quang-Nam Nguyen và Quang-Cuong Pham tập trung nghiên cứu vào giải quyết vấn đề lập kế hoạch chuyển động cho robot di động kết hợp với cánh tay manipulator (mobile manipulator) khi cần điều hướng điểm kết thúc của cánh tay qua một quỹ đạo liên tục trong không gian nhiệm vụ (taskspace trajectory), thường là một đường dẫn thời gian tham số hóa, như trong các ứng dụng như in ấn di động hoặc phun sơn di động [4]
Sau quá trình tìm hiểu các nghiên cứu khoa học, nhóm chúng tôi nhận thấy rằng, hệ xe di động kết hợp với cánh tay robot là một đề tài đã được nghiên cứu rộng rãi trên thế giới và đã ứng dụng ở nhiều lĩnh vực không chỉ riêng về logistics và quản lỹ kho bãi như nhà hàng, khách sạn, nông nghiệp,… tuy nhiên các nghiên cứu đến từ các nhóm tác giả trong nước thì vẫn còn hạn chế, có thể xuất phát từ nhiều nguyên nhân khách quan đến chủ quan, song họ vẫn có những nghiên cứu nhất định về đề tài này, chủ yếu là tập trung vào điều khiển chuyển động cũng như áp dụng các thuật toán để tối ưu chuyển động hoặc cho các ứng dụng với mức độ vừa và nhỏ Vì thế, các đề tài về hệ xe di dộng kết hợp với cánh tay robot vẫn là đề tài còn mới và cần được nghiên cứu rộng rãi hơn
Từ những yếu tố trên, nhóm chúng tôi đã quyết định nghiên cứu và thực hiện dự án với đề tài là “Thiết kế và điều khiển cánh tay robot kết hợp xe tự hành lấy hàng theo đơn trong môi trường nhà kho” (Design and control a robotic arm combined with an autonomous vehicle for order picking in warehouse environment) Nhóm đã ứng dụng thuật toán tối ưu đàn kiến (ACO) để giải bài toán người bán hàng trong môi trường trong nhà (ITSP) kết hợp với thuật toán tìm đường tối ưu Dijkstra’s giúp ĐỒ ÁN TỐT NGHIỆP
3 robot di chuyển, bên cạnh đó, thuật toán DWA cũng được sử dụng nhằm mục đích né vật cản, cánh tay robot ba bậc tự do ứng dụng xử lý ảnh để thực hiện gắp hàng, các đơn hàng được đặt thông qua web server và danh sách các đơn hàng sẽ được lưu trữ trong cơ sở dữ liệu Firebase, cuối cùng việc điều khiển sẽ thông qua GUI.
Mục tiêu
Mô hình robot được thiết kế qua phần mềm Solidworks, phải đảm bảo có thiết kế đơn giản, linh hoạt trong việc sửa chữa, dễ dàng di chuyển trong môi trường trong nhà và phải dựa trên dạng robot xe hai bánh vi sai thuộc hệ non-holonomic Áp dụng được các thuật toán ACO, Dijkstra’s giải bài toán ITSP và tối ưu đường đi, thuật toán DWA cho robot né vật cản Áp dụng bộ điều khiển PID trong việc điều khiển hai bánh xe và ba khớp cánh tay robot
Các giải thuật được mô phỏng trên Matlab-Simulink và sau đó triển khai mô phỏng trên phần mềm Gazebo, Rviz
Dữ liệu robot được xử lý trên laptop thông qua giao tiếp Wifi sử dụng mạng socket ROS
Thiết kế một trang web server để thực hiện việc đặt hàng
Thực hiện lưu trữ danh sách các đơn đặt hàng trên cơ sở dữ liệu Firebase
Thiết kế một giao diện GUI dùng để quản lý toàn bộ việc điều khiển hệ thống robot và các tương tác cần thiết với cơ sở dữ liệu.
Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết: Phương pháp phân tích – tổng hợp lý thuyết
Phương pháp nghiên cứu thực tiễn: Phương pháp phỏng vấn – trả lời, phương pháp hỏi ý kiến chuyên gia, phương pháp nghiên cứu phân tích – tổng hợp
CHƯƠNG 1 TỔNG QUAN ĐỒ ÁN TỐT NGHIỆP
Sử dụng các tài liệu liên quan đến đề tài có sẵn tại thư viện Trường Đại học Sư Phạm Kỹ Thuật Thành phố Hồ Chí Minh, kết hợp với tài liệu từ Internet, các bài báo nghiên cứu khoa học trên Google Scholar cùng với sự đóng góp ý kiến từ giảng viên hướng dẫn cũng như các bạn học
Vận dụng các kiến thức nền tảng của các môn học, thực hiện việc lập trình trên phần mềm mô phỏng chuyên dụng, kinh nghiệm sẵn có của nhóm từ các đồ án trước Ngoài ra, nhóm có sự tham khảo các đề tài tương tự của các khóa đi trước.
Nội dung nghiên cứu
Đồ án bao gồm có 6 chương như sau:
Chương 1 – Tổng quan: Trình bày khái quát về đề tài, mục tiêu đề tài hướng đến, phương pháp nghiên cứu và giới hạn của đề tài nghiên cứu này
Chương 2 – Cơ sở lý thuyết: Trình bày về các lý thuyết, phần mềm mà nhóm nghiên cứu sử dụng cho đồ án
Chương 3 – Tính toán và thiết kế: Trình bày các thiết kể về phần cứng, từ đó tính toán và đưa ra sự lựa chọn thiết bị, linh kiện phù hợp với mục tiêu mà đề tài hướng đến
Chương 4 – Thi công hệ thống: Trình bày kết quả khi hoàn thành thi công phần cứng, các thiết kế về phần mềm, giao diện web server và giao diện điều khiển GUI
Chương 5 – Kết quả thực hiện: Trình bày các kết quả mô phỏng và kết quả thực nghiệm sau quá trình nghiên cứu và thực hiện của nhóm
Chương 6 – Kết luận và hướng phát triển: Trình bày kết luận về đề tài, đưa ra các đánh giá khách quan dựa trên chương 5, từ đó nhóm có các đề xuất cải tiến hay phát triển đồ án này theo các hướng khác trong tương lai ĐỒ ÁN TỐT NGHIỆP
CƠ SỞ LÝ THUYẾT
Mô hình toán của hệ xe hai bánh vi sai
Trong thực tế, có nhiều cách để điều khiển robot nhưng một phương thức thường hay được ứng dụng cho các loại robot di động là cơ chế truyền động vi sai Phương thức này là sự truyền động hai bánh xe được gắn trên cùng một trục, khi truyền vận tốc cho hai bánh xe, xe có thể tiến hoặc lùi Để robot có thể di chuyển theo một góc , robot sẽ giữ một trục và quay quanh trục đó (trục chính), điểm đó gọi là ICC và được mô tả theo hình dưới đây [5]:
Hình 2.1.Mô hình mô tả robot di động Differential Drive hệ non-holonomic
Khi tăng hoặc giảm vận tốc, ta có thể thay vận tốc và góc quay trong lúc xe chạy
Khi quay quanh trục chính, vận tốc cho hai bánh xe là đồng tốc, và được tính theo công thức sau: v = r (2.1)
Với T s ( )là thời gian xe quay quanh trục, 2
Từ hình 2.1 ta có các phương trình sau: ĐỒ ÁN TỐT NGHIỆP 7
Với L là khoảng cách giữa hai trục bánh xe, V d và V e là vận tốc của bánh phải và bánh trái được tính dựa trên xung từ cảm biến vận tốc từ hai bánh xe gửi về và R là khoảng cách từ điểm quay( ICC )đến điểm giữa của trục hai bánh xe Ta có thể tính được R và trong bất kỳ trường hợp nào khi điều hướng qua công thức:
Trong hình 2.1, ví dụ robot đang ở tọa độ ( , ) x y , hướng của robot là góc tạo với trục
X hướng theo chiều dài robot Khi có V d và V e được đọc từ cảm biến vận tốc, kết hợp với công thức (2.4) ta có điểm quay ICC như sau:
Tại t + t thì tọa độ ( , ) x y và góc quay của robot là:
) 1 x x y y x t sin x ICC I CC y y ICC ICC t sin t t t
Phương trình (2.6) thể hiện chuyển động quay quanh một khoảng R với điểm góc quay ( ICC ) của robot cùng với vận tốc góc Để mô tả động học thuận, ta có phương trình sau:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 8 cos( ) cos( ) 0 sin( ) sin( ) 0
Với q = x y T , ( , ) x y là tọa độ của robot, là góc quay quanh trục Z của robot, tương ứng với góc lệch so với trục X của robot Giá trị v là vận tốc trung bình công thức sau:
Giá trị của vận tốc góc : d e
Tại thời điểm t+t tọa độ và góc quay robot là:
Ta có thể mô tả tọa độ của robot theo một hướng cụ thể ( ) t với vận tốc v t ( )là:
Kết hợp với công thức (2.8), (2.9) ta xây dựng lại công thức như sau:
= L − Động học nghịch là khi muốn robot di chuyển vị trí mục tiêu ( , , ) x y và người điều khiển sẽ đưa vận tốc vào robot để robot có thể di chuyển đến điểm đó Tuy nhiên đối với Differential Drive Robots được gọi là hệ non-holonomic thì robot di chuyển chỉ duy nhất theo X , không thể di chuyển ngang (theo Y )
Vì vậy, ở hệ này, ta có ba trường hợp đặc biệt đối với vận tốc từng bánh như sau: Nếu V e =V d thì robot di chuyển tuyến tính về trước hoặc sau (tiến hoặc lùi): cos( ) sin( ) x x v y y t t v
Nếu V e = −V d thì robot sẽ quay tại chỗ với tâm là điểm chính giữa trục nối hai bánh xe:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 10
Nếu V e =0 và V d 0 thì robot quay quanh tâm tại bánh trái với bán kính là / 2L và tương tự với trường hợp ngược lại.
Driver Cycloidal
Đóng vai trò là một bộ giảm tốc driver cyloidal đóng vai trò quan trọng trong các khớp của cánh tay robot, giúp tăng momen cho cánh tay và tạo ra những chuyển động mượt mà và chính xác hơn
Công thức vẽ bánh răng:
( ) ( ( ) ) ( ( ) ) tan sin 1 cos( ) r cos a N t cos 1 cos x R t R t N t E N t
• R: bán kính bánh răng (mm)
• Rr: bán kính răng (mm)
( ) ( ( ) ) ( ( ) ) tan sin 1 sin( ) r sin a N t cos 1 cos y R t R t N t E N t
Momen xoắn cho cánh tay
Hình 2.3 Sơ đồ mô tả 1 khớp cánh tay và các thành phần ảnh hưởng tới momen
Khi tính momen xoắn cho động cơ cánh tay cần xác định khoảng cách từ tâm quay của động cơ đến điểm cuối của điểm đặt lực Từ đó ta có công thức:
• Mass : là khối lượng của đối tượng cần chuyển động quanh trục quay Đơn vị là kg
• Length : là khoảng cách từ tâm quay tới điểm đặt lực Đơn vị là mét (m)
• g : gia tốc trọng trường có giá trị là 9.8 (m/s 2 )
Bài toán người bán hàng (TSP)
Bài toán người bán hàng (TSP) là một bài toán NP-hard được nghiên cứu trong lĩnh vực lý thuyết khoa học máy tính Bài toán được hiểu đơn giản như sau:
“Giả sử luôn tồn tại đường đi giữa các thành phố, vị trí và khoảng cách giữa các thành phố với nhau được cho trước Hãy tìm đường đi ngắn nhất để người bán hàng xuất phát từ
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 12 một thành phố nào đó có thể đi qua toàn bộ các thành phố, mỗi thành phố một lần và trở về thành phố ban đầu với tổng chi phí thấp nhất.”
Bài toán này đã và đang là một vấn đề nghiên cứu của các nhà khoa học trong nhiều thập kỷ qua vì mức độ khó của nó Khi ta càng tăng số lượng thành phố thì độ khó của bài toán cũng tăng theo Ứng dụng của bài toán TSP trong thực tế có thể kể đến như: Vận chuyển và giao hàng (Logistics), lập kế hoạch, định tuyến, quy hoạch sản xuất… ĐỒ ÁN TỐT NGHIỆP 13
Hình 2.5 Ứng dụng của bài toán TSP trong Logistics
Bài toán ITSP là sự kết hợp giữa bài toán điều hướng trong nhà và bài toán TSP Nó phát triển từ bài toán TSP để tối ưu hóa quá trình di chuyển trong không gian hạn chế Trong ITSP, thuật ngữ “trạm” thường được sử dụng thay cho “thành phố” để chỉ các điểm đích, và mục tiêu là tìm đường đi ngắn nhất hoặc tối ưu nhất giữa các trạm này [6].
Thuật toán tối ưu đàn kiến (ACO)
Hiện nay, có rất nhiều công trình nghiên cứu giải thuật để giải bài toán TSP
Các thuật toán chính xác như Brute Force Search, Branch and Bound,… việc tìm ra tất cả lời giải có thể có cho bài toán TSP là khả thi nhưng đổi lại về tính hiệu quả thực tiễn, nơi đòi hỏi thực hiện tính toán cho số lượng lớn trạm, thì độ phức tạp bài toán cao, do đó mất nhiều thời gian để tính toán Vì thế, phương pháp này thường chỉ phù hợp với quy mô bài toán nhỏ hoặc có thể sử dụng khi một số biến thể để giảm số lượng trường hợp cần xử lý
Thay vì sử dụng thuật toán chính xác thì các thuật toán gần đúng hay heuristic mở ra nhiều cách tiếp cận mới Heuristic là phương pháp cung cấp một giải pháp không đảm bảo là tối ưu nhất, nhưng trong một thời gian hợp lý, nó sẽ đưa ra một giải pháp khả quan Một số thuật toán có thể kể đến như giải thuật láng giềng (Neighbourhood Algorithm), thuật toán di truyền (GA – Genetic Algorithm), … và một trong số đó là thuật toán tối ưu đàn kiến (Ant Colony Optimization - ACO),
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 14
Thuật ngữ AS được sử dụng ban đầu để mô tả phiên bản ban đầu của thuật toán, được đề xuất bởi Marco Dorigo và các đồng nghiệp trong bài báo “Ant System: Optimization by a Colony of Cooperating Agents” vào năm 1996 [7] Sau đó, thuật ngữ ACO đã được áp dụng rộng rãi hơn để chỉ cả một lớp các thuật toán dựa trên cơ chế tương tự như của con kiến để giải quyết các vấn đề tối ưu hóa
Trong tự nhiên, loài kiến sử dụng vết mùi (pheromone) để dẫn đường từ tổ đến nguồn thức ăn Các con kiến đi sau sẽ dựa vào lượng mùi mà các con đi trước để lại Nếu chưa có pheromone trên đường đi, chúng sẽ để lại mùi trên lối đi của mình Mỗi con kiến di chuyển một cách ngẫu nhiên và lượng mùi này sẽ bay hơi theo thời gian Các đường có lượng pheromone nhiều hơn sẽ có xác suất cao hơn để các con kiến chọn và qua quá trình này lặp đi lặp lại cho đến khi hình thành được đường đi ngắn nhất từ tổ đến nguồn thức ăn Thông qua tập tính của loài kiến trong việc tìm kiếm thức ăn, các nhà khoa học đã nghiên cứu, tiếp cận và ứng dụng điều đó nhằm tìm ra lời giải cho bài toán TSP
Hình 2.6 Mô tả đơn giản quá trình tìm thức ăn của đàn kiến
Chọn con kiến k trong số m con đang ở thành phố , chọn ngẫu nhiên thành phố j với xác suất p ij Công thức xác suất được thiết lập như sau: [8] ĐỒ ÁN TỐT NGHIỆP 15
( ) ij ij ij ij l Ni k
P t ij : là xác suất con kiến k lựa chọn cạnh ij
T ij : là mùi cạnh ij
1 ij ij n =d : là mùi khởi tạo ban đầu với d ij là khoảng cách giữa hai thành phố i j ,
: là hệ số điều chỉnh ảnh hưởng của T ij
: là hệ số điều chỉnh ảnh hưởng của n ij
, : là hệ số chỉ ra mức độ ảnh hưởng của thông tin ban đầu và thông tin khai phá Tiếp đến, công thức cập nhật mùi được xây dựng:
( 1) (1 ) ( ) ( 1) (1 ) ( ) m 1 k ( ) ij ij ij ij k ij
: là tốc độ bay hơi (0 1).
: là lượng mùi tăng thêm bởi con kiến k được tính theo công thức:
= : nếu con kiến k đi qua cạnh ( , ) i j
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 16
= : nếu con kiến k không đi qua cạnh ( , )i j
Tiến trình thực hiện của thuật toán ACO như sau:
Bước 1: Khởi tạo ma trận vết mùi cho trước, điều kiện dừng, số lượng kiến, số thành phố, khoảng cách (chi phí) giữa các thành phố, hệ số , ,
- Khởi tạo thành phố xuất phát cho mỗi con kiến
- Tìm hành trình của mỗi con kiến dựa vào công thức xác suất chọn đỉnh
- Cập nhật lời giải tốt nhất
Bước 3: Đưa ra lời giải tốt nhất
Thuật toán Dijsktra’s
Thuật toán Dijkstra’s là một phương pháp tìm đường ngắn nhất trong một đồ thị có trọng số dương Bắt đầu từ điểm xuất phát, thuật toán khám phá từng đỉnh một theo thứ tự từ xa đến gần, mở rộng ra các đỉnh kề với đỉnh hiện tại chưa được xét đến khi đạt được đích đến mong muốn
Thuật toán Dijkstra’s là một trong những phương pháp tìm đường đi tối ưu thông qua việc xét tất cả các điểm có trong một bản đồ dạng lưới Quá trình làm việc của thuật toán được thực hiện trong một vòng lặp, tính từ điểm bắt đầu được chọn trước, rồi mở rộng việc xét ra các điểm kề với điểm hiện tại nhưng chưa được xét, sau đó xét các điểm này và đưa chúng vào danh sách điểm đã xét, đến khi đạt được đích đến mong muốn Thuật toán đảm bảo tìm ra đường đi có chi phí thấp nhất đến mục tiêu, với điều kiện các cạnh không có chi phí âm
Thuật toán Dijkstra’s được công bố lần đầu vào năm 1959 bởi nhà khoa học máy tính người Hà Lan Edsger Dijkstra trong bài báo “A Note on Two Problems in Connexion with Graphs” Thuật toán này là một trong những thuật toán quan trọng nhất trong lĩnh vực đồ ĐỒ ÁN TỐT NGHIỆP 17 thị và tối ưu hóa, được sử dụng rộng rãi để tìm đường đi ngắn nhất giữa các đỉnh trong đồ thị có trọng số không âm [9]
Cách thức hoạt động của thuật toán Dijsktra’s như sau:
Bước 1: Thêm nút bắt đầu vào OPEN:
- Bước này bắt đầu thuật toán bằng cách thêm nút bắt đầu vào tập hợp OPEN Đây là nơi các nút chờ được duyệt
Bước 2: Lặp lại cho đến khi không còn nút nào trong OPEN:
- Nếu không còn nút nào trong OPEN, thuật toán kết thúc với kết quả là không tìm thấy đường đi từ nút bắt đầu đến đích
Bước 3: Lấy nút đầu tiên từ OPEN và gọi là O, sau đó thêm O vào CLOSED:
- Nếu nút O là nút đích, thuật toán kết thúc với kết quả là tìm thấy đường đi từ nút bắt đầu đến nút đích
Bước 4: Tìm tất cả các nút láng giềng của nút O (các nút không thuộc OPEN và CLOSED):
- Thêm các nút láng giềng này vào tập hợp OPEN và sắp xếp chúng theo thứ tự tăng dần của khoảng cách từ nút bắt đầu đến nút láng giềng
- Đây là bước quan trọng để duyệt qua các đường đi có thể từ nút bắt đầu
Bước 5: Quay lại bước 2 (lặp lại quá trình):
- Sau khi xử lý nút O và các nút láng giềng của nó, thuật toán quay lại bước 2 để tiếp tục tìm kiếm đường đi
OPEN: Tập hợp các nút chờ được duyệt
CLOSED: Tập hợp các nút đã được duyệt
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 18
Nút láng giềng: Các nút kề với nút hiện tại O
Khoảng cách từ nút bắt đầu: Là khoảng cách từ nút bắt đầu đến nút đang xét.
Thuật toán DWA
Thuật toán DWA là một thuật toán được sử dụng trong điều khiển chuyển động robot, đặc biệt là trong các tình huống tránh vật cản và di chuyển trong môi trường động Thuật toán này được giới thiệu lần đầu tiên năm 1997 trong một bài báo khoa học bởi tác giả
Dieter Fox, Wolfram Burgard, và Sebastian Thrun Trong bài báo này, các tác giả đã mô tả cách tiếp cận cửa sổ động (Dynamic Window Approach) để tránh va chạm, bao gồm cả các khái niệm, thuật toán, và các kết quả thực nghiệm để chứng minh tính hiệu quả của phương pháp này [10]
DWA sử dụng một cửa sổ động trong không gian vận tốc của robot Thay vì xem xét tất cả các vận tốc có thể, DWA chỉ xem xét một tập hợp con các vận tốc có thể trong một khoảng thời gian ngắn, được gọi là “cửa sổ động” Tập hợp con này được xác định bởi các ràng buộc động lực học của robot và các yêu cầu an toàn để tránh va chạm Thuật toán bao gồm hai phần chính: không gian tìm kiếm (search space) và tối ưu (optimization), cụ thể từng phần như sau:
Search space (Không gian tìm kiếm): Không gian tìm kiếm của các vận tốc khả thi được giảm thiểu qua ba bước:
- Circular trajectories (Quỹ đạo tròn): Thuật toán DWA chỉ xem xét các đường đi tròn (độ cong) được xác định bởi các cặp vận tốc tuyến tính và góc( , ) v Điều này tạo ra một không gian tìm kiếm hai chiều về vận tốc
- Admissible velocities (Vận tốc khả thi): Việc giới hạn vào các vận tốc khả thi đảm bảo rằng chỉ những đường đi an toàn mới được xem xét Một cặp vận tốc( , ) v được coi là khả thi nếu robot có thể dừng lại trước khi chạm đến vật cản gần nhất trên đường đi tương ứng ĐỒ ÁN TỐT NGHIỆP 19
- Dynamic window (Cửa sổ động): Cửa sổ động giới hạn các vận tốc khả thi chỉ trong những vận tốc có thể đạt được trong một khoảng thời gian ngắn, với gia tốc giới hạn của robot
Optimization (Tối ưu hóa): Hàm mục tiêu sau đây được tối ưu hóa để tìm ra cặp vận tốc tốt nhất:
, , : là các trọng số theo thứ tự của heading dist vel, ,
: làm mượt tổng trọng số của ba thành phần này và dẫn đến việc tạo ra khoảng cách an toàn lớn hơn từ các vật cản
Dựa trên vị trí và hướng hiện tại của robot, hàm mục tiêu này cân nhắc các khía cạnh sau:
- Target heading (Hướng mục tiêu): Thành phần heading đo lường mức độ tiến bộ hướng về vị trí mục tiêu Giá trị này đạt tối đa khi robot di chuyển trực tiếp về phía mục tiêu
- Clearance (Khoảng cách an toàn): Thành phần distlà khoảng cách đến vật cản gần nhất trên đường đi Khoảng cách càng nhỏ, nhu cầu của robot tránh vật cản càng cao
- Velocity (Vận tốc): Thành phần vel là vận tốc tiến tới của robot, hỗ trợ di chuyển nhanh chóng.
Tổng quan về hệ điều hành robot (ROS)
ROS là một hệ điều hành đã trở nên vô cùng phổ biến trong lĩnh vực nghiên cứu về robotics, cộng đồng ROS vô cùng lớn mạnh bao gồm các nhà nghiên cứu, người đam mê có sự quan tâm nhất định về robotics và cả các doanh nghiệp Nó là một bộ phần mềm với mã nguồn mở cung cấp các khung phần mềm cho phát triển robot Hiện tại, ROS chỉ hoạt
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 20 động trên các hệ điều hành với nền tảng là hệ điều hành Unix Phần mềm dành cho ROS chủ yếu được thử nghiệm trên hệ thống Ubuntu và Mac OS X
ROS nhằm mục đích thúc đẩy sự chia sẻ và hợp tác, với các mục tiêu bổ sung như gọn nhẹ và dễ tích hợp với các khung phần mềm robot khác Nó khuyến khích sử dụng các thư viện không phụ thuộc vào ROS với các giao diện rõ ràng và hỗ trợ nhiều ngôn ngữ lập trình như Python, C++ và Lisp, cùng với hỗ trợ thử nghiệm cho Java và Lua ROS bao gồm một khung kiểm tra tích hợp, rostest, để kiểm tra đơn vị và tích hợp dễ dàng Ngoài ra, nó được thiết kế để mở rộng tốt cho các hệ thống chạy lớn và các quy trình phát triển mở rộng
ROS gồm ba thành phần chính gồm: ROS File System Level, ROS Computation Graph Level và ROS Community Level
Tương tự như một hệ điều hành, các tệp ROS cũng được tổ chức trên ổ cứng theo một cách cụ thể Ở cấp độ này, chúng ta có thể thấy cách các tệp này được sắp xếp trên đĩa Biểu đồ sau đây cho thấy cách các tệp và thư mục ROS được tổ chức trên ổ cứng:
Hình 2.7 ROS File System Level
Packages: Là thành phần trung tâm của hệ thống ROS, bao gồm một hoặc nhiều node
ROS, các thư viện, các tệp cấu hình và các thành phần khác ĐỒ ÁN TỐT NGHIỆP 21
Package manifest: Là một tệp cấu hình bao gồm trong từng gói ROS, cung cấp mô tả chi tiết về gói và thông tin về gói mà nó thuộc về
Meta packages: Đề cập đến một hoặc nhiều gói phần mềm liên quan được tổ chức một cách tổng quát, thường là để đơn giản hóa quản lý và phân phối các gói liên quan
Meta packages manifest: Là một tệp đặc biệt trong ROS dùng để mô tả và cung cấp thông tin chi tiết về metapackage, giúp quản lý và sử dụng các gói tóm tắt một cách hiệu quả
Messages: Trong ROS, các tệp message (.msg) được dùng để định nghĩa các thông điệp cụ thể mà các node ROS sẽ trao đổi với nhau
Services: Để mô tả yêu cầu và phản hồi của một dịch vụ tùy chỉnh trong ROS, sử dụng các tệp srv Đây là nơi để định nghĩa cấu trúc và định dạng dữ liệu cho yêu cầu và phản hồi của dịch vụ
Repositories: Hầu hết các gói ROS được quản lý bằng Hệ thống Quản lý Phiên bản
(VCS) như Git, Subversion (SVN), Mercurial (Hg), và các công cụ tương tự Một nhóm các gói sử dụng cùng một VCS có thể được gọi là các kho mã nguồn Các gói trong các kho mã nguồn này có thể được phát hành bằng công cụ tự động hóa phát hành catkin được gọi là bloom
Misc: Thường được dùng để lưu trữ những tệp tin, gói phần mềm, hoặc các chức năng nhỏ mà không thuộc vào các danh mục cụ thể khác
Trong ROS, việc tính toán và xử lý dữ liệu được đảm nhận bởi một mạng gọi là
“Computation Graph” Dưới đây là sơ đồ thể hiện các thành phần đóng vai trò cung cấp dữ liệu và quản lý kết nối trong mạng, thông qua các phương thức và hình thức giao tiếp riêng biệt của mình
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 22
Hình 2.8 ROS Computation Graph Level
Nodes: Mỗi node là một đơn vị cơ bản, tương đương với một tệp thực thi chứa logic chương trình Việc tạo một node với một nhiệm vụ cụ thể sẽ đảm bảo sự thuận tiện trong việc quản lý và sử dụng chúng Khi lập trình, mỗi node đăng ký thông tin như tên, loại message, địa chỉ URI, và số cổng Với thông tin này, node có thể linh hoạt vai trò như publisher, subscriber, service server, hoặc service client thực hiện trao đổi thông điệp qua các topic và services
Master: Là thành phần trung tâm hoạt động riêng biệt, quản lý và điều hành các kết nối và thông tin giữa các node trong hệ thống ROS Các node đăng ký với ROS Master để giao tiếp với nhau, nhận địa chỉ và thông tin về các topic, service, và parameter server cần thiết Dù ROS Master thiết lập kết nối, các node vẫn có thể tiếp tục trao đổi dữ liệu ngay cả khi ROS Master ngừng hoạt động
Parameter Server: Là thành phần quan trọng của ROS Master, cung cấp một không gian lưu trữ và chia sẻ thông số cấu hình của các node trong hệ thống, cũng như cho phép các node có thể truy cập và tùy ý điều chỉnh các giá trị này ĐỒ ÁN TỐT NGHIỆP 23
Messages: Là phương thức để các node trao đổi dữ liệu với nhau thông qua các topic
Các message chứa thông tin cụ thể và được truyền giữa các node nhằm thực hiện các chức năng trong hệ thống ROS
Topics: Là một kênh truyền thông trong ROS, qua đó các message được gửi và nhận
Khi một node gửi message qua một topic, nó được gọi là publisher của topic đó, và khi một node nhận message từ topic này, nó được gọi là subscriber Mỗi topic có một tên duy nhất, bất kể node nào cũng có quyền truy cập vào topic này gửi dữ liệu qua đó với điều kiện là chúng có cùng kiểu dữ liệu message, đặc biệt có sự hỗ trợ về cách thức giao tiếp giữa publisher và subcriber bao gồm 1:1, 1:N, N:1 và cả N:N phụ thuộc vào mục đích sử dụng
Services: Là một cơ chế trong ROS dùng để xử lý yêu cầu và phản hồi trong các ứng dụng yêu cầu tương tác theo mô hình request/response Service cho phép một node server cung cấp một dịch vụ với tên xác định, và node client có thể gửi yêu cầu đến server và nhận phản hồi từ nó
Bags: Là một định dạng để lưu trữ và phát lại dữ liệu message trong ROS; hữu ích khi làm việc với các cơ chế robot phức tạp
Giới thiệu về phần mềm
2.9.1 Giới thiệu phần mềm Gazebo
Gazebo là một phần mềm mô phỏng cho robot và hệ thống robot tự động Sau khi thiết kế 3D cho robot bước tiếp theo là mô phỏng Gazebo sẽ cung cấp một môi trường mô phỏng cho các robot được tích hợp với hệ thống điều khiển và phân tích của ROS Người dùng có thể sử dụng Gazebo để mô phỏng cánh tay robot hoặc mobile robot
Gazebo ROS cung cấp các công cụ để mô phỏng robot, tích hợp cả môi trường indoor và outdoor, người sử dụng có thể mô phỏng cảm biến và môi trường xung quanh Trong Gazebo đã mô phỏng các mẫu robot có sẵn người dùng có thể sử dụng mà không cần phải tạo hay thiết kế robot Gazebo có thể được cài đặt mà không cần cài đặt ROS nhưng người dùng nên cài đặt ROS – Gazebo để có thể kết nối ROS với Gazebo
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 26
Hình 2.10 Giao diện người dùng của phần mềm Gazebo
Giao diện người dùng (GUI) của Gazebo là một môi trường để người dùng tương tác với robot và môi trường trong Gazebo Giao diện này cung cấp các công cụ và thanh điều khiển để thao tác với các mô hình robot, thiết lập môi trường, thay đổi các tham số mô phỏng, và quan sát kết quả
Một số tính năng của GUI Gazebo bao gồm:
Mô hình hóa robot và môi trường: Cho phép bạn thêm, chỉnh sửa và xóa các đối tượng trong mô phỏng, bao gồm các robot, vật thể, và các bề mặt môi trường
Thanh điều khiển và menu: Cung cấp các nút chức năng, thanh công cụ và menu để truy cập các tính năng như chạy/pause mô phỏng, điều khiển thời gian, lưu lại trạng thái mô phỏng, và nhiều tính năng khác
Cửa sổ mô phỏng: Hiển thị các cảm biến và dữ liệu từ robot và môi trường, cho phép theo dõi và phân tích hành vi của robot trong mô phỏng
Công cụ debug và giám sát: Cung cấp các công cụ để kiểm tra lỗi, debug, và giám sát các thông số vật lý và điều khiển của robot trong quá trình mô phỏng ĐỒ ÁN TỐT NGHIỆP 27
2.9.2 Giới thiệu về phần mềm Rviz
Rviz (ROS Visualization) là một công cụ quan trọng và mạnh mẽ trong lĩnh vực phát triển robot, đặc biệt trong việc hiển thị không gian 3D, sử dụng để hiển thị và tương tác với dữ liệu từ robot và môi trường xung quanh từ các cảm biến như quét laser, pointcloud và camera, Giúp cho việc kiểm tra mô hình, lập kế hoạch đường đi và phát hiện vật cản trở nên dễ dàng hơn
Hình 2.11 Giao diện người dùng của phần mềm Rviz
Nhờ vào tính linh hoạt khả năng tùy chỉnh cao, Rviz không chỉ được sử dụng để phát triển phần mềm robot mà còn trong nghiên cứu lập kế hoạch chuyển động, điều khiển robot, và các ứng dụng phức tạp khác
Với tính chất mã nguồn mở và miễn phí, Rviz là công cụ quan trọng và sẵn sàng hỗ trợ cộng đồng phát triển robot trên toàn cầu, giúp tang cường sự hiểu biết và tiến bộ trong lĩnh vực công nghệ
2.9.2.1 URDF mô phỏng một rô-bốt và hiển thị trạng thái của nó bằng hai chương trình đi kèm với ROS: Gazebo và rviz Gazebo là một trình mô phỏng 3D cho phép giả lập rô-bốt và môi trường xung quanh với các đặc tính vật lý như trọng lực, tốc độ, gia tốc, v.v., tương tự như
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 28 trong thế giới thực Khi không có rô bốt thật hoặc muốn kiểm tra rô bốt trong môi trường ảo trước khi thử ngoài đời, nên sử dụng Gazebo, Rviz (ROS Visualization) là phần mềm trực quan hóa 3D giúp theo dõi trạng thái của rô-bốt như dữ liệu cảm biến (hình ảnh, pointcloud, quỹ đạo, v.v.) hoặc chuyển đổi giữa các tọa độ khác nhau Rviz có thể được sử dụng cho cả rô-bốt thật và mô phỏng Để mô phỏng rô-bốt trong ROS, cần mô tả nó trong một file URDF (Unified Robot Description Format) URDF là một tệp XML cho phép bạn mô tả các thuộc tính vật lý quan trọng của rô-bốt như liên kết (link), khớp nối (joint), hình dạng, màu sắc, va chạm (collision), v.v
Hình 2.12 Rviz và Gazebo mô tả Robot qua URDF
Xuất file Solidworks qua URDF:
• Đầu tiên tải Solidworks to URDF Exporter:
SolidWorks to URDF exporter là một tiện ích bổ sung của SolidWorks giúp xuất các bộ phận và cụm lắp ráp thành tệp URDF Tiện ích này tạo ra gói ROS bao gồm các thư mục cho mesh, texture và robot Với các bộ phận đơn lẻ, nó lấy thuộc tính vật liệu và tạo một liên kết trong URDF Với các cụm lắp ráp, nó tạo các liên kết và cây phân cấp dựa trên cấu trúc của Solidworks, đồng thời tự động xác định loại khớp nối, phép biến đổi và trục phù hợp ĐỒ ÁN TỐT NGHIỆP 29
• Tiếp theo, đặt trục cho mô hình theo hệ tọa độ chung những trục không xoay sẽ đặt Coordinate System, các trục xoay sẽ đặt bằng axis, các hệ trục Coordinate System như base_link, base_footprint, base_scan,…
• Sau khi đặt trục xong thì chỉnh lại thông số mô hình về khối lượng, tính chất vật lý,…
• Sau đó Export ra file URDF
• Sẽ ra 2 file display.launch, gazebo.launch: display.launch (sử dụng xuất robot model lên Rviz), Gazebo.launch (bao gồm robot model và các tính chất vật lý của robot)
Giới thiệu về gói Navigation Stack trong ROS
Gói “Navigation Stack” trong ROS là một tập hợp các công cụ phần mềm được thiết kế để hỗ trợ robot di động tự động hóa trong việc điều hướng và điều khiển Đây là một giải pháp phần mềm quan trọng cho các ứng dụng robot tự động hóa trong nhiều lĩnh vực như dịch vụ giao hàng tự động, robot dịch vụ, và nghiên cứu robot
Navigation Stack cung cấp các thuật toán và công cụ cho robot để tự định vị trong không gian, xây dựng bản đồ của môi trường xung quanh, và lập kế hoạch đường đi từ vị trí hiện tại đến điểm đích Điều này giúp robot có khả năng di chuyển an toàn, tránh vật cản và tối ưu hóa đường đi, đồng thời cải thiện hiệu quả và độ chính xác của hoạt động tự động
Bằng cách tích hợp các thành phần như SLAM, Path Planning (lập kế hoạch đường đi), và Motion Control (điều khiển chuyển động), Navigation Stack cho phép robot hoạt động độc lập trong môi trường phức tạp mà không cần sự can thiệp của con người Điều này làm cho gói navigation stack trở thành một công cụ quan trọng và mạnh mẽ cho phát triển và triển khai các ứng dụng robot di động trong thực tế Cấu trúc của gói navigation được thể hiện trong hình 2.14 dưới đây:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 36
Hình 2.19 Mô hình gói Navigation Stack Đối với một gói navigation thì những thành phần sau đây phải cần có các gói: move_base: Giúp robot lập kế hoạch đường đi dựa trên bản đồ và thông tin về điểm đích, giúp robot đến được vị trí mong muốn slam_gmapping: Được sử dụng để tạo ra bản đồ từ dữ liệu thu thập bởi lidar
AMCL: Giúp xác định vị trí hiện tại của robot trong bản đồ đã được tạo ra
Gói quan trọng nhất trong navigation là gói move_base, bao gồm hai phần chính: lập kế hoạch đường đi toàn cục (global planner) và lập kế hoạch đường đi cục bộ (local planner) Gói này giúp tạo ra lộ trình tổng thể và đồng thời điều chỉnh lộ trình này để tránh các vật cản xung quanh, đảm bảo robot di chuyển an toàn và hiệu quả.
Giới thiệu về Qt Designer
Qt Designer là một công cụ phát triển giao diện đồ họa (GUI) được tích hợp trong bộ công cụ Qt của Qt Company Được thiết kế để hỗ trợ việc thiết kế và phát triển các ứng dụng đa nền tảng, Qt Designer cung cấp một giao diện đồ họa trực quan cho người phát triển để thiết kế và chỉnh sửa giao diện người dùng một cách dễ dàng
Qt Designer cho phép người dùng kéo và thả các thành phần giao diện như nút bấm, ô văn bản, danh sách, thanh trượt, và các widget khác vào cửa sổ thiết kế Người dùng có thể ĐỒ ÁN TỐT NGHIỆP 37 tinh chỉnh các tính năng và hành vi của các widget này bằng cách sử dụng các thuộc tính và sự kiện có sẵn
Một trong những điểm mạnh của Qt Designer là tích hợp tốt với Qt Creator, môi trường phát triển tích hợp (IDE) của Qt, cho phép người dùng thiết kế giao diện và lập trình ứng dụng trong cùng một nơi Qt Designer cũng hỗ trợ việc sử dụng các lớp và phương thức được tạo tự động bởi Qt, giúp giảm thiểu thời gian và công sức cần thiết cho việc phát triển phần giao diện người dùng của ứng dụng
Tóm lại, Qt Designer là một công cụ quan trọng trong bộ công cụ Qt, giúp người phát triển tạo ra các giao diện người dùng đẹp và hiệu quả một cách nhanh chóng và tiện lợi
Qt Framework được phát triển bằng ngôn ngữ C++ Điều này có nghĩa là bạn có thể sử dụng C++ để phát triển ứng dụng sử dụng Qt Qt cũng hỗ trợ các ngôn ngữ khác thông qua các liên kết và công cụ, ví dụ như Python thông qua PyQt hay PySide, JavaScript thông qua Qt for WebAssembly, và cả Rust thông qua công cụ qtRust
Ngoài ra, Qt còn hỗ trợ việc phát triển ứng dụng di động sử dụng C++ và QML (Qt Modeling Language), một ngôn ngữ mô tả giao diện người dùng dựa trên JavaScript Điều này cho phép phát triển ứng dụng di động đa nền tảng bằng cách sử dụng C++ cho logic nền tảng và QML cho phần giao diện người dùng
Hình 2.20 Giao diện điều khiển chính phần mềm Qt Designer
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 38
Giới thiệu về Web Server
ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện người dùng hay UI Trong lập trình ứng dụng front – end, lập trình viên thường sẽ phải làm việc với các thành phần sau:
Component-Based: ReactJS sử dụng mô hình component-based, nghĩa là giao diện được chia thành các thành phần nhỏ, tái sử dụng được Mỗi thành phần (component) là một phần tử giao diện độc lập, có thể quản lý trạng thái và vòng đời của riêng nó
Virtual DOM: React sử dụng Virtual DOM (Document Object Model ảo) để tăng hiệu suất Khi trạng thái của một component thay đổi, React sẽ tạo một cây DOM ảo mới và so sánh nó với cây DOM ảo trước đó Chỉ những thay đổi thực sự cần thiết mới được áp dụng lên DOM thật, giúp tối ưu hóa hiệu suất
JSX: React sử dụng một cú pháp đặc biệt gọi là JSX (JavaScript XML), cho phép viết HTML trong JavaScript JSX làm cho code dễ đọc và viết hơn, và nó sẽ được biên dịch thành JavaScript thông qua các công cụ như Babel
Các tính năng chính: ĐỒ ÁN TỐT NGHIỆP 39
State Management: React quản lý trạng thái của ứng dụng một cách hiệu quả Các công cụ như Redux hoặc Context API thường được sử dụng kết hợp với React để quản lý trạng thái phức tạp
Lifecycle Methods: React cung cấp các phương thức vòng đời (lifecycle methods) như componentDidMount, componentDidUpdate, và componentWillUnmount, giúp lập trình viên kiểm soát hành vi của component tại các thời điểm khác nhau trong vòng đời của nó
Hooks: Với phiên bản React 16.8, Hooks được giới thiệu, mang lại khả năng sử dụng state và các tính năng khác của React mà không cần viết các class component Một số hooks phổ biến gồm useState, useEffect, và useContext
EmailJS là một dịch vụ cho phép bạn gửi email trực tiếp từ JavaScript mà không cần thiết lập backend/server Điều này rất hữu ích cho các nhà phát triển web muốn thêm tính năng gửi email vào các ứng dụng web mà không cần phải triển khai server riêng để xử lý email Dưới đây là một số thông tin chi tiết về EmailJS:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 40
Hình 2.23 Giao diện làm việc chính của EmailJS
Dễ dàng tích hợp: EmailJS cung cấp các SDK và API đơn giản để tích hợp vào các ứng dụng web
Hỗ trợ nhiều dịch vụ email: Hỗ trợ nhiều nhà cung cấp dịch vụ email phổ biến như Gmail, Outlook, Yahoo, và SMTP tùy chỉnh
Bảo mật: Thông tin xác thực và cài đặt cấu hình được quản lý thông qua EmailJS Dashboard, giúp giảm thiểu nguy cơ lộ thông tin bảo mật trong mã nguồn client-side
Tùy chỉnh mẫu email: Hỗ trợ các mẫu email (templates) có thể tùy chỉnh, giúp bạn dễ dàng định dạng và cá nhân hóa email
Firebase là một nền tảng dịch vụ điện toán đám mây của Google, được thiết kế để giúp các nhà phát triển xây dựng và triển khai các ứng dụng di động và web một cách nhanh chóng và dễ dàng Firebase cung cấp một loạt các dịch vụ đa dạng, từ lưu trữ dữ liệu đến xử lý người dùng, phân tích, thông báo đẩy, đến chức năng chạy các hoạt động dựa trên máy chủ (serverless computing) ĐỒ ÁN TỐT NGHIỆP 41
Các tính năng chính của Firebase bao gồm:
Realtime Database: Cơ sở dữ liệu thời gian thực cho phép đồng bộ dữ liệu giữa nhiều người dùng và thiết bị một cách tức thời
Firestore: Cơ sở dữ liệu NoSQL dựa trên tài liệu (document-based) cung cấp tính năng truy vấn mạnh mẽ và linh hoạt hơn so với Realtime Database
Authentication: Dịch vụ quản lý xác thực người dùng với hỗ trợ nhiều phương thức đăng nhập như email/password, Google, Facebook, Twitter, và nhiều hơn nữa
Storage: Dịch vụ lưu trữ dữ liệu đa phương tiện như hình ảnh, video, và tệp tin khác trên nền tảng đám mây của Google
Hosting: Dịch vụ cho phép phát triển và triển khai các trang web và ứng dụng web tĩnh một cách dễ dàng
Cloud Functions: Cho phép bạn viết và triển khai các hàm backend mà không cần quản lý máy chủ, dựa trên các sự kiện trong ứng dụng của bạn
Analytics: Cung cấp thông tin chi tiết về hoạt động của người dùng để bạn có thể hiểu và cải thiện trải nghiệm của họ
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 42
Remote Config: Cho phép bạn điều chỉnh cấu hình ứng dụng mà không cần phải cập nhật lại từng ứng dụng
Cloud Messaging: Cung cấp các dịch vụ thông báo đẩy để giữ cho người dùng của bạn luôn kết nối và thông báo khi cần thiết.
Cách xác định vị trí xe trên bản đồ
Robot tự hành luôn hoạt động ở các môi trường với cấu trúc luôn thay đổi, theo thời gian các dữ liệu bản đồ sẽ không giống như ban đầu, đòi hỏi robot phải luôn thích nghi, tự học để tìm kiếm hướng đi phù hợp và tối ưu cho mình Vì vậy, một trong những yếu tố quan trọng nhất trong quá trình tự hành của mình là robot phải xác định được chính xác vị trí hiện tại trên bản đồ Vậy bằng cách nào mà robot có thể xác định được vị trí của mình? Câu trả lời là nhờ các thông tin từ cảm biến Từng cảm biến sẽ cung cấp 1 thông tin, như cảm biến đo lường chuyển động (IMU) sẽ đưa thông tin về vị trí và hướng quay của robot, cảm biến encoder sẽ đưa thông tin về vận tốc dài và vận tốc quay Kết hợp 2 thông tin từ 2 cảm biến để cập nhật vị trí và hướng quay hiện tại của robot tự hành từ vị trí xuất phát ban đầu phương pháp này gọi là Odometry
2.13.1 Nguyên lý hoạt động của cảm biến đo lường chuyển động (IMU) Đối với xe tự hành sử dụng cảm biến IMU sẽ dựa vào gia tốc kế (accelerometer) được tích hợp trong nó để xác định hướng quay của xe ĐỒ ÁN TỐT NGHIỆP 43
Hình 2.25 Trục x, y, z theo cảm biến IMU
Như ta đã biết, ở mọi nơi trên trái đất đều có 1 gia tốc trọng trường g với giá trị sấp xỉ bằng 9.81(m/s 2 ) và cảm biến IMU cũng sẽ chịu ảnh hường của gia tốc này Có nghĩa là nếu cảm biến ko di chuyển và được đặt bất kì trục nào của nó cùng hướng và phương với gia tốc trọng trường thì gia tốc trên trục đó sẽ bằng 9.81(m/s 2 ) và 2 trục còn lại sẽ bằng 0 Ngoài ra bất kì trường hợp nào khác 3 trường hợp dưới đây sẽ cho ra kết quả khác 9.81 ở
Hình 2.26 3 trường hợp có 1 trong 3 góc đặt cùng phương và hướng với gia tốc trọng trường
Từ gia tốc đo được trên mỗi trục để xác định 3 góc roll, pitch, yaw:
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 44
- Giả sử với roll khi ta xoay cảm biến quanh trục x
Hình 2.27 Cảm biến IMU khi quay quanh trục X
Sau khi quay được 1 góc cố định ta nhận thấy chiếc hộp đã tạo ra 3 góc lệch so với chiếc hộp ban đầu gọi là góc roll ( roll ) và nó sẽ chịu ảnh hưởng bởi sự thay đổi gia tốc của trục x, y và z theo công thức:
- Góc yaw cũng sẽ cho ra kết quả giống như trên
- Góc pitch khi xoay cảm biến theo trục y ĐỒ ÁN TỐT NGHIỆP 45
Hình 2.28 Cảm biến IMU khi quay quanh trục Y
Sau khi quay được 1 góc cố định ta nhận thấy chiếc hộp đã tạo ra 3 góc lệch so với chiếc hộp ban đầu gọi là góc roll ( pitch ) và nó sẽ chịu ảnh hưởng bởi sự thay đổi gia tốc của trục x, y và z theo công thức:
2.13.2 Nguyên lý hoạt động của cảm biến Encoder
Cảm biến encoder rất phổ biến trong các lĩnh vực liên quan tới điều khiển vận tốc, vị trí Cấu tạo của encoder gồm 2 đĩa quay với nhiều lỗ nhỏ và được đặt lệch nhau 90 độ
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 46
Hình 2.29 Dạng sóng thu được từ 2 đĩa của pha A và pha B
Từ dạng sóng cho thấy khi pha A chuyển trạng thái từ thấp lên cao thì pha B ở trạng thái thấp và khi pha A chuyển từ cao xuống thấp thì pha B ở mức cao đó là khi động cơ quay từ trái sang phải và ngược lại cho thấy động cơ đang quay từ phải sang trái
Trong Arduino, dữ liệu đọc từ encoder sẽ dùng hàm attachInterrupt(interrupt, ISR, mode) Với:
- Interrupt: chân ngắt encoder dùng để báo sự thay đổi trạng thái của pha A
- ISR: hàm ngắt gọi khi ngắt xảy ra dùng để đếm xung động cơ quay được
- Mode: trạng thái ngắt trong Arduino cho người dùng 4 cách và trong đề tài sử dụng CHANGE Nghĩa là ngắt sẽ được gọi khi pha A thay đổi trạng thái từ thấp lên cao hay ngược lại Ưu điểm của CHANGE so với các mode khác là độ nhạy cao cho phép hệ thống nhận ra bất kì sự thay đổi nào từ đó cập nhật thông tin kịp thời, tính chính xác giúp hệ thống luôn nhận đủ số xung mà động cơ đã thực hiện Đối với động cơ sử dụng trong đề tài là động cơ DC servo GA25-370 với tỉ số truyền là 217:1 nghĩa là muốn tính số xung khi trục chính quay 1 vòng thì phải lấy số xung mà ĐỒ ÁN TỐT NGHIỆP 47 encoder quay 1 vòng nhân cho 217 Và khi đo số xung 1 vòng của động cơ ở trạng thái CHANGE thì số xung thu được là 5050 xung/vòng
Như đã đề cập thì odometry là quá trình thu thập thông tin từ cảm biến, cụ thể là từ IMU và encoder để xác định và cập nhật bất kì sự thay đổi về vị trí của robot tự hành, nhờ đó giúp hệ thống theo sát được robot
Có một vấn đề quan trọng trong quá trình odometry là việc chọn bánh xe Bánh xe chất lượng cao hay thấp đều ảnh hưởng tới quá trình tính toán vị trí bởi nếu bánh xe ko đảm bảo được sự đồng bộ với cảm biến encoder thì sẽ dẫn tới sai số vị trí, làm giảm chất lượng hoạt động
Tuy nhiên, odometry có 1 nhược điểm là số lượng các phép tính khá nhiều nhưng đòi hỏi phải thực hiện trong thời gian ngắn nhằm liên tục cập nhật vị trí mục tiêu trên bản đồ Điều này đòi hỏi cao về phần cứng phải có đủ chất lượng để đảm bảo thực hiện tốt quá trình định vị robot Thêm vào đó, nếu bánh xe không đủ tốt dẫn tới trượt bánh cũng sẽ ảnh hưởng ít nhiều tới quá trình tính toán
Trọng tâm của lí thuyết xác định và cập nhật vị trí của robot tự hành là ở 2 giá trị là quãng đường đi được từ encoder và góc quay từ cảm biến IMU Đối với mô hình xe tự hành trong đồ án, có 2 bánh xe đặt ở trung điểm của 2 bên xe và cách trọng tâm của đế xe mỗi bánh là L = 0.127(m) với bán kính mỗi bánh là R = 0.425(m) và quan trọng 2 bánh này phải được đặt song song với nhau
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT ĐỒ ÁN TỐT NGHIỆP 48
Hình 2.30 Tư thế và các tham số nhằm xác định vị trí và hướng robot trong mặt phẳng XY
Khi xe di chuyển, từ giá trị thu được từ encoder ta sẽ thu được quãng đường mà xe đi được ở bánh trái và phải theo công thức:
Giải thích công thức: Muốn tìm quãng đường đã đi thì ta phải biết 1 vòng bánh lăn được bao nhiêu mét từ công thức tính chu vi bánh 2 3.14 R sau đó từ số xung đo được lấy chia cho số xung 1 vòng bánh lăn để biết bánh lăn được bao nhiêu vòng Lấy 2 dữ liệu chu vi và số vòng lăn để xác định quãng đường đã đi và suy ra quãng đường xe đi bằng công thức:
Và với góc quay thu được từ cảm biến IMU ta xác định được vị trí và hướng của xe trên mặt phẳng x y bằng công thức: cos( ) x = + x D + 2 (2.29) sin( ) y = + y D + 2 (2.30)
Với là giá trị hiện tại trừ đi giá trị trước đó của góc lệch
Như vậy, từ những sự tính toán trên hệ thống sẽ có thể liên tục cập nhật được vị trí và hướng hiện tại của robot.
TÍNH TOÁN VÀ THIẾT KẾ
Yêu cầu thiết kế
Những yêu cầu kỹ thuật ban đầu để tính toán thiết kế, cơ khí như sau:
- Địa hình cho robot hoạt động: trên mặt phẳng, không dốc nghiêng
- Mô hình xe đúng với mô hình động học của hệ Differential Drive Robots
- Thiết kế đơn giản, mô hình dễ lắp đặt, thay thế và sửa chửa
- Thiết kế robot với vận tốc di chuyển tối đa đạt 0.15 (m/s)
- Thiết kế bộ điều khiển PID vận tốc động cơ và vị trí cánh tay với sai số xác |exl| < 10% Thời gian xác lập txl < 1(s)
Sơ đồ khối mô tả hệ thống
Hình 3.1 Sơ đồ khối mô tả hệ thống ĐỒ ÁN TỐT NGHIỆP 53
Hình 3.1 mô tả các thành phần có trong hệ thống và cách chúng tương tác với nhau như thế nào:
+) Máy tính nhúng đóng vai trò như một bộ não giúp xe có thể tự mình đưa ra những quyết định phức tạp như việc tìm đường tới với đúng vị trí yêu cầu trên bản đồ, khả năng quét và xử lí thông tin xuất hiện trên bản đồ và quan trọng nhất đối với yêu cầu cần xử lí ảnh thì yêu cầu phải là máy tính thì mới xử lí nổi
+) Nguồn Jetson nano chính hãng cấp nguồn riêng cho jetson nhằm bảo vệ và hạn chế hư hại Jetson
+) PC đóng vai trò giúp người điều khiển làm việc trên jetson nano và được kết nối với nhau qua Wifi
+) Lidar đóng vai trò như con mắt của xe hỗ trỡ việc định hướng trên bản đồ và được kết nối qua cổng USB với Jetson nano
+) Camera cũng tương tự lidar nhưng là cặp mắt của cánh tay robot hỗ trợ gắp hàng kết nối với Jetson qua USB
+) 2 Arduino đóng vai trò cầu nối từ Jetson để điều khiển bánh xe và cánh tay Chúng được kết nối với Jetson qua USB
+) L298 nhận tính hiệu từ Arduino để điều khiển động cơ của bánh xe và các khớp robot Kết nối với Arduino qua dây bus
+) Động cơ DC servo dùng nguồn 12V được điều khiển bằng L298
+) IMU và encoder đóng vai trò hỗ trợ hệ thống xác định vị trí và hướng của xe
+) Cảm biến tiệm cận giúp Arduino gửi tín hiệu cho relay điều khiển máy bơm giúp cánh tay gắp vật
+) Nguồn 12V cung cấp cho các thành phần liên kết với arduino
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 54
Thiết kế khung xe và cánh tay 3 bậc
Các bản vẽ dưới đây dùng đơn vị mm
Hình 3.2 Bản vẽ và kích thước khung nhôm
- Bản vẽ vỏ mica dày 10mm
+) Bản vẽ thùng xe và vỏ hông xe ĐỒ ÁN TỐT NGHIỆP 55
Hình 3.3 Bản vẽ và kích thước phần thùng chứa hàng và vỏ hông xe
+) Bản vẽ mặt trước của xe
Hình 3.4 Bản vẽ và kích thước mặt trước xe
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 56
Hình 3.5 Bản vẽ và kích thước nóc xe ĐỒ ÁN TỐT NGHIỆP 57 +) Bản vẽ đế xe
Hình 3.6 Bản vẽ và kích thước đế xe
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 58
- Bản vẽ khớp 1 (hình giữa), bên trái là phần dưới,bên phải là phần trên
Hình 3.7 Bản vẽ khung bên ngoài khớp 1
Hình 3.8 tới hình 3.20 là kích thước bản vẽ và mô hình 3D phần dưới khớp 1
Hình 3.8 Kích thước bản vẽ phần dưới khớp 1 ĐỒ ÁN TỐT NGHIỆP 59
Hình 3.9 Độ cao 13.46mm của phần dưới khớp 1
Hình 3.10 Phần nhô cao 2mm
Hình 3.11 Phần khoét sâu 3mm
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 60
Hình 3.12 Phần khoét sâu 3.2mm
Hình 3.20 tới hình 3.27 là kích thước và bản vẽ 3D phần trên khớp 1
Hình 3.13 Kích thước bản vẽ phần trên khớp 1
Hình 3.14 Độ cao 41.15mm phần trên khớp 1 ĐỒ ÁN TỐT NGHIỆP 61
Hình 3.15 Độ cao 30mm phần nhô lên phần trên khớp 1
Hình 3.16 Độ sâu 13.2mm phần khoét
Hình 3.17 Độ sâu 24.2mm khoét mặt phía sau phần trên khớp 1
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 62
Hình 3.18 Độ dày lỗ 2.8mm mặt phía sau phần trên khớp 1
Hình 3.19 Độ cao 2.2mm khoét mặt phía sau phần trên khớp 1 ĐỒ ÁN TỐT NGHIỆP 63
Hình 3.20 Chu vi 82.94mm đường tròn mặt sau phần trên khớp 1
Hình 3.21 tới hình 3.28 là kích thước bánh răng đơn và bánh răng cycloidal khớp 1 Bánh răng đơn
Hình 3.21 Đường kính mặt tròn 13.17mm, độ cao 17mm và lỗ có độ lệch trục 2.3mm trên mặt tròn của bánh răng đơn
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 64
Hình 3.22 Kích thước lỗ của bánh răng đơn
Hình 3.23 Bánh răng đơn xoắn 360 o để khớp với bánh răng cycloidal của khớp 1
Các kích thước cần có để vẽ bánh răng cho driver khớp 1 gồm:
+) Bán kính bánh răng R = 60.417 (mm)
+) Bán kính răng Rr = 6.583 (mm)
+) độ lệch trục E = 2.3 (mm) Áp những thông số này vào công thức (2.15), (2.16) để vẽ bánh răng
+) Trục x ĐỒ ÁN TỐT NGHIỆP 65 sin((1 21)
60.417 sin( ) 6.583sin( arctan arctan 2.30sin(21 )
Hình 3.24 Đường kính mặt tròn nhỏ 54.8mm, mặt tròn lớn 80mm và độ cao 20mm của mặt tròn nhỏ
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 66
Hình 3.25 Độ cao 3mm đường tròn lớn
Hình 3.26 Đường kính mặt tròn 29.8mm và độ cao 7mm của nó ở mặt sau bánh rang khớp 1 ĐỒ ÁN TỐT NGHIỆP 67
Hình 3.27 Đường kính 42.2mm mặt tròn lớn và được khoét sâu 2.2mm mặt sau bánh răng khớp 1
Hình 3.28 Bánh răng với 20 răng nên được xoắn 18 o (360 o /20)
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 68
- Bản vẽ khớp 2 và 3 (hình giữa), bên trái là phần dưới,bên phải là phần trên
Hình 3.29 Hình ảnh thiết kế bên ngoài của driver khớp 2 và 3 ĐỒ ÁN TỐT NGHIỆP 69
Hình 3.30 Các thành phần bên ngoài của driver
Các thành phần trên chia thành phần đứng yên và phần chuyển động Phần nằm ở góc trên bên phải và dưới bên phải gọi là mặt trên và dưới phần đứng yên còn phần nằm ở góc trên bên trái và dưới bên trái gọi là mặt trên và dưới của phần chuyển động
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 70
Hình 3.31 Kích thước các góc nhìn của mặt trên phần đứng yên
Hình 3.32 Kích thước các góc nhìn của mặt dưới phần đứng yên ĐỒ ÁN TỐT NGHIỆP 71
Hình 3.33 Kích thước các góc nhìn mặt dưới của phần chuyển động
Hình 3.34 Kích thước các góc nhìn mặt trên của phần chuyển động
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 72
- Cấu tạo bên trong driver Cycloidal cho khớp 2 và 3
Hình 3.35 Cấu tạo bên trong driver cycloidal cho khớp 2 và 3
Bắt đầu với khớp nối thứ nhất gắn trực tiếp với động cơ, liên kết với nó có 1 khớp nối với độ lệch trục 1mm dùng để xoay bánh răng thứ nhất, có 1 vòng bi giữa khớp nối này với bánh răng giúp bánh rang chuyển động mượt mà Tương tự kết cấu với bánh rang thứ 2 nhưng khớp nối và bánh răng lần này được đặt lệch so với khớp nối và bánh rang thứ nhất
180 độ Thiết kế này nhằm tăng độ chính xác cho chuyển động của driver vì tránh được hiện tưởng rung lắc nếu chỉ có 1 bánh răng và cuối cùng kết thúc với 1 khớp nối không lệch trục như khớp nối động cơ
Hình 3.36 2 bánh răng được đặt lệch nhau 180 o
- Bản vẽ và kích thước các thành phần bên trong driver cycloidal cho khớp 2 và 3 Các kích thước cần có để vẽ bánh răng cho driver khớp 2 và 3 gồm:
+) Bán kính bánh răng R = 30.417(mm)
+) Bán kính răng Rr = 2.583 (mm) ĐỒ ÁN TỐT NGHIỆP 73
+) độ lệch trục E = 1 (mm) Áp những thông số này vào công thức (2.15), (2.16) để vẽ bánh răng
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 74
Hình 3.37 Kích thước khớp nối động cơ và khớp nối trên cùng của driver khớp 2 và 3 ĐỒ ÁN TỐT NGHIỆP 75
Hình 3.38 Kích thước khớp nối của bánh rang với độ lệch trục 1mm
Hình 3.39 Kích thước bánh răng đã được vẽ ở công thức 3.3 và 3.4
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 76
Hình 3.40 Các góc nhìn mô hình khung xe và cánh tay sau khi ghép lại
Hình 3.41 Kích thước 2 tầng của mô hình ĐỒ ÁN TỐT NGHIỆP 77
BỐ TRÍ LINH KIỆN TRÊN XE
Relay Động cơ khí nén
Hình 3.42 Bố trí linh kiện ở tầng 1 và tầng 2 của xe
Tính toán lựa chọn và lựa chọn động cơ cánh tay
3.4.1 Thiết kế khớp 3 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 78
Hình 3.43 Ước lượng khối lượng của khớp 3 và chiều dài khớp mà khớp 3 sẽ kéo
• Khối lượng ước tính: 0.25kg + 0.2kg ( các linh kiện bulong, đai ốc, vòng bi,…)
• Khoảng cách từ trục quay đến điểm tác động: sấp xỉ 150mm = 0.15m
Suy ra moment cần để kéo cho phần trên robot chuyển động là 3.22Nm (nhân thêm 4 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 3.22 Nm
3.4.2 Thiết kế khớp 2 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu gồm
2 khớp 3 và các thành phần trên phần chuyển động của khớp 2 ĐỒ ÁN TỐT NGHIỆP 79
Hình 3.44 Ước lượng khối lượng của khớp 1 và 2 và chiều dài 2 khớp mà khớp 1 sẽ kéo
• Khối lượng ước tính: 0.575kg + 0.1( của 1 động cơ) + 0.3kg( các linh kiện bulong, đai ốc, vòng bi,…) = 0.975
• Khoảng cách từ trục quay đến điểm tác động: sấp xỉ 390mm = 0.39m
Suy ra moment cần để kéo cho phần trên robot chuyển động là 11.2 Nm (nhân thêm 3 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 11.2 Nm
3.4.3 Thiết kế khớp 1 của cánh tay 3 bậc Để tính chọn động cơ cho khớp một ta tiến hành ước lượng khối lượng các khâu (gần tương đương khớp 2 nhưng hệ số trừ hao là 4) Cánh tay đòn có kích thước tương tự khớp
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 80
Suy ra moment cần để kéo cho phần trên robot chuyển động là 15 Nm (nhân thêm 5 – hệ số trừ hao theo kinh nghiệm), nhóm chọn động cơ với moment là 15 Nm
3.4.4 Chọn động cơ cho từng khớp
Dựa trên những tính toán trên, yêu cầu để cánh tay hoạt động ổn định và chính xác là chọn động cơ có khả năng tạo momen xoắn lớn hơn lí thuyết Kết hợp với trợ lực từ bộ driver giảm tốc cycloidal, từ đó động cơ được chọn là động cơ DC Servo GA25-370 DC Geared Motor
Hình 3.45 động cơ DC Servo GA25-370 DC Geared Motor dùng cho 3 khớp cánh tay
• Tỉ số truyền 217:1 (động cơ quay 217 vòng trục chính hộp giảm tốc quay 1 vòng)
• Dòng chịu đựng tối đa khi có tải: 750mA
• Tốc độ không tải: 39RPM (39 vòng 1 phút)
• Tốc độ chịu đựng tối đa khi có tải: 32RPM (32 vòng 1 phút)
• Lực kéo Moment định mức: 8KG.CM
• Lực léo Moment tối đa: 9KG.CM ĐỒ ÁN TỐT NGHIỆP 81
• Chiều dài hộp số L: 25mm
Với việc momen xoắn trên đầu ra (𝜏 𝑜𝑢𝑡 ) và đầu vào (𝜏 𝑖𝑛 ) có mối quan hệ với nhau thông qua tỉ số truyền động (ratio): in out ratio
= (3.1) Đối với cánh tay mỗi khớp có driver với tỉ số truyền là 1:20 và động cơ có momen xoắn là 8(kg.cm) chuyển sang Nm thì có giá trị là 0.78 Vậy ta có momen xoắn đầu ra là:
Với giá trị này thì đã đủ điều kiện để các khớp vận hành ổn định
3.4.5 Tính toán tải trọng tối đa của cánh tay
Tính tải cho cánh tay sẽ tính khi các khớp 2 và 3 của cánh tay đang ở vị trí khớp 1, khớp
2 và 3 chịu trọng lượng lớn nhất như trong hình 3.45 z0,z1 z2 x0 z3 x2 x1 Ɵ1 Ɵ2 Ɵ3 l1 l2 l3
Hình 3.46: Tư thế cánh tay khi khớp 1 chịu trọng lượng lớn nhất
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 82
Trong hình 3.45, khâu 2 của khớp 2 vuông góc với khâu 1 của khớp 1 và khâu của khớp 2 và 3 thẳng hàng với nhau
Tính tải lớn nhất của cánh tay để khớp 1 vẫn có thể hoạt động Theo công thức 3.8, ta có
T1 = 15 (Nm), T3 = 11.2, T3 = 3.22 Với momen tối đa mà động cơ qua driver cung cấp là 15.6 ta có thể tính x1 (tải max khớp 1), x2 (tải max khớp 2), x3 (tải max khớp 3) cho từng khớp như sau
Tính toán và chọn động cơ cho xe tự hành
Tổng khối lượng xe tính thêm cánh tay và một số mạch điều khiển thì sấp xỉ 6kg Để xe có thể di chuyển được đòi hỏi động cơ phải tạo được momen xoắn thắng được lực ma sát do xe tạo ra Đối với xe có 2 bánh chính và 3 bánh phụ thì khối lượng sẽ được chia đều cho 5 bánh vậy mỗi bánh sẽ chịu khoảng 1.2 kg Do đó tính momen xoắn cần cho 2 bánh chính ta tính như sau: Đầu tiên xác định lực ma sát tổng của xe:
• 𝜇 là hệ số ma sát Với bánh cao su và bề mặt gạch thì giá trị là 0.6
• 𝑚 là khối lượng xe với giá trị 6kg
• 𝑔 là gia tốc trọng trường với giá trị 9.81 m/s 2
Vậy hệ số ma sát tổng là:
Vậy hệ số ma sát 1 bánh chính phải chịu là: ĐỒ ÁN TỐT NGHIỆP 83
Từ đó tính momen xoắn cần cho mỗi bánh chính là:
Với R là bán kính bánh chính với giá trị 0.0425(m)
Hình 3.46 Bánh chính với bán kính 85mm
• Model: 85mm Hexagon Motor Coupling 12mm wheel V3
• Chất liệu: Nhựa, mút, cao su
Suy ra momen xoắn cần:
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 84
Với giá trị 0.3(Nm) thì động cơ DC Servo GA25-370 DC Geared Motor giống như cánh tay là phù hợp
Lựa chọn các thiết bị khác cho hệ cánh tay robot di động
3.6.1 Vi điều khiển Arduino Mega 2560 Đối với các đề tài của sinh viên với mục đích nghiên cứu, lập trình, xây dựng các hệ động điều khiển tự động, tạo các sản phẩm từ các linh kiện điện từ,… thì arduino luôn là lựa chọn hàng đầu về giá thành hay phạm vi khả năng những gì nó mang lại Arduino là một mã nguồn mở về cả phần cứng và phần mềm, hỗ trợ cho người dùng có thể lập trình và điều khiển các thiết bị điện tử Vì vậy với đề tài cần điều khiển động cơ với độ chính xác cao về vị trí và tốc độ thì Arduino là cần thiết Thêm nữa với nhiều loại Arduino trên thị trường như hiện nay thì tùy vào yêu cầu đề tài thì sẽ chọn ra loại phù hợp Với đề tài điều khiển động cơ dc có encoder thì việc đảm bảo đủ số chân ngắt và lượng chân digital để kết nối là rất quan trọng và dòng Arduino phù hợp với tiêu chí đó là Arduino Mega 2560
Hình 3.47 Vi điều khiển Arduino Mega 2560
Arduino mega 2560 hỗ trợ lên tới 5 chân ngắt là những chân 2, 3, 18, 19, 20, 21 cùng với lượng chân digital lớn lên tới 53 chân ĐỒ ÁN TỐT NGHIỆP 85
Hình 3.48 Sơ đồ các chân kết nối của Arduino Mega 2560
3.6.2 Mạch cầu H L298N Để điều khiển động cơ thì mỗi Arduino là chưa đủ vì động cơ dc dùng nguồn 12v và Arduino chỉ có thế cấp tín hiệu điều khiển với dòng điện nhỏ Vì vậy L298 xuất hiện với vai trò cầu nối hỗ trợ Arduino điều khiển L298 là mạch điều khiển động cơ phổ biến với giá thành rẻ và dễ sử dụng giúp đơn giản hóa quá trình điều khiển động cơ
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 86
Arduino thông qua L298 điều khiển động cơ bằng cách dùng PWM hay là điều chế độ rộng xung Thông qua chân ENA hoặc ENB Arduino sẽ đưa tin hiệu để thay đổi trạng ở
EN thay đổi liên tục theo 1 tần số nhất định từ đó tạo ra các giá trị điện áp đầu ra cấp cho động cơ, thời gian hay đổi giữa các mức cao và thấp ở EN càng nhanh thì điện áp cấp cho động cơ càng lớn
3.6.3 Webcam Rapoo C260 Đầu tiên là web camera hay webcam, là camera kết nối với máy tính trực tiếp qua cổng USB với kích thước nhỏ gọn, phù hợp để đặt lên cánh tay robot Với đa dạng các loại webcam trên thị trường thì việc kiếm ra 1 sản phẩm phù hợp với đề tài với các yêu cầu đơn giản như hình ảnh tốt có thể phân biệt được các loại màu chính xác, tốc độ khung hình trên giây từ 30 đến 60 và giá thành không quá đắt đỏ cũng như có thể dễ dàng tìm và mua được trong phạm vi khu vực thì nhóm đã lựa chọn webcam
- Model: C260 FullHD 1080p ĐỒ ÁN TỐT NGHIỆP 87
- Độ phân giải: FHD 1080P / HD 720P
- Hiệu chỉnh ánh sáng tự động: Có
- Hệ điều hành tương thích: Windows7/8/10 or above, Mac OS X 10.6 or above,Chrome OS,and Android v5.0 or above
- Đặc điểm nổi bật: Micro đa hướng, ống kính HD 1080p lấy nét tự động, đế / kẹp linh hoạt, cáp USB
3.6.4 Máy tính nhúng Jetson Nano
Xe tự hành như tên gọi là loại xe có khả năng tự đưa ra những quyết định, những hướng đi và giải quyết các vấn đề trong khi đang thực thi 1 nhiệm vụ nào đó Đối với đề tài cánh tay robot di động và gắp hàng theo đơn thì với khối lượng công việc khổng lồ đó thì máy tính nhúng đóng vai trò như một bộ não giúp xe có thể tự mình đưa ra những quyết định phức tạp như việc tìm đường tới với đúng vị trí yêu cầu trên bản đồ, khả năng quét và xử lí thông tin xuất hiện trên bản đồ và quan trọng nhất đối với yêu cầu cần xử lí ảnh thì yêu cầu phải là máy tính thì mới xử lí nổi, và trên thị trường có 1 số hãng phổ biến như Raspberry Pi, mini PC, NVIDIA Jetson,… Trong số đó nổi trội trong khả năng xử lí ảnh khá tốt và điều đó rất cần thiết cho đề tài Jetson Nano là một nền tảng mạnh mẽ với khả năng tính toán cao, được thiết kế để hỗ trợ các ứng dụng AI và Machine Learning Với các tính năng như GPU NVIDIA và bộ xử lý ARM Cortex-A57 quad-core, Jetson Nano có thể xử lý các ứng dụng phức tạp và đòi hỏi nhiều tính toán như ROS
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 88
Hình 3.51 Máy tính AI Jetson Nano Dev Kit With 16GB EMMC
- SKU: 21802 Part Number: JETSON-NANO-DEV-KIT
- Model: Jetson Nano Dev Kit with 16GB EMMC
- Coreboard: Jetson Nano Module with 16GB eMMC by NVIDIA
- Carrier Board: JETSON-IO-BASE-A by Waveshare
- CPU: Quad-core ARM A57 @ 1.43 GHz
- Memory: 4 GB 64-bit LPDDR4 25.6 GB/s
- Video Encode: 250 MP/s 1x 4K @ 30 [HEVC] 2x 1080p @ 60 [HEVC] 4x 1080p
- Video Decode: 500 MP/s 1x 4K @ 60 [HEVC] 2x 4K @ 30 [HEVC] 4x 1080p @
- Camera: 2 x MIPI CSI-2 DPHY lanes
- Connectivity: Gigabit Ethernet, M.2 Key E expansion connector ĐỒ ÁN TỐT NGHIỆP 89
- Display: HDMI and DP USB: 4x USB 3.0, USB 2.0 Micro-B
Nếu đã có bộ não là NVIDIA Jetson Nano thì muốn robot có khả năng tự định hướng, đọc và xử lí thông tin trên bản đồ thì cần có cảm biến giúp robot làm điều đó Và lựa chọn phổ biến nhất chính là cảm biến Lidar Lidar là một công nghệ đo khoảng cách và tạo hình ảnh từ xa bằng cách sử dụng sóng laser Công nghệ này hoạt động dựa trên nguyên lý phát ra các tia laser và đo thời gian mà các tia này phản chiếu lại từ các vật thể xung quanh để tính khoảng cách Cảm biến khoảng cách Lidar RPLIDAR A1M8 360° Laser Range Scanner được sản xuất bởi hãng SLAMTEC sử dụng cho các ứng dụng đo khoảng cách, phát hiện vật cản, lập bản đồ bằng tia Laser trong xe, robot tự hành, hệ thống chống trộm, , cảm biến có độ ổn định và độ chính xác cao Cảm biến khoảng cách Lidar RPLIDAR A1M8 360° Laser Range Scanner sử dụng giao tiếp UART nên có thể dễ dàng giao tiếp với Vi điều khiển, Máy tính nhúng hoặc kết nối máy tính qua mạch chuyển USB-UART và phần mềm đi kèm, cảm biến có khả năng quét xa với khoảng cách 0.15~12m, tốc độ quay 5.5Hz và tần số lấy mẫu lên đến 8000 điểm trên 1 giây
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 90
Hình 3.52 Cảm biến khoảng cách RPLIDAR A1M8
- Laser Range Scanner Ranging method: Triangulation Motor
- Driver: Brushed DC Motor System
- Voltage: 5VDC System Current: 100mA
- Output: UART Serial (3.3 voltage level)
- Range Resolution: ≤1% of the range (≤12m) ≤2% of the range (12~16m)
- Accuracy 1% of the range (≤3m) 2% of the range (3~5m) 2.5% of the range (5~12)
- Recommended applications: Vacuum robot, Home robot ĐỒ ÁN TỐT NGHIỆP 91
3.6.6 Cảm biến góc IMU MPU6050
Cảm biến IMU là một thành phần quan trọng trong công nghệ điều khiển chuyển động và định vị không gian Một trong những module cảm biến IMU phổ biến là module MPU6050 Được thiết kế bởi công ty InvenSense, MPU6050 kết hợp gia tốc kế, gyro, và cảm biến từ tính trong một thiết bị nhỏ gọn Trong đề tài này vì theo yêu cầu thiết kế robot chỉ di chuyển trên một phẳng cố định trục Z không đổi nên nhóm chỉ quan tâm sử dụng phản hồi góc yaw của cảm biến
Hình 3.53 Cảm biến góc IMU MPU-6050
- Điện áp hoạt động: 2.4 3.6 V DC
- Phạm vi ngõ ra các góc có thể lập trình: 250 500 1000 2000
- Phạm vi ngõ ra các gia tốc có thể lập trình: 2g, 4g, 8g, 16g
- Phạm vi thang đo từ tính: 4800μT
- Kích thước: 26.1mm x 15.5mm x 2.6mm
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 92
3.6.7 Nguồn cấp cho Jetson Nano
Vì điện áp vào của Jetson Nano là 5V DC nên nhóm sử dụng Waveshare UPS (Uninterruptible Power Supply) Module bao gồm chỗ cắm sạc, tích hợp sẵn khay gắn pin bốn pin cells 18650 Waveshare UPS (Uninterruptible Power Supply) Module đưa ra điện áp ổn định 5V DC sẽ được dùng để cấp cho ngõ vào Jetson Nano Kết nối Jetson qua cổng kết nối I2C 0.91” là kích thước màn hình hiển thị phần trăm pin của Jetson hiện tại đang còn Kích thước là 113mm x 79mm
Hình 3.54 Waveshare UPS (Uninterruptible Power Supply) Module
Waveshare UPS Module có chức năng là bảo vệ chống mất điện đột ngột, đảm bảo hoạt động liên tục, bảo vệ khỏi các biến động điện áp, dự phòng năng lượng di động, hỗ trợ hoạt động trong môi trường khắc nghiệt, tự động tắt thiết bị an toàn
12v10Ah, điện áp sạc 12,6v (12 cell pin mới 100% chính hãng YTH 18650 nối tiếp, phun được 12 bình 20 lít) ĐỒ ÁN TỐT NGHIỆP 93
Công nghệ pin lithium cho tuổi thọ cao gấp 10 lần ắc quy truyền thống, trọng lượng nhẹ giúp tiết kiêm sức lao động
Nhóm dùng máy bơm để dùng cho giác hút chân không, dùng để hút các đồ vật trên kệ hàng, siêu nhỏ chống ăn mòn 12v - 052 là loại máy bơm hút chân không mini tiếng ồn thấp, Bơm khí nén dùng nguồn 12V dòng 2ah trở lên để máy bơm hoạt động ổn định Đường kính vòi phun khí là 5mm, áp suất tích cực tối đa lớn hơn hoặc bằng 100Kpa (750mmHg) Bơm có hiệu suất ổn định, điện áp thấp,…
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 94
Hình 3.56 Máy bơm chân không
Lắp ráp phần cứng
Dưới đây là mô hình hệ cánh tay robot di động thực tế dưới nhiều góc nhìn
Hình 3.57 Mô hình hệ thống thực tế 1 ĐỒ ÁN TỐT NGHIỆP 95
Hình 3.58 Mô hình hệ thống thực tế 2
Hình 3.59 Mô hình hệ thống thực tế 3
CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP 96
Hình 3.60 Mô hình hệ thống thực tế 4
Hình 3.61 Mô hình hệ thống thực tế 5 ĐỒ ÁN TỐT NGHIỆP 97
THI CÔNG HỆ THỐNG
Thiết lập bản đồ cho robot (Map)
PGM (Portable Gray Map) là một định dạng hình ảnh raster đơn giản, được thiết kế để dễ dàng sử dụng và truyền tải dữ liệu hình ảnh thang độ xám Định dạng này là một phần của bộ định dạng Portable Any Map (PNM), bao gồm PPM (Portable Pixmap) cho hình ảnh màu và PBM (Portable Bitmap) cho hình ảnh nhị phân PGM được sử dụng rộng rãi trong nhiều ứng dụng
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 100
Hình 4.2 Map PGM Đặc điểm chính của PGM:
- Thang độ xám: Mỗi pixel trong hình ảnh PGM có giá trị từ 0 đến 255, biểu thị các mức độ xám từ đen (0) đến trắng (255)
- Hai dạng mã hóa: PGM hỗ trợ hai dạng mã hóa: ASCII và nhị phân Dạng ASCII dễ đọc nhưng chiếm nhiều dung lượng hơn, trong khi dạng nhị phân tiết kiệm dung lượng hơn nhưng khó đọc bằng mắt thường
Một file PGM bao gồm hai phần chính: phần tiêu đề và phần dữ liệu
- Magic Number: Để xác định loại file PGM P2 cho ASCII và P5 cho nhị phân
- Kích thước: Chiều rộng và chiều cao của hình ảnh (số pixel theo chiều ngang và chiều dọc)
- Giá trị xám tối đa: Giá trị tối đa của độ xám, thường là 255
Phần dữ liệu (Data): ĐỒ ÁN TỐT NGHIỆP 101
- ASCII: Các giá trị độ xám được viết dưới dạng văn bản, cách nhau bằng khoảng trắng
- Binary: Các giá trị độ xám được viết dưới dạng nhị phân, mỗi giá trị chiếm một byte Đối với đồ án sau khi nhóm quét SLAM map bằng phương pháp Gmapping, sẽ xuất được file bản đồ map.PGM để chạy navigation thông qua phần mềm Rviz
Binary occupancy grid map là một phương pháp biểu diễn không gian trong robot học, sử dụng một lưới 2D để lưu trữ thông tin về môi trường xung quanh robot Mỗi ô lưới có thể ở một trong hai trạng thái: bị chiếm (occupied) hoặc không bị chiếm (free)
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 102
Hình 4.4 Binary Occupancy Grid Map được tạo bằng Matlab Đặc điểm:
- Lưới 2D: Môi trường được chia thành các ô vuông nhỏ (cells)
- Trạng thái nhị phân: Mỗi ô lưới có thể có giá trị 0 (free) hoặc 1 (occupied)
Trong một số ứng dụng, các giá trị trung gian có thể được sử dụng để biểu thị trạng thái không xác định hoặc xác suất chiếm dụng
Cấu trúc file Binary Occupancy Grid Map:
- Resolution: Kích thước của mỗi ô lưới (thường tính bằng mét)
- Origin: Tọa độ của gốc bản đồ trong hệ tọa độ thế giới
- Width và Height: Số lượng ô lưới theo chiều rộng và chiều cao của bản đồ Data: Mảng dữ liệu chứa giá trị nhị phân cho mỗi ô lưới ĐỒ ÁN TỐT NGHIỆP 103 Đối với đồ án nhóm sử dụng Binary Occupancy Grid Map để chạy mô phỏng bản đồ với các thuật toán sử dụng để mô phỏng trên Matlab
Tư thế của robot được xác định bởi hệ thống đo đạc từ bộ mã hóa và cảm biến IMU, và khoảng cách với chướng ngại vật được đo bằng cảm biến khoảng cách Dữ liệu từ các cảm biến và bản đồ lưới chiếm chỗ từ SLAM được sử dụng để điều hướng robot
Bản đồ chi phí (costmap) được chia thành hai loại: ‘global_costmap’ cho kế hoạch đường đi toàn cầu và ‘local_costmap’ cho kế hoạch đường đi và tránh chướng ngại vật cục bộ Cả hai loại đều sử dụng giá trị từ 0 đến 255 để biểu diễn các khu vực:
• 001~127: Khu vực có khả năng va chạm thấp
• 128~252: Khu vực có khả năng va chạm cao
• 255: Khu vực bị chiếm chỗ
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 104
Hình 4.5 Mối quan hệ giữa khoảng cách đến vật cản và giá trị costmap
Bản đồ chi phí (costmap) biểu diễn vị trí của robot và các chướng ngại vật xung quanh
Mô hình robot nằm ở giữa, và khi đường viền của nó chạm vào tường, robot sẽ va chạm Màu sắc trên bản đồ cho thấy khả năng va chạm, với màu xám đậm biểu thị khả năng va chạm cao, màu hồng là chướng ngại vật thực tế, và màu xanh dương nhạt là điểm mà trung tâm robot có thể đi vào Màu sắc trên bản đồ có thể tùy chỉnh trong RViz
Hình 4.6 Turtlebot3 Costmap ĐỒ ÁN TỐT NGHIỆP 105
Định vị cho Robot và các đặc điểm trạm trên bản đồ có sẵn (Localization)
Định vị robot dựa trên bản đồ có sẵn đã được SLAM trước đó, kết hợp với mô hình chuyển động đo lường Đọc xung từ Encoder và tính toán giá trị vận tốc mỗi bánh để đưa ra ước lượng vị trí robot
Kết hợp thuật toán AMCL, AMCL là thuật toán xác định toàn cục cho robot Sử dụng các hạt để đại diện cho các giả thiết về vị trí, cập nhật chúng dựa trên mô hình chuyển động và quan sát, và tái mẫu để tập trung vào các vùng có xác suất cao AMCL bổ sung các kỹ thuật thích nghi để cải thiện hiệu suất và độ chính xác của quá trình định vị
Sử dụng bộ lọc hạt PF ước lượng tư thế của robot trên bản đồ bằng lý thuyết xác suất (probability theory)
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 106
Hình 4.8 Bộ lọc hạt PF
Ban đầu, vị trí robot chưa được xác định, lấy ngẫu nhiên các điểm mẫu trên bản đồ để cập nhật trọng số cho các hạt sau mỗi lần đọc dữ liệu từ laser scan, Sau nhiều lần đọc thì nơi nào có nhiều hạt tập trung thì nơi đó sẽ có xác suất cao nhất cho vị trí của robot trong môi trường, khi robot di chuyển thì các hạt cũng sẽ dời theo (theo thuật toán MCL) Khi robot mất dấu hoặc gặp sự cố, khó khan trong việc khôi phục lại vị trí robot, các hạt sẽ được them vào ngẫu nhiên giúp vị trí robot phục hồi
Trong AMCL các phép biến đổi còn được gọi là Transform đóng vai trò quan trọng trong việc chuyển đổi tọa độ giữa các hệ trục tọa độ để tìm vị trí các điểm trên map Ví dụ chuyển đội từ hệ tọa góc sang hệ tọa độ map ĐỒ ÁN TỐT NGHIỆP 107
Hình 4.9 Hệ tọa độ map và odom
Theo dõi xác suất quan sát từ cảm biến, nếu thấp các hạt hiện tại không phản ánh đúng vị trí thực tế, thêm hạt Số lượng hạt thêm được xác định dựa trên ước tính về độ chính xác của việc xác định vị trí Đối với đồ án, nhóm đã chuyển đổi từ hệ tọa độ gốc sang các hệ tọa độ vị trí của các dãy kệ hàng khác trên bản đồ Bởi vì, Hệ trục tọa độ của mobile robot, map, các vị trí mong muốn,… đề được biểu diễn trên hệ tọa độ 2D trên Rviz nên nhóm chỉ xét theo trục x, y của hệ trục tọa độ để tính các vị trí trên bản đồ
Hình 4.10 Hệ trục tọa độ trên Rviz (map C304)
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 108
Các hệ trục tọa độ thường vị trí tâm của bản đồ O (0,0,0) sẽ cũng là vị trí đầu tiên khi bắt đầu SLAM map còn được gọi là HOME (vị trí ban đầu)
Từ HOME tọa độ x = 0, y = 0, z = 0 ta tịnh tiến tới các hệ tọa độ khác, với mỗi kệ cách theo trục x là 1 ô tương đương với 1m thực tế, chiều ngang cách giữa các kệ theo trục y là -0.3 đến 0.3, trục z luôn cho bằng 0 Ta được các vị trí:
Hình 4.11 Điểm tọa độ trên bản đồ Rviz (map C304)
Gói AMCL (Adaptive Monte Carlo Localization) của TurtleBot3 là một phần quan trọng trong ROS (Robot Operating System) để định vị robot trong môi trường Dưới đây là một số thông số quan trọng của gói AMCL:
- min_particles: Số lượng hạt tối thiểu trong bộ lọc hạt ĐỒ ÁN TỐT NGHIỆP 109
- max_particles: Số lượng hạt tối đa trong bộ lọc hạt
- update_min_d: Khoảng cách tối thiểu mà robot phải di chuyển trước khi cập nhật định vị
- update_min_a: Góc quay tối thiểu mà robot phải xoay trước khi cập nhật định vị
- resample_interval: Số lần cập nhật sau đó các hạt sẽ được lấy mẫu lại
- transform_tolerance: Thời gian tối đa để chấp nhận một phép biến đổi trong hệ tọa độ
- laser_max_range: Phạm vi tối đa của cảm biến laser
- laser_min_range: Phạm vi tối thiểu của cảm biến laser
- odom_alpha1, odom_alpha2, odom_alpha3, odom_alpha4 và odom_alpha5:
Các thông số này xác định độ không chắc chắn trong mô hình động học của robot (thường là các sai số trong phép đo của hệ thống odometry)
- recovery_alpha_fast và recovery_alpha_slow: Các thông số này xác định tốc độ phục hồi của hạt trong quá trình định vị
- initial_pose_x, initial_pose_y, initial_pose_a: Các giá trị ban đầu của vị trí và hướng của robot khi bắt đầu định vị
- use_map_topic: Nếu đặt là true, gói AMCL sẽ sử dụng bản đồ được phát qua chủ đề /map
- base_frame_id: Tên của khung cơ sở của robot
- odom_frame_id: Tên của khung hệ tọa độ odometry
Các thông số này có thể được cấu hình trong file launch của ROS hoặc trực tiếp trong mã nguồn, tùy thuộc vào yêu cầu của ứng dụng và môi trường hoạt động của robot.
Giải bài toán TSP cho các trạm bằng thuật toán ACO
Sau khi đã có tọa độ các trạm trên bản đồ, nhóm triển khai thuật toán ACO cho các điểm trạm Một điều quan trọng trong việc áp dụng thuật toán là số lượng kiến và điều kiện dừng được chọn phải đủ lớn thì xác suất quần thể kiến thực hiện việc chọn đường dài hơn sẽ
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 110 giảm đi Dựa vào cơ sở lý thuyết của thuật toán nhóm đã trình bày ở chương 2 thì dưới đây là lưu đồ của thuật toán ACO cho bài toán của nhóm:
Lấy thông tin tọa độ các trạm
Khởi tạo thông số ban đầu cho quần thể
Khởi tạo trạm ban đầu cho từng con kiến trong quần thể
Xây dựng lộ trình di chuyển cho từng con kiến trong quần thể
Ghi nhận lộ trình tốt nhất
Hình 4.12 Lưu đồ thuật toán tối ưu đàn kiến (ACO)
Mặc dù nhóm đã ràng buộc trạm ban đầu cho quần thể kiến xuất phát là từ trạm Home nhưng về bản chất thuật toán vẫn sẽ tính toán bài toán TSP tổng thể và cho ra một ma trận mùi tổng quát, từ đó sử dụng cho các điểm trạm bắt đầu mà mình muốn ĐỒ ÁN TỐT NGHIỆP 111
Quy hoạch đường đi toàn cục tối ưu cho robot bằng thuật toán Dijsktra
Quy hoạch đường đi ngắn nhất (tối ưu) cho mobile robot trên bản đồ có sẵn, sau khi đã có lộ trình các điểm trạm được tính bởi thuật toán ACO thì ta sẽ tiến hành quy hoạch đường đi tối ưu cho robot di chuyển giữa các điểm trạm trên bản đồ thông qua thuật toán Dijsktra’s Xét trường hợp đi từ trạm Home tới trạm 1:
Giả sử chúng ta có đồ thị G = ( , ) V E với:
V: là tập hợp các đỉnh (các điểm trạm trong nhà kho)
E: là tập hợp các cạnh (các đường đi giữa các điểm)
= : là trọng số các cạnh nối giữa các đỉnh u và v
Mục tiêu là tìm đường đi ngắn nhất từ đỉnh xuất phát s (trạm Home) đến đích t (trạm 1) Hàm mục tiêu có được biểu diễn như sau:
P: là tập hợp các cạnh từ s đến t
= : là trọng số các cạnh u và v
Từ đó theo Dijkstra’s tìm đường đi P sao cho tổng trọng số của các cạnh P là nhỏ nhất Kết quả là đường đi tối ưu từ s đến t
Cứ như vậy, thuật toán sẽ được quy hoạch cho từng cặp trạm theo lộ trình được cho biết trước bởi ACO
Trong ROS, nhóm sử dụng gói navfn có hỗ trợ sử dụng sẵn thuật toán Dijsktra’s Gói này triển khai một hàm điều hướng nhanh và nội suy, được sử dụng để lập kế hoạch di chuyển cho một nền tảng di động thông qua lớp navfn::NavFn Gói phần mềm này còn cung cấp một lớp bao bọc ROS cho lớp trên thông qua đối tượng navfn::NavfnROS, tuân thủ giao
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 112 diện nav_core::BaseGlobalPlanner trong gói nav_core Đối tượng navfn::NavfnROS này cũng được sử dụng như một plugin lập kế hoạch toàn cục cho nút move_base.
Sử dụng thuật toán DWA cho robot né tránh vật cản
Thuật toán DWA đã được nhóm giới thiệu ở chương 2, xét trường hợp cho robot di chuyển từ trạm Home đến trạm 1 thực hiện các bước sau:
Bước 1: Xác định trạng thái và mục tiêu:
- Trạng thái hiện tại của robot: Vị trí và hướng hiện tại của robot (Home)
- Mục tiêu: Vị trí của trạm 1 trong nhà kho
Bước 2: Thiết lập các tham số cho DWA:
- Tốc độ tối đa và gia tốc: Các giới hạn vật lý của robot
- Cửa sổ động: Khoảng thời gian mà robot có thể điều chỉnh tốc độ và hướng
Bước 3: Xây dựng hàm mục tiêu (Objective Function):
- Hàm mục tiêu được biểu diễn như sau:
, , : Là các trọng số theo thứ tự của heading dist vel , ,
: Làm mượt tổng trọng số của ba thành phần này và dẫn đến việc tạo ra khoảng cách an toàn lớn hơn từ vật cản heading : Thông số này đại diện cho hướng của robot so với mục tiêu và đạt giá trị lớn nhất chỉ khi robot di chuyển trực tiếp hướng đến mục tiêu
: Là hướng của robot tại vị trí dự đoán ĐỒ ÁN TỐT NGHIỆP 113
: Là góc giữa robot tại vị trí dự đoán và điểm mục tiêu
Hình 4.13 Đánh giá theo heading dist: Thông số này đại diện cho khoảng cách đến vật cản gần nhất và nó sẽ được chọn để giúp robot đi vòng xung quanh vật cản Nếu không có chướng ngại vật trên độ cong thì giá trị này được đặt thành một hằng số lớn
Hình 4.14 Đánh giá theo dist
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 114 vel : Thông số này đại diện cho tiến trình của robot trên quỹ đạo tương ứng Nó chỉ đơn giản là một phép chiếu về vận tốc tịnh tiến của robot, càng lớn thì robot càng di chuyển nhanh hơn
Hình 4.15 Đánh giá theo vel
Từ những tiêu chí đánh giá theo heading dist vel , , sẽ giúp hàm mục tiêu chọn được vận tốc dài và vận tốc góc tối ưu để robot vừa tránh vật cản vừa đến điểm mục tiêu sớm nhất Tất cả ba thông số trên của hàm mục tiêu được chuẩn hóa thành [0;1] ĐỒ ÁN TỐT NGHIỆP 115
Hình 4.16 Đánh giá theo hàm mục tiêu G(v,w)
Bước 4: Lựa chọn các lệnh điều khiển khả thi:
- Dựa trên cửa sổ động và các giới hạn vật lý, xác định các cặp (v,ω) khả thi
Bước 5: Tính toán giá trị hàm mục tiêu cho mỗi cặp (v,ω):
- Sử dụng các mô hình dự đoán để ước lượng hành vi của robot trong khoảng thời gian ngắn
- Tính toán giá trị của hàm mục tiêu cho mỗi cặp (v,ω) dựa trên vị trí dự đoán, khoảng cách tới chướng ngại vật và tốc độ
Bước 6: Chọn lệnh điều khiển tối ưu:
- Lựa chọn cặp (v,ω) có giá trị hàm mục tiêu lớn nhất
Bước 7: Cập nhật trạng thái và lặp lại:
- Robot di chuyển theo lệnh điều khiển tối ưu được chọn
- Cập nhật trạng thái hiện tại của robot và lặp lại quá trình cho đến khi đạt được mục tiêu (trạm 1)
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 116
Trong ROS, nhóm sử dụng DWAPlannerROS là một lớp trong gói dwa_local_planner của ROS, thực hiện thuật toán DWA để lập kế hoạch đường đi cục bộ và tránh chướng ngại vật
Các thông số chính của DWA trong ROS
• max_vel_x: Tốc độ tối đa theo trục x của robot (m/s) Đây là tốc độ tiến tối đa mà robot có thể đạt được
• min_vel_x: Tốc độ tối thiểu theo trục x của robot (m/s) Đây là tốc độ tiến tối thiểu mà robot có thể di chuyển
• max_vel_theta: Tốc độ quay tối đa của robot (rad/s) Đây là tốc độ quay tối đa mà robot có thể đạt được
• min_vel_theta: Tốc độ quay tối thiểu của robot (rad/s) Đây là tốc độ quay tối thiểu mà robot có thể đạt được
• acc_lim_x: Giới hạn gia tốc theo trục x (m/s²) Đây là gia tốc tối đa mà robot có thể đạt được theo trục x
• acc_lim_theta: Giới hạn gia tốc quay (rad/s²) Đây là gia tốc quay tối đa mà robot có thể đạt được
• xy_goal_tolerance: Độ chính xác mục tiêu theo trục x và y (m) Khoảng cách mà robot được coi là đã đạt được mục tiêu
• yaw_goal_tolerance: Độ chính xác mục tiêu theo góc quay (rad) Góc quay mà robot được coi là đã đạt được mục tiêu
• sim_time: Thời gian mô phỏng để tính toán các quỹ đạo khả thi (s) Thời gian mà robot sử dụng để tính toán và mô phỏng các quỹ đạo khả thi
• path_distance_bias: Trọng số cho khoảng cách từ đường đi (m) Trọng số này ảnh hưởng đến sự ưu tiên của robot khi chọn đường đi gần với đường đi đã được lập kế hoạch
• goal_distance_bias: Trọng số cho khoảng cách đến mục tiêu (m) Trọng số này ảnh hưởng đến sự ưu tiên của robot khi chọn đường đi trực tiếp đến mục tiêu ĐỒ ÁN TỐT NGHIỆP 117
Thiết kế web server cho khách hàng
4.6.1 Tổng quan về Web Server
Lấy dữ liệu sản phẩm
Sản phẩm n có trong cart hay không?
Cập nhật số lượng hàng tồn trong kho từng sản phẩm
Tìm các giá trị sản phẩm trong
Lấy thông tin giỏ hàng
Chờ đến khi được cập nhật
Cập nhật đơn hàng sau khi đặt hàng thành công
Lấy thông tin giỏ hàng totalPrice += item.price * item.quantity;
Trả về giá trị biến totalPrice
Lấy thông tin giỏ hàng totalQuantity += item.quantity;
Trả về giá trị biến totalQuantity Giá trị ban đầu
Hình 4.17 Lưu đồ hàm chức năng của Web
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 118
Lấy thông tin giỏ hàng
Tìm vị trí giỏ hàng productIndex có bằng -1 không?
Sản phẩm đã tồn tại
Sản phẩm chưa tồn tại
Hình 4.18 Lưu đồ xử lý đơn hàng
4.6.2 Trang Signin Đây là trang người mua hàng đăng nhập vào web và người dùng đăng nhập bằng email của mình ĐỒ ÁN TỐT NGHIỆP 119
Sau khi đăng nhập xong thì sẽ chuyển đến trang này, từ trang này người mua hàng chọn Go to Buy Page sẽ được chuyển tiếp đến trang mua hàng chính, hoặc có thể chọn
Logout để đăng xuất nếu muốn
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 120
Hình 4.21 Phần giới thiệu sản phẩm và chương trình
Hình 4.22 Phần thông tin và tương tác với khách hàng
Hình 4.23 Phần thông tin và các loại hàng đã đặt ĐỒ ÁN TỐT NGHIỆP 121
Hình 4.24 Xác nhận lại đơn hàng đã đặt
Hình 4.25 Thông tin đơn hàng đã được gửi qua mail của người đặt hàng
Hình 4.26 Thông tin thành viên
Hình 4.27 Thông tin về Trường – Khoa – Lab
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 122
4.6.5 Truyền nhận dữ liệu giữa Web Server và GUI
Hình 4.28 Web Server và Gui
Khách hàng sẽ vào trang web và đăng nhập bằng gmail để đặt hàng sau khi đặt hàng thành công thì thông tin đơn hàng sẽ được gửi lên Firebase (Database) Khi đó, dữ liệu đơn hàng sẽ được lưu lên Firebase, từ dữ liệu đó của Firebase thông tin của Firebase sẽ được truyền dữ liệu xuống GUI, thông qua đó Admin sẽ có thể giám sát và quản lí các đơn hàng qua giao diện người dùng Admin có thể thực hiện các tác vụ như cập nhật đơn hàng, xóa đơn hàng,… ĐỒ ÁN TỐT NGHIỆP 123
Quy trình đặt hàng, gửi dữ liệu từ Database theo lưu đồ sau:
Mua hàng và lựa chọn số lượng hàng hóa cần mua
Dữ liệu đơn hàng gửi lên Firebase
Lấy dữ liệu về GUI
Hình 4.29 Quy trình đặt hàng
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 124
Thiết kế giao diện người dùng cho người vận hành
4.7.1 Tổng quan về giao diện
Dưới đây là lưu đồ thể hiện chức năng của GUI và 2 chương trình Auto Mode và Manual Mode ĐỒ ÁN TỐT NGHIỆP 125
Xét thông tin đăng nhập
Kết nối camera, arduino Lấy dữ liệu từ Cloud Firebase và chuyển vào danh sách tất cả đơn hàng
Trang About Us Đăng Xuất
Hiển thị thông tin và hình ảnh sản phẩm
Hiển thị danh sách và trạng thái tất cả đơn hàng
Hiển thị thông tin tác giả
Hiển thị thông tin và hình ảnh sản phẩm tiếp theo
Hiển thị thông tin và hình ảnh sản phẩm trước đó Đ
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 126
Nút Delete Xét thông tin thanh nhập 1
Xét thông tin ở thanh nhập 1
Xét thông tin ở thanh nhập 1
Hiển thị thông tin đơn hàng
Cập nhật tại thông tin đơn hàng
Xóa đơn hàng Khỏi CSDL
Chạy chương trình Auto Mode
Chạy chương trình Manual Mode
Kiểm tra các đơn hàng đang được xử lý
Chạy xong đơn hàng hiện tại, chuyển đơn hàng vào danh sách các đơn hàng đã xử lý
Xóa toàn bộ danh sách đơn hàng chờ xử lý
Hình 4.30 Lưu đồ tổng quan GUI ĐỒ ÁN TỐT NGHIỆP 127
Cập nhật đơn hàng chưa xử lý vào danh sách đơn hàng chờ xử lý
Hiển thị đơn hàng đang xử lý
Robot di chuyển đến trạm hàng
Cánh tay robot gắp hàng
Xét xem còn trạm nào chưa tới không?
Xét xem có đơn mới không?
Cập nhật đơn mới vào danh sách đơn hàng chờ xử lý
Xét xem có đơn tồn không?
Hình 4.31 Lưu đồ chế độ Auto
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 128
Nhập mã đơn ở thanh nhập 2
Xét thông tin ở thanh nhập 2
Hiển thị đơn hàng đang xử lý
Robot di chuyển đến trạm hàng
Cánh tay robot gắp hàng
Xét xem còn trạm chưa tới không?
Xét xem còn đơn nào chưa xử lý không?
Hình 4.32 Lưu đồ chế độ Manual ĐỒ ÁN TỐT NGHIỆP 129
Hình 4.33 Trang Signin Đây là trang đăng nhập cho giao diện người dùng, bao gồm 2 thanh nhập thông tin tài khoản người dùng và mật khẩu Nếu như nhập sai, thông báo người dùng được yêu cầu nhập lại hiện ra
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 130
Hình 4.34 Đăng nhập thất bại
Hình 4.35 Đăng nhập thành công
Khi người dùng nhập đúng thì sẽ chuyển đến trang tiếp theo ĐỒ ÁN TỐT NGHIỆP 131
4.7.3 Trang Splash Đây là một trang phụ, chủ yếu để thể hiện việc khởi tạo giao diện người dùng, cập nhật dữ liệu và chuyển đến trang chính
4.7.4 Trang Products Đây là trang thể hiện thông tin các sản phẩm hiện có trong kho hàng Hai nút Back và
Next dùng để chuyển sang thông tin của sản phẩm khác
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 132
4.7.5 Trang Database Đây là trang thể hiện thông tin các đơn hàng có trong cơ sở dữ liệu, Status là trạng thái đơn hàng, Order ID là mã đơn hàng, Date là thời gian đơn hàng được khởi tạo, Total Price là giá tiền tổng đơn hàng, Products là danh sách các sản phẩm mà đơn hàng muốn lấy
(theo thứ tự từ trái sang phải: tên sản phẩm, mã sản phẩm, số lượng sản phẩm cần lấy, giá tiền của sản phẩm)
4.7.6 Trang Observation Đây là trang mà nhóm hoạt động chính dùng để điều khiển cho hệ thống ĐỒ ÁN TỐT NGHIỆP 133
Khu vực Data Panel: Dùng để tương tác với cơ sở dữ liệu
- Nút Search: Dùng để tra cứu thông tin đơn hàng có trong database
- Nút Update: Dùng để thay đổi thông tin về số lượng đơn hàng khi người đặt hàng có nhu cầu thay đổi đơn hàng đã đặt
- Nút Delete: dùng để xóa một đơn hàng ra khỏi cơ sở dữ liệu
- Thanh nhập bên phải nút Delete: Dùng để chứa các thông tin cần tương tác, khi nhập xong thì nhấn 1 trong 3 nút để thực hiện yêu cầu
- Thanh [ -Order ID -]: Dùng để sổ danh sách các mã đơn hàng, giúp thuận tiện hơn trong việc tương tác, vì mã đơn hàng dài và không theo quy tắc
Khu vực Control Panel: Dùng để thực hiện việc điều khiển
- Nút Reset Mode: Dùng để thiết lập lại chế độ ban đầu khi muốn chuyển sang một chế độ khác
- Nút Auto Mode: Dùng để kích hoạt chế độ chạy lấy đơn tự động
- Nút Manual Mode: Dùng để kích hoạt chế độ lấy đơn theo ý muốn
- Thanh nhập bên phải nút Manual Mode: Dùng để chúa thông tin mã đơn hàng cần lấy, phục vụ cho chế độ lấy đơn theo ý muốn
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 134
- Nút Forward, Backward, Left, Right, Stop: Dùng để điều khiển robot di chuyển theo hướng tiến, lùi, trái, phải và dừng (dùng cho việc test robot)
- Thanh nhập Joint 1, Joint 2, Joint 3: Dùng để cấp góc cho cánh tay robot di chuyển theo ý muốn (dùng cho việc test robot)
- Nút Send: Dùng để gửi dữ liệu góc lấy từ Thanh nhập Joint 1, Joint 2, Joint 3 và chuyển sang cho Arduino xử lý (dùng cho việc test robot)
- Nút On, Off: Dùng để bật và tắt máy bơm chân không, điều khiển việc hút vật (dùng cho việc test robot)
- Nút Home Call: Dùng để gọi robot về vị trí trạm Home (dùng cho việc test robot)
- Thanh Linear Velocity, Angular Velocity: Dùng để hiển thị thông tin về vận tốc tuyến tính và vận tốc góc của xe
Khu vực Camera: Dùng để hiển thị camera sử dụng cho việc gắp đơn hàng
Khu vực Processing Order: Dùng để hiển thị thông tin đơn hàng đang được robot xử lý, bảng gồm các thông tin như Name là tên sản phẩm, ID là mã loại hàng và Quantity là số lượng hàng cần lấy
4.7.7 Trang About Us Đây là trang hiển thị thông tin tác giả dự án ĐỒ ÁN TỐT NGHIỆP 135
Hình 4.40 Trang hiển thị thông tin
Khi nhấn biểu tượng Signout trên thanh menu sẽ hiển thị thông báo đăng xuất như hình dưới đây, chọn Yes hoặc No để xác nhận:
CHƯƠNG 4 THI CÔNG HỆ THỐNG ĐỒ ÁN TỐT NGHIỆP 136
Hình 4.41 Thông báo đăng xuất
KẾT QUẢ THỰC HIỆN
Kết quả mô phỏng
5.1.1 Mô phỏng thuật toán ACO trên phần mềm Matlab
Hình 5.1 Thuật toán ACO giải bài toán TSP cho 5 trạm
Hình 5.2 Thuật toán ACO giải bài toán TSP cho 10 trạm
CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 140
Bộ thông số ban đầu nhóm thiết lập cho thuật toán như sau: Điều kiện dừng miter = 100 , số lượng kiến trong quần thể m0, hệ số điều chỉnh ảnh hưởng của T ij là =2, hệ số điều chỉnh ảnh hưởng của n ij là = 4
Khoảng cách giữa các trạm được tính bằng công thức Euclidean
Do tính chất của bài toán TSP khi càng tăng số lượng trạm thì số lượng lời giải và thời gian tính toán cũng sẽ tăng theo, vì thế các kết quả được nhóm đưa ra chỉ đúng trong một số lượng trạm nhất định Việc giới hạn bài toán TSP cho số lượng trạm nhỏ hơn 10 trạm để đảm bảo tính chính xác cũng như mức độ mà đề tài đang thực hiện
5.1.2 Mô phỏng thuật toán Dijkstra’s trên phần mềm Matlab
Hình 5.3 Mô phỏng thuật toán Dijsktra’s trên Matlab khi không có vật cản
Kết quả mô phỏng: Thuật toán Dijkatra’s theo mô phỏng thì sẽ tính đường đi ngắn nhất (các đường thẳng đứt gạch) từ điểm có hình vuông màu đỏ đến điểm hình vuông màu xanh dương Với chi phí là 33.796 là số tốn ít nhất để từ điểm đỏ tới điểm xanh ĐỒ ÁN TỐT NGHIỆP 141
Hình 5.4 Mô phỏng thuật toán Dijsktra’s trên Matlab khi có vật cản
Nếu có vật cản đường đi sẽ được quy hoạch lại đường ngắn nhất, để tránh vật cản đồng thời cost thấp nhất và sẽ thay đổi quỹ đạo di chuyển đến điểm màu xanh
5.1.3 Mô phỏng thuật toán DWA
Mô phỏng Matlab Thuật toán DWA với vận tốc robot v max = 1.0m/s, tốc độ quay tối đa max 20.0 / 180 w = rad/s, gia tốc a=0.2 m s / 2 , gia tốc góc max = 50.0 * / 180 rad s / 2 , vị trí ban đầu là vị trí ở hình vuông màu đỏ và vị trí mong muốn là vị trí hình vuông màu xanh dương Từ hình mô phỏng ta thấy robot đã tránh được vật cản là những ô màu đen và đến được điểm mục tiêu cần đến
CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 142
Hình 5.5 Mô phỏng thuật toán DWA
5.1.4 Mô phỏng hệ hai bánh vi sai trên phần mềm Matlab
Mô phỏng hệ Non-holonomic (xe 2 bánh) với Matlab với 1 ô là 1 meters Xe chạy thẳng xe bắt đầu chạy từ điểm (0,0) tới điểm (3.8,3.9) trong thời gian từ 0 tới 5s, bước thời gian là 0.01s
Hình 5.6 Mô phỏng Matlab hệ non-holonomic với xe chạy thẳng ĐỒ ÁN TỐT NGHIỆP 143
Mô phỏng hệ non-holonomic với việc cho 2 bánh xe quay quanh trục chính Trục chính là điểm O(0,0) tại điểm đầu xe quay xung quanh điểm đó và điểm đó cũng là điểm ICC -
Instantaneous Center of Curvature Trong thời gian từ 0 đến 5s,và bước thời gian là 0.01s
Hình 5.7 Mô phỏng Matlab hệ non-holonomic với xe quay tại chỗ
5.1.5 Vẽ bản đồ bằng phương pháp Gmapping trong ROS Để thuận tiện cho việc mô phỏng, nhóm có sử dụng gói TurtleBot3 để thực hiện việc SLAM, kết hợp với package teleop_key để điều khiển robot
Hình 5.8 Bản đồ TurtleBot3 chưa được quét
CHƯƠNG 5 KẾT QUẢ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP 144
Hình 5.9 Bản đồ TurtleBot3 đã được quét
5.1.6 Bài toán TSP trong ROS
Nhóm cũng sẽ chạy TSP trên map TurtleBot3 đã được quét trước đó
Hình 5.10 Chạy TSP cho 5 trạm (5, 3, 7, 8, 1) trên map TurtleBot3
Hình 5.11 Lộ trình robot di chuyển khi thực hiện chạy TSP xong ĐỒ ÁN TỐT NGHIỆP 145