CHƯƠNG 1: TỔNG QUAN - Nghiên cứu về nền tảng ROS, ứng dụng để mô phỏng Rviz, Gazebo và các thuật toán của robot di động. - Nghiên cứu về mô hình động học và PID cho động cơ. - Dùng phần mềm Solidword để thiết khiết kế mô hình robot. - Thiết kế giao diện điều khiển cho robot.
- Sử dụng máy tính nhúng Raspberry pi 4 để điều khiển từ xa cho robot. - Xây dựng bản đồ cho mobile robot. - Điều hướng robot đến mục tiêu có khả năng tìm đường đi và né vật cản.4 Giới hạn đề tài - Với hạn chế về mặt chi phí nên nhóm chỉ thiết kế mô hình nhỏ, phù hợp với các loại hàng nhẹ. - Do mô hình robot không có cảm biến tiệm cận phía sau nên khi robot đi lùi sẽ không phát hiện được vật cản, vì vậy khi chạy mô hình không có vật cản phía sau robot.
- Do thiết kế mô hình robot phù hợp với chức năng đề tài nên cảm biến lidar chỉ quét được 220 độ ( từ 110 độ đến -110 độ) ĐỒ ÁN TỐT NGHIỆP 4 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Chương 2 : CƠ SỞ LÝ THUYẾT 2.1 Mô hình toán học hệ hai bánh vi sai Vl Y X Vr 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 V + Vr V − Vl R= .4) 2 Vr − Vl l ĐỒ ÁN TỐT NGHIỆP 5 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: ICCC = 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 − ICCx ICCx 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ố [1] đã đư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à: ĐỒ ÁN TỐT NGHIỆP 6 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT x x(t ) x y = y (t ) + y 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à: x(t ) = v(t ) cos (t ) dt t (2.13) 0 Kết hợp với công thức (2.9) ta viết lại như sau: 1 t Vr (t ) + Vl (t ) cos (t ) dt 2 0 x(t ) = (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 Vr = Vl = v (robot đi thẳng và hướng robot là 00 ) 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 TỐT NGHIỆP 7 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 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 Tóm lại, đối với hệ này, ta có các trường hợp đặc biệt đối với vận tốc từng bánh: 1. Nếu Vl = Vr ( Vl , Vr > 0) thì robot sẽ chuyển động tuyến tính theo đường thẳng về phía trước và ngược lại Vl = Vr ( Vl , Vr < 0) thì robot sẽ chuyển động về phía 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 Vr thì robot sẽ di chuyển phía trước về hướng bên trái.Ngược lại, Vl Vr robot sẽ di chuyển phía trước về hướng bên phải.
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 dành cho robot 2.1 Tổng quan về hệ điều hành ROS ➢ ROS (Robot Operating System) là một bộ phần mềm trung gian mã nguồn mở (open– resoured) được phát triển nhằm hỗ trợ việc xây dựng và phát triển các ứng dụng robot. Được duy trì và phát triển bởi Open Robotics, ROS cung cấp một tập hợp các thư viện và công cụ để giúp các nhà phát triển tạo ra các ứng dụng robot phức tạp một cách dễ dàng và hiệu quả.[2] ➢ Các phiên bản của ros: • ROS1: Phiên bản gốc của ROS, được sử dụng rộng rãi trong nhiều ứng dụng robot. • ROS2: Phiên bản mới hơn của ROS, được thiết kế với mục tiêu cải thiện hiệu suất, tính bảo mật, và khả năng mở rộng, đồng thời hỗ trợ thời gian thực tốt hơn. ➢ Ứng dụng ros trong thực tiễn • Robot di động: ROS được sử dụng rộng rãi trong các dự án robot di động như robot tự hành, robot dịch vụ, và robot tìm kiếm cứu nạn.
ĐỒ ÁN TỐT NGHIỆP 8 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT • Cánh tay robot: Điều khiển và lập trình cánh tay robot trong các ứng dụng công nghiệp và nghiên cứu. • Drone: ROS cũng được sử dụng trong điều khiển và phát triển các ứng dụng drone. • Ứng dụng công nghiệp: ROS được áp dụng trong nhiều quy trình tự động hóa công nghiệp, từ sản xuất đến kiểm tra chất lượng. ➢ Ưu điểm để chọn ros làm nền tảng lập trình [3] 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), khả năng này của ROS giúp phát triển các ứng dụng robot hiện đại như xe tự hành, tự động hóa công nghiệp, và các lĩnh vực khác.
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ư 2D LIDAR, laser scanners, depth sensor,… cho phép các nhà phát triển robot tận dụng tối đa các cảm biến và cơ cấu chấp hành cao cấp, từ đó tạo ra các hệ thống robot thông minh và hiệu quả hơn. 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.
Các nodes này có thể được lập trình với nhiều ngôn ngữ như C++, Python, Java,… Modulary: Một trong những vấn đề có thể xảy ra trong hầu hết các robot độc lập là nếu bất kỳ luồng nào của code chính gặp sự cố thì toàn bộ robot có thể dừng lại. Trong ROS thì khác, mỗi quy trình sẽ được đại diện dưới mỗi nodes và các nodes này liên kết với nhau thông qua các topic và nếu một trong số node này bị dừng thì hệ thống vẫn có thể hoạt động và trong lúc đó vẫn có thể tiến hành khắc phục sự cố node đó. ROS chủ yếu được chia thành 3 cấp độ ROS Filesystem Level.[4] ĐỒ ÁN TỐT NGHIỆP 9 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Hình 2-2 ROS filesystem level Filesystem chủ yếu là các nguồn tài nguyên của ROS được thực thi trên bộ nhớ lưu trữ hệ thống,bao gồm: Packages: Một package là một thư mục chứa các chương trình (executable files) và tệp hỗ trợ phục vụ cho một mục đích cụ thể ví dụ như các nodes, các thư viện, các file hoặc bất cứ file nào cho việc tổ chức.