Chương 1: Tổng quan Chương này giới thiệu tổng quan về đề tài, mục tiêu, phương pháp nghiên cứu, nội dung và một số giới hạn của đề tài. - Chương 2: Cơ sở lý thuyết Chương này trình bày về động học của hệ Differential Drive Robots, giới thiệu về hệ thống ROS và cách cài đặt ROS trên board Jetson Nano và tổng quan về bài toán TSP. - Chương 3: Thiết kế phần cứng Chương này trình bày về yêu cầu thiết kế phần cứng, sơ đồ khối hệ thống, tính toán lựa chọn linh kiện, thiết bị được sử dụng và sơ đồ nguyên lý. - Chương 4: Thiết kế phần mềm Chương này trình bày về các thuật toán tạo bản đồ như Gmapping, thuật toán tìm đường đi tối ưu A* và bài toán ITSP với thuật toán ACO, cùng với đó là thuật toán duy trì đội hình với bộ điều khiển Leader-Follower cho đội hình.
Và sau đó lập trình các thuật toán mô phỏng trên Matlab và ROS. - Chương 5: Kết quả và kết luận Chương này trình bày kết quả mô phỏng và kết quả thực nghiệm các thuật toán.5 Giới hạn Sau đây là một số giới hạn đề tài trong quá trình thực hiện: - Đề tài không xét đến khía cạnh năng lượng pin khi robot hết pin hoặc pin yếu. - Đề tài không xét đến việc tính toán tải cho robot, chỉ xét đến việc điều khiển vận tốc cho robot. - Chỉ xét vật cản có hình thẳng đứng từ chân đế đến tầm quét của lidar.
- Không xét đến trường hợp mất tín hiệu giao tiếp giữa client và máy chủ server thông qua ROS Network. - Không xét hướng tại các trạm trong bài toán TSP và tất cả bài toán mở rộng. - Thuật toán ACO được so sánh sánh với Brute Force Search ở quy mô trạm nhỏ ở bài toán ITSP, quy mô lớn hơn và bài toán mở rộng khác thì so sánh các kết quả sau nhiều lần chạy. Các thuật toán khác không được đề cập trong bài báo cáo này.
ĐỒ ÁN TỐT NGHIỆP 5 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Mô hình toán hệ robot di động hai bánh vi sai Nhiều robot di động sử dụng một cơ chế truyền động được gọi là truyền động vi sai. Nó bao gồm hai bánh xe truyền động được gắn trên một trục chung và mỗi bánh xe có thể được điều khiển độc lập về phía trước hoặc phía sau bằng việc cung cấp vận tốc cho hai bánh xe. Mặc dù chúng ta có thể thay đổi vận tốc cho từng động cơ để điều hướng robot nhưng để robot thực hiện chuyển động quay thì phải quay quanh một điểm nằm dọc theo trục bánh trái và phải gọi là trục chính của nó. Điểm mà robot quay quanh gọi là ICC – Instantaneous Center of Curvature.
Điểm ICC được mô tả như Hình 2.1 Mô tả robot di động Differential Drive hệ non-holonomic Bằng cách thay đổi vận tốc của hai bánh xe, chúng ta có thể thay đổi quỹ đạo mà robot di chuyển. Khi quay quanh điểm ICC ta phải cấp vận tốc tương đương nhau cho cả hai động cơ. Tốc độ của bánh xe là v = 2 r / T , với T là thời gian để xe hoàn thành xoay quanh một vòng đối với điểm ICC, là là vận tốc góc của robot được định nghĩa là 2 / T ( rad / s ). Kết hợp các phương trình cho v và , ta có được phương trình sau: v = r (2.1) Với các đại lượng có trong Hình 2.1 ta có các phương trình sau: ( R + l / 2) = Vr (2.3) Với l là khoảng cách giữa hai trục bánh xe, Vr , Vl là vận tốc bánh phải và bánh trái được tính dựa trên xung đọc được từ encoder.
R là khoảng cách từ điểm ICC đến điểm chính giữa của trục hai bánh xe. Trong bất cứ thời điểm nào khi điều hướng, ta có thể tính được giá trị của R và như sau: l Vl + Vr V −V R= ;= r l (2.4) 2 Vr − Vl l ĐỒ ÁN TỐT NGHIỆP 6 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Động học thuận hệ robot di động hai bánh vi sai Trong Hình 2.1, giả sử rằng robot đang ở vị trí ( x, y ) , hướng của robot là góc tạo với trục X của hệ toạ độ, với trục X nằm dọc theo chiều dài robot. Khi có Vl và Vr được tính từ số xung encoder, kết hợp với công thức (2.4) ta có thể xác định được vị trí ICC như sau: ICC = [x − R sin , y + R cos ] (2.5) Tại thời điểm t + t vị trí và hướng của robot là: x cos(t ) − sin(t ) 0 x − ICC x ICC x y = sin(t ) cos(t ) 0 y − ICC + ICC (2.6) y y 0 0 1 t Phương trình (2.6) mô tả chuyển động của robot quay quanh một khoảng R với tâm là ICC cùng với vận tốc góc góc . Để biễu diễn đơn giản động học thuận của hệ Differential Drive Robots, bài báo số [6] đã đưa ra phương trình sau: x v cos cos 0 v q = y = v sin = sin 0 (2.7) 0 1 Với q = x y , ( x, y ) là vị trí của robot, vẫn là góc quay quanh trục Z của robot, T 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ủa robot được tính dựa trên công thức sau: Vr + Vl v= (2.8) 2 Giá trị của vận tốc góc được tính dựa trên công thức: Vr − Vl = (2.9) l Tại thời điểm t + t vị trí và hướng của robot là: x x(t ) x y = y (t ) + y t (2.10) 0 ĐỒ ÁN TỐT NGHIỆP 7 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.2 Động học nghịch hệ robot di động hai bánh vi sai Ta có thể mô tả vị trí của robot theo một hướng cụ thể (t ) với vận tốc v(t ) là: t x(t ) = v(t ) cos[ (t )]dt (2.13) 0 Kết hợp với công thức (2.9) ta viết lại như sau: 1 t 2 0 x(t ) = [Vr (t ) + Vl (t )]cos[ (t )]dt (2.16) Bài toán động học nghịch là khi muốn robot tiến đến vị trí mục tiêu ( x, y, ) và chúng ta cần cung cấp vận tốc cho từng bánh như thế nào để đạt được vị trí ấy. Tuy nhiên đối với robot Differential Drive Robots được gọi là hệ non-holonomic thì robot chỉ di chuyển theo phương X của robot mà không thể di chuyển theo phương Y. Và để robot dịch sang bên phải một đoạn thì sẽ không dễ dàng để di chuyển, điều đó tương tự như việc đỗ xe đòi hỏi một loạt các thao tác lái phức tạp. Vì vậy không hề đơn giản chỉ định một vị trí ( x, y, ) cụ thể và tìm ra vận tốc đưa robot đến đó.
Đối với các trường hợp đặc biệt Vl = Vr = v (robot đi thẳng và hướng robot là 0 o ) thì phương trình (2.6) được viết lại như sau: x x + v cos( )t y = y + v sin( )t (2.17) Nếu Vr = −Vl = v 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, phương trình (2.6) được viết lại như sau: x x y = y (2.18) 2vt + l ĐỒ ÁN TỐT NGHIỆP 8 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Tóm lại, đối với 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: 1. Nếu Vl = Vr thì robot sẽ chuyển động tuyến tính theo đường thẳng về phía trước hoặc sau. Nếu Vl = −Vr thì robot sẽ xoay quanh điểm chính giữa trục của hai bánh xe, lúc này robot coi như xoay quanh tại chỗ. Nếu Vl = 0 và Vr 0 thì robot sẽ quanh quanh tâm tại bánh trái với bán kính là l / 2 , tương tự với trường hợp ngược lại.2 Giới thiệu về hệ điều hành robot (ROS) Robotics là một lĩnh vực đang phát triển với tốc độ nhanh chóng trong lĩnh vực công nghệ.
Có thể chúng đã nghe hoặc thấy về các ứng dụng như xe tự lái, robot hình người của Tesla hoặc Boston Dynamics và những robot đó đều sử dụng nền tảng ROS để lập trình chúng. Vậy ROS là gì? Robot Operating System - ROS là một nền tảng mã nguồn mở (open-source) cung cấp những thư viện và công cụ để xây dựng các ứng dụng liên quan tới robot. Nó cung cấp nhiều tính năng mạnh mẽ để hỗ trợ các nhà phát triển trong các nhiệm vụ như truyền thông tin, tái sử dụng mã nguồn và triển khai các thuật toán cho ứng dụng robot. Vậy thực tế ROS được sử dụng trong những trường hợp nào? Nó có thể được áp dụng cho bất kỳ ứng dụng nào liên quan đến việc giao tiếp hoặc điều khiển các cảm biến (sensor) và thiết bị truyền động (actuator).
Ngoài ra, ROS cũng được rất nhiều người sử dụng trong nghiên cứu, ví dụ như trong lĩnh vực xe tự hành nhóm chúng em đang thực hiện (autonomous driving) robot hình người (humanoid robot), thiết bị bay không người lái (drone), và nhiều lĩnh vực khác. Có nhiều lý do để chọn ROS nền tảng lập trình và một trong số đó là: • High-end capabilities: ROS đi kèm với các gói như Simultaneous Localization and Mapping (SLAM) và Adaptive Monte Carlo Localization (AMCL). • Tone of tools: Hệ sinh thái ROS có rất nhiều công cụ để gỡ lỗi, giám sát và mô phỏng. Các công cụ chẳng hạn như rqt_gui, Rviz và Gazebo sẽ được nhóm sử dụng trong quá trình thực đề tài.
• Support for high-end sensors and actuators: ROS có đa dạng các gói hỗ trợ nhiều loại cảm biến như 3D LIDAR, laser scanners, depth sensor,… • Inter-platform operability: Trong ROS có một thành phần trung gian giao tiếp giữa các gói, các chương trình với nhau gọi là nodes.