Khác với các robot được sử dụng trong công nghiệp ít khi di chuyển, robot tự hành lại có khả năng di chuyển trong những môi trường khơng được kiểm sốt và chúng được trang bị các cảm biến
Trang 1
ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA
Tp Hồ Chí Minh, tháng 07/2023
NGHIÊN CỨU VÀ THIẾT KẾ MOBILE ROBOT TỰ HÀNH
TRONG NHÀ XƯỞNG SỬ DỤNG LIDAR
GVHD: TS NGUYỄN VĂN THÁI SVTH: BÙI LÊ ANH
NGUYỄN QUỐC KIỆT
S K L 0 1 1 1 1 9
Trang 2KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Ngành : CNKT Điều khiển và Tự động hóa
GVHD : TS Nguyễn Văn Thái
Tp Hồ Chí Minh, tháng 7 năm 2023
NGHIÊN CỨU VÀ THIẾT KẾ MOBILE ROBOT TỰ HÀNH TRONG NHÀ XƯỞNG SỬ DỤNG LIDAR
Trang 3ĐỘC LẬP – TỰ DO – HẠNH PHÚC
o0o
Tp Hồ Chí Minh, ngày 15 tháng 7 năm 2023
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: Bùi Lê Anh MSSV: 19151099
Ngành: CNKT Điều Khiển và Tự Động Hóa Lớp: 19151CL2A
Họ và tên sinh viên: Nguyễn Quốc Kiệt MSSV: 19151146
Ngành: CNKT Điều Khiển và Tự Động Hóa Lớp: 19151CL3B
Giảng viên hướng dẫn: TS Nguyễn Văn Thái ĐT: 0902807476
Ngày nhận đề tài: 23/2/2023 Ngày nộp đề tài: 30/6/2023
1 Tên đề tài: NGHIÊN CỨU VÀ THIẾT KẾ MOBILE ROBOT TỰ HÀNH TRONG NHÀ XƯỞNG SỬ DỤNG LIDAR
2 Các thiết bị, thành phần hệ thống: Jetson Nano Developer Kit B01, Lidar RPLIDAR A1 2D 360°, Arduino Uno R3, động cơ DCM50-775, encoder, cảm biến gốc MPU9250, mạch điều khiển động cơ BTS7960, mạch giảm áp Buck DC-DC XL4005
3 Nội dung thực hiện:
- Tìm hiểu về hệ điều hành robot ROS
- Tìm hiểu nghiên cứu giao tiếp giữa Jetson Nano và mạch vi xử lý Arduino
- Thiết kế phần cứng cho mobile robot và lập trình để điều khiển tốc độ động cơ cũng như là góc quay của robot
- Xây dựng bản đồ di chuyển cho robot
- Chạy thử nghiệm và hiệu chỉnh mô hình
- Đánh giá kết quả thực hiện và viết luận văn
4 Sản phẩm:
- Mô hình xe robot tự hành tránh vật cản sử dụng lidar
TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN
Trang 4ĐỘC LẬP – TỰ DO – HẠNH PHÚC
o0o
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Bùi Lê Anh MSSV: 19151099
Họ và tên Sinh viên: Nguyễn Quốc Kiệt MSSV: 19151146 Ngành: CNKT Điều Khiển và Tự Động Hóa
Tên đề tài: NGHIÊN CỨU VÀ THIẾT KẾ MOBILE ROBOT TỰ HÀNH TRONG NHÀ XƯỞNG SỬ DỤNG LIDAR
Họ và tên Giáo viên hướng dẫn: TS Nguyễn Văn Thái
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng 7 năm 2023
Giáo viên hướng dẫn
Trang 5ĐỘC LẬP – TỰ DO – HẠNH PHÚC
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Bùi Lê Anh MSSV: 19151099
Họ và tên Sinh viên: Nguyễn Quốc Kiệt MSSV: 19151146 Ngành: CNKT Điều Khiển và Tự Động Hóa
Tên đề tài: NGHIÊN CỨU VÀ THIẾT KẾ MOBILE ROBOT TỰ HÀNH TRONG NHÀ XƯỞNG SỬ DỤNG LIDAR
Họ và tên Giáo viên phản biện:
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm: (Bằng chữ:
Tp Hồ Chí Minh, ngày tháng 7 năm 2023
Giáo viên hướng dẫn
Trang 6i
Đồ án tốt nghiệp là một công trình nghiên cứu quan trọng sau nhiều năm học tập,
là yêu cầu bắt buộc đối với bất cứ sinh viên nào trước khi ra trường Việc nghiên cứu một vấn đề mới mẻ luôn luôn luôn là một việc vô cùng khó khăn Chính vì thế nhờ
có sự giúp đỡ hướng dẫn tận tình của quý thầy cô mà sinh viên có thể thực hiện đề tài nghiên cứu của mình hoàn thành một cách suôn sẻ
Lời đầu tiên, chúng em xin dành lời cảm ơn đến quý thầy cô Trường đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, thầy cô trong ngành CNKT Điều khiển và
Tự động hóa và thầy cô khoa Đào tạo Chất lượng cao đã tận tình hướng dẫn, truyền đạt những kiến thức quý báo cho chúng em trong suốt thời gian chúng em học tập tại trường
Đặc biệt, chúng em xin gửi lời cảm ơn chân thành đến thầy TS Nguyễn Văn Thái Người đã tận tình giúp đỡ, tạo điều kiện và dành thời gian theo sát chúng em trong quá trình thực hiện đề tài này
CẢM ƠN CÔNG TY I&C, LÀ CÔNG TY ĐẶT HÀNG CHO ĐỀ TÀI NGHIÊN CỨU NÀY, SẼ TIẾP NHẬN CẢ KẾT QUẢ NGHIÊN CỨU VÀ CÁC SINH VIÊN THỰC HIỆN ĐỀ TÀI TỐT NGHIỆP NÀY VÀO LÀM Ở CÔNG TY
Sau cùng, chúng con gửi lời cảm ơn đến ba mẹ và người thân trong gia đình - những người đã luôn giúp đỡ, động viên chúng em trong suốt quá trình học tập
Sinh viên thực hiện đề tài
Trang 7ii
Robot tự hành đã quá quen thuộc không còn là điều quá xa lạ với mọi người trong cuộc sống Khi chúng có mặt khắp mọi nơi trong cuộc sống hằng ngày của chúng ta Chúng góp phần không nhỏ vào việc thay thế con người để hoàn thành các công việc nặng, làm việc trong môi trường khó khăn nơi mà con người khó tiếp cận qua đó giúp tiết kiệm được thời gian, của cải và sức lực của con người
Từ thực tiễn và nhu cầu sử dụng rộng lớn đó, nhóm đã tìm hiểu xây dựng đề tài
“Nghiên cứu và thiết kế mobile robot trong nhà xưởng có sử dụng LIDAR” có
nhiệm vụ chính là giúp cho robot có khả năng di chuyển, thực hiện hoạt động một cách độc lập hoàn toàn tự động Trong đề tài này, nhóm thiết kế phần cứng có kích thước phù hợp hỗ trợ khả năng di chuyển và định vị vị trí trong nhà xưởng Xây dựng
bộ điều khiển PID đáp ứng được các yêu cầu đặt ra về vận tốc giúp chúng di chuyển một cách chính xác Tiếp theo là lập trình trên hệ điều hành ROS để cho robot có khả năng xây dựng bản đồ và định vị vị trí của robot trong bản đồ đã được xây dựng Đồng thời xây dựng phần mềm di chuyển hỗ trợ lập bản đồ cho robot được điều khiển qua web, các nút nhấn điều khiển robot giúp cho người sử dụng dễ dàng bật tắt robot với những thao tác Cuối cùng, nhóm xây dựng cho robot có khả năng di chuyển đến đích với đường đi ngắn nhất và tránh né vật cản trong lúc di chuyển
Trang 8iii
Autonomous robots have become familiar and no longer unfamiliar to people in daily life They are present everywhere, contributing significantly to replacing humans in performing heavy tasks and working in challenging environments that are difficult for humans to access, thereby saving time, resources, and human effort Based on this reality and the widespread demand for their use, our team has researched and designed the topic 'Research and Design of a LIDAR-based Mobile Robot in a Factory,' with the main task of enabling the robot to move and perform activities completely autonomously In this project, we design hardware of suitable size to support the robot's mobility and position tracking within the factory We build
a PID controller that meets the specified velocity requirements to ensure precise movement Furthermore, we program the robot on the ROS operating system to enable map building and localization within the constructed map We also develop supportive software for controlling the robot's movement and mapping via a web interface, with control buttons facilitating easy on/off operation for the user Finally,
we enable the robot to navigate to its destination using the shortest path and avoid obstacles during movement
Trang 9iv
LỜI CẢM ƠN i
TÓM TẮT ii
ABSTRACT iii
MỤC LỤC iv
DANH MỤC HÌNH ẢNH viii
DANH MỤC BẢNG xii
DANH MỤC CÁC TỪ VIẾT TẮT xiii
CHƯƠNG 1 TỔNG QUAN 1
1.1 Giới thiệu chung 1
1.2 Mục tiêu đề tài 2
1.3 Giới hạn đề tài 2
1.4 Đặt vấn đề 2
1.5 Nội dung nghiên cứu 2
1.6 Phương pháp nghiên cứu 3
1.7 Bố cục cuốn báo cáo 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 4
2.1 Động lực học của robot 4
2.1.1 Động học thuận của robot: 5
2.1.2 Tính toán động lực học của robot 7
2.2 Giới thiệu về hệ thống ROS 10
2.2.1 Giới thiệu về ROS (Hệ điều hành Robot): 10
2.2.2 Cấu trúc ROS 12
2.3 Áp dụng mô hình ROS 16
2.3.1 Key Teleop 17
Trang 10v
2.3.3 Odometry 18
2.3.4 SLAM/AMCL 19
2.3.5 RPLIDAR 20
2.3.6 Robot State Publisher 20
2.3.7 Map Server 20
2.3.8 Move Base 20
2.4 Rviz (ROS Visualization) 20
2.5 SLAM 20
2.5.1 Giới thiệu về SLAM (Simultaneous localization and mapping) 20
2.5.2 LIDAR SLAM 21
2.5.3 2D Navigation Stack 21
2.5.4 Costmap 2D 22
2.5.5 Cách cấu hình costmap 22
2.6 Thuật toán cho global planner và local planner 23
2.6.1 Thuật toán Dijkstra 23
2.6.2 Thuật toán Dynamic Window Approach 27
2.6.3 Không gian tìm kiếm 28
2.6.4 Tối ưu 29
2.7 UART 31
2.8 I2C 33
2.9 Điều khiển động cơ sử dụng thuật toán PID 33
2.9.1 Giới thiệu bộ điều khiển PID 33
2.9.2 Thiết kế bộ tham số PID 35
CHƯƠNG 3 THIẾT KẾ PHẦN CỨNG 36
3.1 Tổng quan phần cứng robot 36
Trang 11vi
3.1.2 Sơ đồ khối 37
3.2 Thiết kế khung xe robot 38
3.2.1 Base main 39
3.2.2 Base RPLIDAR 39
3.2.3 Base top 40
3.2.4 Gá động cơ và trụ đồng 41
3.2.5 Trục trơn 41
3.2.6 Puly 42
3.2.7 Dây đai 42
3.2.8 Gối đỡ KP08 42
3.2.9 Tổng hợp các chi tiết cho phần cứng 43
3.3 Lựa chọn các thiết bị cho robot 44
3.3.1 NDIVIA Jetson Nano Developer Kit B01 44
3.3.2 Lựa chọn động cơ 45
3.3.3 Encoder 48
3.3.4 Lựa chọn mạch cầu điều khiển 49
3.3.5 Cảm biến IMU 51
3.3.6 Vi điều khiển Arduino Uno 52
3.3.7 RPLIDAR A1 53
3.3.8 Bánh xe đa hướng 54
3.3.9 Mạch giảm áp 55
3.3.10 Lựa chọn nguồn điện cho robot 56
3.4 Mô hình robot thực tế 57
CHƯƠNG 4 THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN 58
4.1 Chương trình điều khiển Robot 58
Trang 12vii
4.1.2 Xử lý tín hiệu từ cảm biến IMU và Encoder 60
4.1.3 Chương trình điều khiển PID 61
4.2 Tích hợp hệ thống trên ROS 63
4.2.1 Lập bản đồ môi trường 63
4.2.2 Điều hướng trên bản đồ (Navigation): 67
4.3 Thiết kế giao diện điều khiển 72
CHƯƠNG 5 KẾT QUẢ THỰC NGHIỆM 74
5.1 Khảo sát bộ điều khiển PID 74
5.2 Tạo bản đồ số cho môi trường xung quanh 76
5.3 Robot Tự tìm đường đến vạch đích và tránh vật cản 77
5.3.1 Robot di chuyển đến vị trí (1.36, 0.00) và quay góc 00 79
5.3.2 Robot di chuyển đến vị trí (7.36, -0.66) và quay góc -900 80
5.3.3 Robot quay góc 900 so với vị trí ban đầu của robot 81
5.3.4 Robot di chuyển đến điểm đích và tránh vật cản 82
5.3.5 Robot di chuyển đến từng điểm tuần tự và quay về vị trí ban đầu 83
5.3.6 Khả năng chịu tải của robot 86
5.4 Nhận xét và kết luận 89
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 90
6.1 Kết luận 90
6.2 Hướng phát triển 90
TÀI LIỆU THAM KHẢO 92
PHỤ LỤC 93
Trang 13viii
Hình 1.1: Robot tự hành trong nhà máy sản xuất 1
Hình 2.1: Hệ trục toạ độ của mobile robot 4
Hình 2.2: Hệ trục toạ độ của robot 7
Hình 2.3: ROS2 Foxy 11
Hình 2.4: Cấu trúc package trong ROS 12
Hình 2.5: Cấu trúc Stack trong ROS 13
Hình 2.6: Mô hình ROS File System 13
Hình 2.7: Giao tiếp cơ bản trong ROS 14
Hình 2.8: Mô hình giao tiếp giữa các nodes 16
Hình 2.9: Mô hình kết nối robot với nền tảng ROS 16
Hình 2.10: Các giá trị robot 17
Hình 2.11: Vị trí robot 19
Hình 2.12: Mô hình Navigation stack trong ROS 22
Hình 2.13: Tìm đường đi trên bản đồ dùng thuật toán Dijkstra 24
Hình 2.14: Graph mẫu 25
Hình 2.15: Node C là source_node 25
Hình 2.16: Node A là source_node 26
Hình 2.17: Xét node liền kề 26
Hình 2.18: Node D là source_node 26
Hình 2.19: Xét các node liền kề node D 27
Hình 2.20: Node B là source_node 27
Hình 2.21: Vận tốc cho phép Va trong DWA 28
Hình 2.22: Vận tốc trong cửa sổ động V d trong DWA 29
Hình 2.23: Heading của robot trong DWA 30
Trang 14ix
Hình 2.25: Giao tiếp UART với data bus 32
Hình 2.26: Giao tiếp I2C 33
Hình 2.27: Sơ đồ điều khiển PID cho robot 33
Hình 3.1: Sơ đồ tổng quát mô hình 36
Hình 3.2: Sơ đồ khối chi tiết các module Robot 37
Hình 3.3: Sơ đồ nối dây phần cứng của mạch điều khiển 38
Hình 3.4: Sơ đồ nối dây cho phần máy tính nhúng và vi điều khiển 38
Hình 3.5: Thiết kế tầng một của robot 39
Hình 3.6: Thiết kế tầng hai của robot 40
Hình 3.7: Thiết kế tầng trên cùng của robot 40
Hình 3.8: Gá động cơ của robot 41
Hình 3.9: Trụ động đỡ các tầng của robot 41
Hình 3.10: Trục trơn 41
Hình 3.11: Puly 42
Hình 3.12: Dây đai 42
Hình 3.13: Gối đỡ 42
Hình 3.14: Khung robot hoàn chỉnh trên Solidworks 43
Hình 3.15: Khung robot hoàn chỉnh trên Solidworks 44
Hình 3.16: Jetson Nano Developer Kit B01 45
Hình 3.17: Lực tác động lên bánh xe 45
Hình 3.18: Động cơ giảm tốc DC50-775 48
Hình 3.19: Encoder 49
Hình 3.20: Driver BTS7960 50
Hình 3.21: Cảm biến MPU9250 51
Hình 3.22: Board Arduino Uno R3 52
Trang 15x
Hình 3.24: Bánh đa hướng 54
Hình 3.25: Mạch giảm áp Buck DC – DC XL4015 5A 55
Hình 3.26: Mô hình thực tế 57
Hình 4.1: Lưu đồ điều khiển của robot trên ROS 58
Hình 4.2: Lưu đồ giao tiếp giữa vi điều khiển và máy tính 59
Hình 4.3: Lưu đồ xử lý tín hiệu cảm biến 60
Hình 4.4: Sơ đồ điều khiển PID 61
Hình 4.5: Sơ đồ điều khiển 62
Hình 4.6: Lập bản đồ môi trường từ laser 63
Hình 4.7: Khởi động LIDAR trên Rviz 64
Hình 4.8: Dùng Scan matching để mở rộng bản đồ 65
Hình 4.9: Bản đồ sau khi vẽ 66
Hình 4.10: Sơ đồ giao tiếp 72
Hình 4.11: Giao diện điều khiển 73
Hình 5.1: Đáp ứng của động cơ bánh trái 74
Hình 5.2: Đáp ứng của động cơ bánh phải 75
Hình 5.3: Chương trình Rviz2 khi robot thực hiện quét bản đồ 76
Hình 5.4: Bản đồ robot quét được 77
Hình 5.5: Bản đồ thực 77
Hình 5.6: Hình vẽ mô phỏng robot di chuyển 78
Hình 5.7: Hình vẽ mô phỏng đường robot di chuyển 78
Hình 5.8: Hình vẽ mô phỏng điểm đến và hướng của robot 78
Hình 5 9: Vị trí ban đầu của robot trên bản đồ và môi trường 79
Hình 5.10: Robot tại điểm đến và với hướng quay đặt sẵn 79
Hình 5.11: Vị trí ban đầu của robot trên bản đồ và môi trường 80
Trang 16xi
Hình 5.13: Vị trí ban đầu của robot trên bản đồ và môi trường 81
Hình 5.14: Robot tại điểm đến và với hướng quay đặt sẵn 81
Hình 5.15: Robot trước khi gặp vật cản 82
Hình 5.16: Robot khi vượt qua vật cản 82
Hình 5.17: Robot sau khi vượt qua vật cản 83
Hình 5.18: Các điểm đến của robot trên bản đồ 83
Hình 5.19: Vị trí ban đầu của robot trên bản đồ và môi trường 84
Hình 5.20: Robot tại điểm đến thứ nhất và với hướng quay đặt sẵn 84
Hình 5.21: Robot tại điểm đến thứ hai và với hướng quay đặt sẵn 85
Hình 5.22: Robot tại điểm đến thứ ba và với hướng quay đặt sẵn 85
Hình 5.23: Các loại tải robot sẽ thực hiện tải Mỗi loại tải xấp xỉ 5kg 86
Hình 5.24: Vị trí ban đầu của robot khi thử tải 5kg 86
Hình 5.25: Vị trí kết thúc của robot khi thử tải 5kg 87
Hình 5.26: Vị trí ban đầu của robot khi thử tải 10kg 87
Hình 5.27: Vị trí kết thúc của robot khi thử tải 10kg 88
Hình 5.28: Vị trí ban đầu của robot khi thử tải 15kg 88
Hình 5.29: Vị trí kết thúc của robot khi thử tải 15kg 89
Trang 17xii
Bảng 2.1: Bảng D-H của mobile robot 4
Bảng 2.2: Bảng vận tốc điều khiển 17
Bảng 2.3: Thông tin giao thức UART 32
Bảng 3.1: Bảng tổng hợp các chi tiết của robot 43
Bảng 3.2: Thông số của động cơ 48
Bảng 3.3: Thông số encoder 49
Bảng 3.4: Thông số mạch cầu H BTS7960 50
Bảng 3.5: Thông số cảm biến MPU9250 51
Bảng 3.6: Thông số Board Arduino Uno R3 53
Bảng 3.7: Thông số kỹ thuật RPLIDAR A1 54
Bảng 3.8: Thông số kỹ thuật mạch giảm XL4015 55
Bảng 3.9: Thông số kỹ thuật ắc-quy 56
Bảng 4.1: Bảng chứa thông tin bản đồ 67
Bảng 4.2: Bảng thông số kỹ thuật của global costmap 69
Bảng 4.3: Bảng thông số kỹ thuật của local costmap 70
Bảng 4.4: Bảng thông số kỹ thuật của local planner 71
Bảng 5.1: Bảng so sánh thông bản đồ thu được và thực tế 77
Trang 18xiii
AGV Autonomous guided vehicle
ARM Autonomous mobile robot
ROS Robot Operating System
IMU Inertial Measurement Unit
UART Universal Asynchronous Receiver / Transmitter
SLAM Simultaneous Localization and Mapping
AMCL Adaptive Monte Carlo Localization
LIDAR Light Detection and Ranging
PWM Pulse Width Modulation
RVIZ Visualizer for the Robot Operating System
DC Direct Current
DWA Dynamic Window Approach
Trang 191
CHƯƠNG 1 TỔNG QUAN 1.1 Giới thiệu chung
Với những đột phá về sự phát triển không ngừng của công nghệ, khoa học, kỹ thuật trên thế giới hiện nay Vai trò của robot đã và đang ngày càng hết sức quan trọng trong hầu hết các lĩnh vực Trong đó, robot tự hành là một trong những cánh tay đắc lực giúp cho con người trong nhiều lĩnh vực
Robot tự hành, hay còn được gọi là AMR (Autonomous mobile robot) hoặc AGV (Autonomous guided vehicle) là những robot có khả năng di chuyển tự động Khác với các robot được sử dụng trong công nghiệp ít khi di chuyển, robot tự hành lại có khả năng di chuyển trong những môi trường không được kiểm soát và chúng được trang bị các cảm biến, phần mềm, hệ thống điều khiển Và chúng di chuyển theo các con đường đã được định trước
Hình 1.1: Robot tự hành trong nhà máy sản xuất
Với sự phát triển không ngừng, công nghệ robot hiện nay ngày càng hoàn thiện Robot tự hành được ứng dụng có mặt hầu hết tất cả các lĩnh vực từ y tế, quân sự, giáo dục hay đời sống với các kích thước và hình dạng khác nhau, chúng mang lại nhiều lợi ích cho đời sống xã hội, thay thế dần sức lao động con người trong môi trường độc hại nguy hiểm, tăng nhanh năng suất lao động
Ở nước ta việc sử dụng robot còn hạn chế chưa phổ biến mà lý do chính là sự khó
khăn trong việc tiếp cận công nghệ, Do đó nhóm đã quyết định chọn đề tài “Nghiên
cứu và thiết kế mobile robot trong nhà xưởng sử dụng LIDAR” để làm đề tài cho
khóa luận tốt nghiệp của mình
Trang 202
Với đề tài trên, nhóm đã quyết định thiết kế robot trên hệ điều hành dành cho robot (Robot Operating System) là một hệ thống với mã nguồn mở, là nền tảng cho việc thiết kế phần mềm, ứng dụng dành cho robot
1.2 Mục tiêu đề tài
Mục tiêu là nghiên cứu, thiết kế và chế tạo thành công mô hình robot kích thước
65 x 45 x 30 (cm) có khả năng tự hành vận chuyển hàng hóa bên trong nhà máy sản xuất
1.3 Giới hạn đề tài
Đề tài chỉ tập trung nghiên cứu phát triển mô hình robot có khối lượng tối đa khi
có tải khoảng 25kg và sử dụng LIDAR xây dựng bản đồ, di chuyển tránh vật cản và tìm đường đi ngắn nhất
1.4 Đặt vấn đề
Nghiên cứu bài toán liên quan đến robot tự hành có thể vận chuyển hàng hóa và
di chuyển với vận tốc lớn hơn 0.4 (m/s) song song đó chúng có thể định vị và tìm đường đi trong môi trường sản xuất Đây là một vấn đề quan trọng trong bài toán tìm đường đi, mục tiêu của bài toán này là tìm một đường đi thích hợp cho robot để chúng
có thể di chuyển một cách nhanh nhất với thời gian ít nhất Để chúng có thể giúp đỡ con người trong nhiều lĩnh vực khác nhau trong cuộc sống
Có nhiều phương pháp để giải quyết vấn đề trên như là lập trình thủ công hoặc điều hướng cho robot Tuy nhiên, có một số hạn chế như là robot làm việc trong môi trường quá phức tạp việc tìm đường đi ngắn nhất rất khó khăn Do đó sẽ sử dụng toán được tạo tự động Lúc này đường dẫn đến vị trí thích hợp sẽ tự động tìm thấy, tốc độ tìm đường sẽ được xác định bởi thuật toán được sử dụng Phương pháp này có ưu điểm hơn các phương pháp trên là robot sẽ tự động tìm đường dẫn ngắn nhất Tuy nhiên, để robot tự động tìm đường dẫn thì bắt buộc sẽ phải có thông tin về bản đồ từ trước và robot cũng phải xử lí để tìm được mục tiêu
1.5 Nội dung nghiên cứu
Nội dung thực hiện đề tài:
- Tìm kiếm tài liệu liên quan đến các nghiên cứu về cách sử dụng ROS, cách truyền nhận dữ liệu giữa máy tính nhúng và vi điều khiển
Trang 213
- Cài đặt ROS trên hệ điều hành Ubuntu của máy tính nhúng
- Lựa chọn các thiết bị như động cơ, encoder, nguồn,…
- Khảo sát bộ điều khiển PID phù hợp
- Thiết kế, lắp ráp mô hình hoàn chỉnh cho robot
- Tìm hiểu sử dụng LIDAR, thực hiện vẽ bản đồ và đặt trục cho robot trên ứng dụng ROS
- Mô phỏng mô hình trên ứng dụng ROS
- Lập trình truyền nhận dữ liệu giữa vi điều khiển, motor, máy tính nhúng
- Nghiên cứu và thử nghiệm robot di chuyển tránh né vật cản
- Thử nghiệm thuật toán định vị vị trí và tìm đường đi ngắn nhất
1.6 Phương pháp nghiên cứu
Đề tài sử dụng tổng hợp các phương pháp nghiên cứu sau:
- Phương pháp nghiên cứu lý thuyết
- Phương pháp thực nghiệm
1.7 Bố cục cuốn báo cáo
Nội dung đề tài gồm các phần như sau:
Chương 1: Tổng quan về robot
Chương 2: Động lực học robot, giới thiệu hệ điều hành ROS, khái niệm về các gói dữ liệu trong ROS cần sử dụng khi điều khiển robot, giới thiệu về các cách truyền
Trang 224
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT 2.1 Động lực học của robot
Hình 2.1: Hệ trục toạ độ của mobile robot
Bảng D-H của robot cần dựa theo quy tắc bàn tay phải về cách đặt hệ trục tọa độ cho các khớp như sau:
Trang 235
Trong đó:
ai-1 là khoảng cách từ trục zi-1 đến trục zi dọc theo trục xi-1.
αi-1 là góc lệch của trục zi-1 đến trục zi dọc theo trục xi-1.
di là khoảng cách từ trục xi-1 đến trục xi dọc theo trục zi.
θi là góc quay từ trục xi-1 dọc theo trục zi
2.1.1 Động học thuận của robot:
Từ bảng D-H, với cách đặt hệ trục tọa độ như trên, ta có thể tính các ma trận chuyển đổi đồng nhất giữa các hệ trục tọa độ theo công thức sau:
1
c s c s
Trang 257
2.1.2 Tính toán động lực học của robot
Ta có toạ độ của robot sau khi di chuyển trên hệ trục là như sau:
Hình 2.2: Hệ trục toạ độ của robot
c c là toạ độ điểm đầu của robot
Chuyển vế phương trình (2.8) trên, ta được:
Trang 26v vs dc d y
v vs dc y
Với là gia tốc góc (rad/s2)
Phương trình tổng quát động lực học của robot:
Trang 27 là gia tốc góc của khâu thứ i
I i là momen quán tính của khâu thứ i
refi là năng lượng thế năng tại gốc
Ta có vận tốc thẳng của robot được tính theo vận tốc bánh trái và vận tốc bánh phải:
2
v l vr
v +
Với 𝑣𝑙 là vận tốc bánh trái; 𝑣𝑟 là vận tốc bánh phải
Động năng của robot là:
Trang 2810
Thế năng của robot:
Do U =0vì phương của robot là phương ngang vuông góc với gia tốc trọng trường nên thế năng của robot bằng 0
md I z mdR mR
2.2 Giới thiệu về hệ thống ROS
2.2.1 Giới thiệu về ROS (Hệ điều hành Robot):
ROS là một hệ thống framework dùng cho các ứng dụng robot Về cơ bản, ROS
có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu,… ROS còn được phát triển riêng biệt về các thư viện, công cụ hỗ trợ việc vẽ đồ thị, lưu dữ liệu, hiển thị model 3D của robot,… ROS được phát triển dưới dạng module Từ đó một nhóm nghiên cứu có thể chỉ chuyên sâu vào một lĩnh vực như vẽ bản đồ hay định vị robot vẫn có thể xây dựng một hệ thống robot hoàn chỉnh khi tái
sử dụng những module đã được phát triển trước đó Nhóm đã chọn hệ thống ROS để phát triển robot với khả năng vẽ bản đồ và định vị dựa trên những ưu điểm sau:
Trang 2911
• ROS cung cấp nhiều module giúp người dùng tùy biến cho phù hợp với yêu cầu phát triển từng loại robot
• Những module hoạt động độc lập với nhau và trao đổi thông qua các gói dữ liệu
Vì vậy dễ phát hiện và sửa lỗi cho từng module
• ROS có mã nguồn mở được cộng đồng nghiên cứu về lĩnh vực robot phát triển Lượng người dùng lớn giúp cho hệ thống ROS ngày càng đa dạng và phong phú
về tính năng và dữ liệu Những lỗi phát sinh trong quá trình sử dụng cũng được cộng đồng người dung hỗ trợ xử lý nhanh chóng
Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giao tiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics, và lưu dữ liệu trên Parameter Server
Hiện nay ROS chỉ chạy trên nền tảng Unix Phần mềm cho ROS chủ yếu được thử nghiệm trên Ubuntu và Mac OS X Cho đến nay cộng đồng ROS cũng đã bắt đầu xây dựng cho Fedora, Gentoo, Arch Linux và các nền tảng Linux khác ROS chưa hỗ trợ trên Microsoft Windows
Hình 2.3: ROS2 Foxy
Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường được phát hành ở dạng ROS Distribution, tương tự như Linux distribution, cung cấp một bộ phần mềm để người dùng sử dụng, xây dựng và phát triển
Trang 3012
2.2.2 Cấu trúc ROS
ROS gồm ba cấp khái niệm: Filesystem, Computation Graph và Community [1] Cấp thứ nhất – Filesystem: giải thích về các cấu trúc thư mục và các tập tin tối thiểu để ROS hoạt động
Cấp thứ hai – Computation Graph: là giao tiếp giữa các quá trình xử lý và hệ thống Quản lý các quá trình giao tiếp giữa nhiều máy tính với nhau, …
Cấp thứ ba – Community: Giải thích/ hướng dẫn các công cụ và các khái niệm
để chia sẻ kiến thức, thuật toán chương trình xử lý bất kỳ nhà phát triển nào
2.2.2.1 ROS filesystem
Filesystem là các nguồn tài nguyên của ROS được lưu trữ trên bộ nhớ hệ thống, bao gồm các thành phần như:
Packages: chứa các lệnh thực thi của ROS (các nodes), một thư viện phụ thuộc
ROS, tập dữ liệu, các file cấu hình, hoặc các dữ liệu cần thiết khác trong hệ thống
Manifests (manifests.xml): cung cấp cơ sở dữ liệu về một package, bao gồm
license, cờ biên dịch,…
Hình 2.4: Cấu trúc package trong ROS Stacks: Khi chúng ta kết hợp các package với nhau với một vài chức năng thì
được gọi là Stack Trong ROS, có rất nhiều stack với công dụng khác nhau
Stack Manifests (stack.xml): cung cấp cơ sở dữ liệu về một stack, bao gồm
license và các thông số phụ thuộc vào những stack khác
Trang 3113
Hình 2.5: Cấu trúc Stack trong ROS Message (msg): là cấu trúc dữ liệu cho việc truyền nhận trong ROS
Service (srv): định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request) và các
phản hồi (response) của các services trong ROS
Hình 2.6: Mô hình ROS File System
Trang 3214
2.2.2.2 ROS Computation Graph Level
Hình 2.7: Giao tiếp cơ bản trong ROS
“Computation Graph”, gọi là lược đồ tính toán, là một mạng nơi các quy trình trong ROS được kết nối với nhau Bất kỳ một node nào trong hệ thống cũng có thể truy cập vào mạng này, tương tác với các node khác, trao đổi các dữ liệu nằm trong mạng Computation Graph cơ bản gồm các thành phần: Nodes, Master, Parameter Server, Message, Services, Topics và Bags, tất cả các thành phần này đều cung cấp
dữ liệu cho Graph bằng những phương thức khác nhau
Nodes: là đơn vị thực hiện các lệnh tính toán, xử lý dữ liệu Hệ điều hành được
thiết kế mô-đun hóa, các mô-đun được xây dựng rất chi tiết và chuyên biệt, một hệ thống điều khiển robot thường sẽ bao gồm nhiều nodes Ví dụ, một node điều khiển
hệ thống cảm biến, một node điều khiển động cơ bánh xe, một node thực hiện các tác
vụ định vị, một node hoạch định đường đi, một node vẽ quỹ đạo của hệ thống… Mỗi node ROS được xây dựng nhờ sử dụng một ROS client library, chẳng hạn như roscpp hoặc rospy
Master: ROS master cung cấp một tên đăng ký và tra cứu phần còn lại của
Computation Graph Nếu không có ROS Master thì các node không thể tìm thấy nhau, trao đổi các message hay gọi các service
Parameter Server: cho phép dữ liệu được lưu trữ bởi các từ khoá trong một vị
trí trung tâm Với các biến này, nó có thể được cấu hình các node trong khi nó đang hoạt động hoặc để thay đổi hoạt động của các node
Trang 3315
Messages: các node giao tiếp với nhau thông qua message Một message đơn
giản là một cấu trúc dữ liệu, bao gồm các trường được định nghĩa như integer, floating, point, boolean, … Messages có thể bao gồm các kiểu cấu trúc và mảng lồng vào nhau (giống kiểu struct trong C) Chúng ta có thể tự phát triển kiểu message dựa trên các message chuẩn
Topic: Messages được định tuyến thông qua hệ thống vận chuyển (transport
system), trong đó được phân loại thành publish (đưa tin) và subscribe (đăng kí nhận thông tin) Một node sẽ gửi một messages bằng việc publishing message đó lên một topic (chủ đề) định trước Topic chỉ là một cái tên để nhận nội dung của message Một node thì có thể subscribe một topic có tên và kiểu dữ liệu được khai báo Trong cùng một thời điểm, có thể nhiều publishers và subscribers cùng truy cập vào một topic, và một node có thể publish và subscribe nhiều topic
Services: mô hình publish/subscribe thì rất linh hoạt trong việc giao tiếp nhưng
đặc điểm là truyền được đa đối tượng và một chiều Nhưng đôi khi lại không thích hợp cho việc truyền theo dạng request/reply, thường được dùng trong kiểu hệ thống phân bố Do đó, việc truyền nhận theo dạng request/reply được dùng thông qua services Services được định nghĩa một cặp cấu trúc dữ liệu: một cho request và một cho reply Một node cung cấp một service thông qua một thuộc tính name, và một client sử dụng service bằng việc gửi một request message và đợi phản hồi
Bags: là một định dạng để lưu và phát lại dữ liệu từ các ROS messages Bags là
một cơ chế quan trọng để lưu trữ dữ liệu, chẳng hạn như dữ liệu cảm biến [1]
Trang 34Hình 2.9: Mô hình kết nối robot với nền tảng ROS
Trang 35Node Twist to Motor có nhiệm vụ thực hiện chuyển vận tốc tuyến tính và vận tốc góc sang giá trị vận tốc cho từng động cơ
Trang 3618
Vận tốc của từng động cơ sẽ được tính theo công thức sau:
( )2( )2
b
v R R
b
v R L
Vi điều khiển sẽ nhận và tiến hành xử lý vận tốc nhận được, sau đó vi điều
khiển sẽ xuất xung PWM để điều khiển hai động cơ qua mạch cầu H BTS7960 kết hợp với PID để chạy theo tốc độ đã nhận
2.3.3 Odometry
Node Odometry thực hiện ước lượng vị trí của robot ( , , )x y từ thông tin của encoder và IMU [4] Vị trí của robot được biểu diễn qua ( , , )x y trong đó x và y là tọa độ của robot hệ tọa độ Decade và θ là hướng của robot so với trục x
Giả sử robot ban đầu có vị trí ( ,x y0 0,0) sau một khoảng thời gian tdi chuyển được một đoạn d và xoay được một góc sẽ được tính theo công thức:
di chuyển độc lập của hai bánh xe qua việc đọc giá trị encoder sẽ được tính theo công thức:
Trang 3719
L L
R R
d d d
encoder d
tick meter
encoder d
_R encoder
là số xung encoder đọc trong khoảng thời gian
t
(xung)
L
d ,d là khoảng cách hai bánh xe đi được (m) R
Tick_meter là số xung encoder khi bánh xe di chuyển được một mét (ppm)
Hình 2.11: Vị trí robot 2.3.4 SLAM/AMCL
Node SLAM thực hiện vẽ bản đồ môi trường khi robot nhận ước vị trí và dữ liệu
từ cảm biến LIDAR Để có thể định vị và tránh vật cản robot cần có bản đồ môi trường Lần đầu, người dùng điều khiển robot di chuyển quét map bằng tay thông qua bàn phím hay tay cầm để tạo bản đồ môi trường
Trang 382.3.6 Robot State Publisher
Node Robot State Publisher hỗ trợ hiển thị vị trí và hướng xoay của robot trong
mô phỏng 3D Mỗi bộ phận của robot được biểu diễn bằng một Vector vị trí trong không gian Khi mô phỏng sẽ hiển thị sự di chuyển của từng khớp nối thông qua các Vector
2.3.7 Map Server
Node Map Server dùng để quản lý bản đồ đã được robot sử dụng Cung cấp công
cụ để lưu lại bản đồ vẽ từ SLAM và tải bản đồ lên để sử dụng cho AMCL Bản đồ được lưu thành hai file YAML khác nhau Một file lưu các thông số bản đồ như tên bản đồ, độ phân giải, gốc tọa độ ban đầu, ngưỡng File còn lại lưu ảnh của bản đồ
2.4 Rviz (ROS Visualization)
Rviz là một giao diện đồ họa của ROS cho phép trực quan hóa ba chiều, nó thể hiện những gì robot nhìn thấy Mọi thông tin của robot được tạo từ các node sẽ được hiển thị trên Rviz Đây là phần mềm dùng để điều khiển robot từ vị trí ban đầu đến vị trí mong muốn trên bản đồ
2.5 SLAM
2.5.1 Giới thiệu về SLAM (Simultaneous localization and mapping)
Simultaneous localization and mapping (SLAM) là công nghệ tọa độ hóa và dựng lại bản đồ môi trường trong công nghệ xe tự hành [5] SLAM xây dựng bản đồ bằng
Trang 39Laser SLAM được trang bị cảm biến LIDAR trong môi trường trong nhà không xác định có thể giúp robot xây dựng bản đồ và giúp robot tự chủ đi lại Hệ thống SLAM laser tính toán khoảng cách di chuyển tương đối và sự thay đổi tư thế của lidar bằng các khớp và so sánh hai đám mây điểm tại các thời điểm khác nhau, do đó hoàn thành định vị của chính robot trong bản đồ Bản đồ được xây dựng bằng laser SLAM
có độ chính xác cao, không có sai số và có thể được sử dụng trực tiếp để định vị và dẫn đường Laser SLAM có thể tự động điều hướng mà không cần bất kỳ thiết bị định
vị phụ trợ nào, có thể điều hướng tự do, tự động lập kế hoạch tuyến đường và di chuyển an toàn, hiệu quả
2.5.3 2D Navigation Stack
2D Navigation stack được dùng để lấy thông tin, dữ liệu từ odometry, cảm biến
và xuất ra tín hiệu vận tốc gửi về cho robot hoạt động
Một số yêu cầu khi sử dụng Navigation stack về phần cứng như sau:
Navigation stack gửi trực tiếp giá trị vận tốc về cho bộ phận điều khiển của robot
để đạt được các giá trị robot mong muốn như vận tốc theo trục x, vận tốc theo trục y
và vận tốc xoay
Navigation stack cần có cảm biến laser scan được gắn trên robot Dùng để xây dựng bản đồ (mapping), định vị (localization) và phát hiện vật cản
Trang 40Robot sẽ di chuyển trong map với hai định hướng đường đi là toàn cục (global)
và cục bộ (local): định hướng đường đi toàn cục (global) navigation được dùng để tạo đường đi cho mục tiêu trong bản đồ hoặc đường đi có khoảng cách xa; định hướng đường đi cục bộ (local navigation) được dùng để tạo đường đi trong khoảng cách gần
và để tránh vật cản khi robot di chuyển
Định hướng đường đi toàn cục thì dùng costmap toàn cục và costmap cục bộ dùng cho định hướng cục bộ Mỗi costmap sẽ có những thông số riêng của nó và cũng có những thông số dùng chung
Thuộc tính obstacle_range được dùng để chỉ khoảng cách tối đa mà cảm biến có thể đọc và nhận thông tin mới về môi trường costmap Nếu robot phát hiện ra vật cản