TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
Phát triển công cụ mô phỏng robot di động
trong môi trường Gazebo ứng dụng giải
thuật SLAM và URDF
PHẠM VĂN HÒA
Ngành Kỹ thuật cơ điện tử
Giảng viên hướng dẫn:
TS. Nguyễn Xuân Hạ
Chữ ký của GVHD
Viện:
Cơ khí
HÀ NỘI, 3/2021
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn : Phạm Văn Hịa
Đề tài luận văn: Phát triển cơng cụ mô phỏng robot di động trong môi
trường Gazebo ứng dụng giải thuật SLAM và URDF
Chuyên ngành: Cơ điện tử
Mã số SV: CA180108
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác
giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày 29/04/2021
với các nội dung sau:
- Bổ sung nội dung chương 1, trong đó trình bày rõ hơn về tổng quan
robot tự hành, phân loại robot tự hành
- Cắt ngắn chương 2, trong đó đã bỏ một số hình ảnh ví dụ minh họa có
nội dung trùng với chương 3, các đoạn mã code cho vào phần phụ lục
- Bổ sung thêm kết luận sau mỗi chương
- Ngoài cảm biến lidar, tác giả đã tích hợp thêm cảm biến hồng ngoại
nhằm khắc phục nhược điểm của lidar khi robot gặp mơi trương có vật
liệu bằng kính hoặc thủy tinh
- Bổ sung kết quả vẽ bản đồ của robot thực để đánh giá độ chính xác của
robot khi mơ phỏng
- Thực hiện đúng format của luận văn thạc sỹ, cập nhật lại các chú thích
và tham chiếu tài liệu tham khảo
Ngày…..tháng…..năm 2021
Giáo viên hướng dẫn
Tác giả luận văn
TS. Nguyễn Xuân Hạ
Phạm Văn Hòa
CHỦ TỊCH HỘI ĐỒNG
Mẫu 1c
Lời cảm ơn
Lời đầu tiên em xin gửi tới thầy TS. Nguyễn Xuân Hạ lời biết ơn sâu sắc nhất vì
những chỉ dẫn, đánh giá, định hướng và những chia sẻ kinh nghiệm bổ ích của
thầy, tạo điều kiện để em có thể hồn thành tốt luận văn này.
Bên cạnh đó, phải kể đến sự chỉ dạy tận tình, tâm huyết của các thầy cô đang giảng
dạy tại bộ môn Cơ sở thiết kế máy, tại Viện cơ khí, trường đại học Bách Khoa Hà
Nội. Cảm ơn các bạn sinh viên Đào Xuân Hiếu, Nguyễn Văn Huy, nhờ các bạn,
tôi mới được tiếp cận với những kiến thức mới hết sức bổ ích và những ứng dụng
thực tiễn thú vị. Ngồi ra, cịn có bạn bè, đồng nghiệp ln sẵn sàng đồng hành
giúp đỡ chúng tơi khi khó khăn về học tập và cuộc sống.
Cuối cùng, tôi xin cảm ơn Vợ cùng gia đình đã ln ủng hộ, động viên và tạo điều
kiện cho tơi trong suốt q trình học tập và nghiên cứu vừa qua.
Tóm tắt nội dung luận văn
Robot tự hành là robot có khả năng tự di chuyển bằng bánh xe hoặc bánh xích, có
khả năng tự thực hiện các hành động thông qua hệ thống điều khiển mà không cần
sự tác động của con người. Robot tự hành được ứng dụng rộng rãi trong các lĩnh
vực như công nghiệp, y tế, logitics. Tuy nhiên, để một robot có khả năng tự thiết
lập đường đi đến vị trí mục tiêu hay robot có khả năng tự tránh chướng ngại vật
trên đường đi lại là một thách thức trong q trình nghiên cứu. Chính vì vậy, mục
đích chính của đề tài là nghiên cứu, phát triển công cụ mô phỏng robot di động
trong môi trường Gazebo ứng dụng giải thuật SLAM và URDF để giải quyết bài
toán trên.
Bài luận văn, cơ bản đã dẫn dắt và trình bày đầy đủ các khái niệm liên quan
đến robot tự hành, cơ sở lý thuyết và các công cụ cần thiết để xây dựng, mô phỏng
robot tự hành như lý thuyết về SLAM, giới thiệu hệ điều hành được dùng trên
robot phổ biến hiện nay – hệ điều hành ROS, trình bày khái niệm và cách xây dựng
mô phỏng robot URDF trên hệ điều hành ROS, trình bày và giới thiệu các công cụ
hỗ trợ trong mô phỏng robot như Gazebo và RViz.
Bằng việc ứng dụng công cụ URDF và giải thuật SLAM, bài toán định
hướng của robot tự hành cơ bản đã được giải quyết. Robot có khả năng tự định
hướng, thiết lập đường đi đến vị trí mục tiêu và tránh chướng ngại vật trên quãng
đường di chuyển. Ngoài ra, với sự tích hợp của các loại cảm biến, như cảm biến
Lidar, robot đã vẽ lại bản đồ môi trường làm việc tương đối chính xác.
Tóm lại, trong luận văn này đã trình bày một cách khái quát về giải thuật
SLAM, ứng dụng giải thuật SLAM trong mobile robot. Tác giả đã mơ phỏng thành
cơng mơ hình mobile robot trong việc tái tạo bản đồ, hoạch định đường đi và tránh
chướng ngại vật trong quá trình di chuyển
HỌC VIÊN
Ký và ghi rõ họ tên
MỤC LỤC
DANH MỤC HÌNH VẼ .................................................................................... viii
CHƯƠNG 1. TỔNG QUAN VỀ ROBOT TỰ HÀNH ...................................... 1
1.1
ROBOTICS VÀ ROBOT .......................................................................... 1
1.2
ROBOT TỰ HÀNH THƠNG MINH ........................................................ 1
1.3
1.2.1
Robot tự hành thơng minh .......................................................... 1
1.2.2
Đặc trưng của robot tự hành thông minh .................................... 2
1.2.3
Đặc điểm của robot tự hành thông minh .................................... 2
1.2.4
Phân loại robot tự hành ............................................................... 3
1.2.5
Ứng dụng Robot tự hành thông minh ......................................... 5
Những thách thức trong nghiên cứu Robot tự hành thông minh ............... 7
1.3.1
Điều khiển và khả năng tự điều hướng của Robot ..................... 7
1.3.2
Tích hợp và đồng bộ cảm biến trên robot tự hành ...................... 8
1.3.3
Hệ điều hành robot ...................................................................... 8
1.3.4
Mơ hình hóa và mơ phỏng robot trong môi trường ảo ............... 9
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ................................................................. 12
2.1
2.2
2.3
2.4
Robot Operation System – ROS và ứng dụng trong mô phỏng robot ..... 12
2.1.1
Tổng quan hệ điều hành ROS ................................................... 12
2.1.2
Cấu trúc trong ROS .................................................................. 14
Các bài toán trong mobile robot .............................................................. 19
2.2.1
Bài toán động học ..................................................................... 19
2.2.2
Bài toán động lực học ............................................................... 27
2.2.3
Simulation Localization And Mapping (SLAM)...................... 31
2.2.4
Điều hướng trong robot ............................................................ 34
URDF ....................................................................................................... 41
2.3.1
Khái niệm URDF ...................................................................... 41
2.3.2
Cấu trúc URDF ......................................................................... 42
2.3.3
URDF và SDF ........................................................................... 43
2.3.4
Ví dụ tạo URDF với một chi tiết .............................................. 44
2.3.5
Ví dụ tạo URDF với một cụm chi tiết ...................................... 49
RViz ......................................................................................................... 54
2.4.1
Cài đặt Rviz .............................................................................. 54
2.4.2
Các thành phần trong giao diện Rviz ........................................ 54
2.5
Gazebo...................................................................................................... 57
2.5.1
Các tính chất của Gazebo [6] .................................................... 57
2.5.2
Gazebo và Plugin ...................................................................... 57
CHƯƠNG 3. XÂY DỰNG GĨI CƠNG CỤ MƠ PHỎNG ROBOT AIR-HUST
TRONG GAZEBO ............................................................................................. 59
3.1
3.2
3.3
Giới thiệu robot AIR-HUST .................................................................... 59
3.1.1
Các thành phần cơ khí cấu tạo robot AIR-HUST ..................... 59
3.1.2
Cấu tạo phần cứng robot ........................................................... 60
3.1.3
Phần mềm robot ........................................................................ 61
Mơ hình hóa và mơ phỏng robot .............................................................. 61
3.2.1
Các thành phần cơ khí trong mơ phỏng robot ........................... 62
3.2.2
Xây dựng các gói mơ phỏng robot trong mơi trường gazebo ... 67
3.2.3
Xây dựng chương trình mơ phỏng tự động điều hướng của robot
67
Kết quả và đánh giá .................................................................................. 69
3.3.1
Kết quả ...................................................................................... 69
3.3.2
Đánh giá .................................................................................... 79
CHƯƠNG 4. KẾT LUẬN .................................................................................. 83
4.1
Kết luận về đề tài...................................................................................... 83
4.2
Hướng phát triển đề tài............................................................................. 83
TÀI LIỆU THAM KHẢO ................................................................................. 84
PHỤ LỤC ............................................................................................................ 85
DANH MỤC HÌNH VẼ
Hình 1.1: Robot tự hành Vibot hỗ trợ điều trị bênh nhân Covid-19...................... 2
Hình 1.2: Robot có khả năng tự tìm vị trí sạc pin .................................................. 2
Hình 1.3: Robot Kuka ............................................................................................ 5
Hình 1.4: Ứng dụng robot tự hành thông minh trong sản xuất máy bay Boeing .. 5
Hình 1.5: Robot lau nhà ......................................................................................... 6
Hình 1.6: Robot dịch vụ ......................................................................................... 6
Hình 1.7: Robot tự hành NASA thám hiểm vũ trụ ................................................ 7
Hình 1.8: Mơ phỏng robot trên XDE ................................................................... 10
Hình 1.9: Mơ phỏng robot trên ODE ................................................................... 10
Hình 1.10: Mơ phỏng robot trong Gazebo ........................................................... 10
Hình 1.11: Mơ phỏng robot trên V-Rep .............................................................. 11
Hình 2.1: Sơ đồ truyền tin trong ROS [1] ............................................................ 12
Hình 2.2: Cộng đồng các trung tâm tham gia, đóng góp phát triển ROS trên thế
giới [2].................................................................................................................. 13
Hình 2.3: Các hệ điều hành hỗ trợ ROS [2]......................................................... 13
Hình 2.4: So sánh khối lượng cơng việc phải làm khi dùng và khơng dùng ROS
.............................................................................................................................. 14
Hình 2.5: Cấu trúc file hệ thống ROS [3] ............................................................ 15
Hình 2.6: Sơ đồ ROS computation graph [3] ...................................................... 16
Hình 2.7: Trao đổi thông tin giữa ROS Master và các Node [2] ......................... 16
Hình 2.8: Trao đổi thơng tin giữa các topic [2] ................................................... 17
Hình 2.9: Mơ hình truyền tin trong service [2] .................................................... 18
Hình 2.10: Mơ hình giao tiếp cơ bản trong ROS [3]. .......................................... 18
Hình 2.11: Hệ trục tọa độcủa robot trong mặt phẳng [1]..................................... 20
Hình 2.12: Minh họa về quá trình định vị theo phương pháp xác suất, phân bố xác
suất được biểu diễn ở dạng rời rạc [4] ................................................................. 24
Hình 2.13: Minh họa mơ hình xác suất của phương trình động học [4] .............. 25
Hình 2.14: Mơ hình Odometry mơ tả chuyển động của robot [4] ....................... 25
Hình 2.15: Giải thuật motion_model_odometry [4] ............................................ 26
Hình 2.16: Mơ hình theo Odometry với các thông số thiết lập khác nhau [2] .... 27
Hình 2.17: Mơ hình robot trong mặt phẳng Oxy ................................................. 29
Hình 2.18: Hình ảnh mơ tả giải thuật SLAM xác định tư thế robot [5] .............. 31
Hình 2.19: Kalman filter [5] ................................................................................ 32
Hình 2.20: Scan và TF [6].................................................................................... 34
Hình 2.21: Mơ tả điều hướng [2] ......................................................................... 34
Hình 2.22: Minh họa tư thế của robot [2] ............................................................ 35
Hình 2.23: Dead Reckoning [2] ........................................................................... 36
Hình 2.24: Cấu hình costmap [6] ......................................................................... 37
Hình 2.25: Sơ đồ chức năng của costmap [2] ...................................................... 38
Hình 2.26: Minh họa AMCL trong robot [2] ....................................................... 39
Hình 2.27: Vận tốc của robot trong khơng gian và Dynamic Window [2] .......... 40
Hình 2.28: Quan hệ giữa vận tốc tịnh tiến và vận tốc quay [2] ........................... 40
Hình 2.29: Sơ đồ các thành phần URDF [7] ........................................................ 41
Hình 2.30: Quy tắc bàn tay phải [7] ..................................................................... 42
Hình 2.31: Link [8] .............................................................................................. 42
Hình 2.32: Khớp [8] ............................................................................................. 43
Hình 2.33: Màn hình hiển thị Rviz....................................................................... 54
Hình 2.34: Các cơng cụ trong display của Rviz ................................................... 55
Hình 3.1: Mơ phỏng robot AIR-HUST ................................................................ 59
Hình 3.2: Cấu tạo trong robot AIR-HUST ........................................................... 59
Hình 3.3: Hình dạng bên ngồi robot ................................................................... 60
Hình 3.4: Cấu tạo phần cứng của robot................................................................ 60
Hình 3.5: Đế của robot ......................................................................................... 61
Hình 3.6: Sơ đồ phần mềm của robot AIR-HUST ............................................... 61
Hình 3.7: Mơ hình robot AIR-HUST ................................................................... 62
Hình 3.8: Các thành phần cơ khí của robot .......................................................... 63
Hình 3.9: URDF Export ....................................................................................... 63
Hình 3.10: Xuất file ra URDF .............................................................................. 64
Hình 3.11: Đặt trục tọa độ cho robot ................................................................... 64
Hình 3.12: Export file sang URDF ...................................................................... 65
Hình 3.13: Sơ đồ chương trình điều khiển trong gazebo ..................................... 68
Hình 3.14: Sơ đồ thuật tốn Gmapping với Gazebo ............................................ 68
Hình 3.15: Sơ đồ thuật tốn Navigation với Gazebo ........................................... 69
Hình 3.16: Folder dashgo_gazebo........................................................................ 69
Hình 3.17: TF_Tree của Robot ............................................................................ 71
Hình 3.18: Hình dạng của Robot trong Rviz ....................................................... 71
Hình 3.19: World stage1 ...................................................................................... 72
Hình 3.20: World stage2 ...................................................................................... 72
Hình 3.21: World stage3 ...................................................................................... 73
Hình 3.22: World house ....................................................................................... 73
Hình 3.23: Mơ hình 3D của world house trong Gazebo ...................................... 74
Hình 3.24: Màn hình khởi tạo Rviz ..................................................................... 74
Hình 3.25: Màn hình điều khiển Robot................................................................ 75
Hình 3.26: Tạo bản đồ ......................................................................................... 76
Hình 3.27: Sau khi tạo bản đồ xong..................................................................... 76
Hình 3.28: Pose estimate Robot ........................................................................... 77
Hình 3.29: Path Navigation ................................................................................. 78
Hình 3.30: Robot sau khi đến vị trí mục tiêu ....................................................... 78
CHƯƠNG 1. TỔNG QUAN VỀ ROBOT TỰ HÀNH
1.1 ROBOTICS VÀ ROBOT
Robotics là một ngành kỹ thuật và khoa học liên ngành bao gồm kỹ thuật cơ khí,
kỹ thuật điện tử, kỹ thuật thơng tin, khoa học máy tính và các ngành khác. Robotics
bao gồm thiết kế, xây dựng, vận hành và sử dụng robot, cũng như các hệ thống
máy tính để nhận thức, kiểm soát, phản hồi cảm giác và xử lý thông tin của họ.
Mục tiêu của robot là thiết kế những cỗ máy thơng minh có thể giúp đỡ và hỗ trợ
con người trong cuộc sống hàng ngày và giữ cho mọi người được an toàn.
Ngày nay, robotics được chia ra làm 3 loại chính: robot cơng nghiệp, robot tự hành
và robot con người. Thực tế đã chứng minh, robot cơng nghiệp có khả năng làm
việc với tốc độ cao, chính xác và liên tục làm năng suất lao động tăng nhiều lần.
Chúng có thể làm việc trong các môi trường độc hại như hàn, phun sơn, các nhà
máy hạt nhân, hay lắp ráp các linh kiện điện tử tạo ra điện thoại, máy tính.v.v. Một
cơng việc địi hỏi sự tỉ mỉ, chính xác cao. Tuy nhiên những robot này có một hạn
chế chung đó là hạn chế về không gian làm việc. Không gian làm việc của chúng
bị giới hạn bởi số bậc tự do tay máy và vị trí gắn robot. Robot con người là loại
robot có hình dáng, cử chỉ, hành động như con người, là loại robot di chuyển kiểu
chân. Đặc điểm của robot này là khơng gian làm việc rộng lớn, có thể di chuyển
trên địa hình gồ ghề như cầu thang, đồi núi.v.v. Tuy nhiên, robot con người có cấu
trúc cũng như phương pháp điều khiển phức tạp, chi phí lớn. Robot tự hành là loại
robot có khả năng tự di chuyển bằng bánh xe hoặc bánh xích, khơng gian làm việc
rộng lớn, tuy khơng di chuyển được trên các địa hình gồ ghề như robot con người
nhưng robot tự hành có cấu trúc đơn giản, chi phí thấp. Cho nên robot tự hành
được ứng dụng rộng rãi trong đời sống con người như logitics, xe tự lái, máy hút
bụi, máy lau nhà.v.v.
1.2 ROBOT TỰ HÀNH THƠNG MINH
1.2.1 Robot tự hành thơng minh
Robot tự hành thơng minh là robot có khả năng tự di chuyển bằng bánh xe hoặc
bánh xích, có khả năng tự thực hiện các hành động thông qua hệ thống điều khiển
mà không cần sự tác động của con người. Robot tự hành thông minh được ứng
dụng rộng rãi trong các lĩnh vực như công nghiệp, y tế, logistics.
1
Hình 1.1: Robot tự hành Vibot hỗ trợ điều trị bênh nhân Covid-19
1.2.2 Đặc trưng của robot tự hành thông minh
Robot tự hành thơng minh có các đặc trưng sau:
Có khả năng nhận biết được mơi trường xung quanh
Làm việc trong thời gian dài mà không cần sự can thiệp của con người
Có khả năng tự di chuyển đến vị trí mục tiêu mà khơng cần sự can thiệp của
con người
Có khả năng tự tìm đường, tránh vật cản, chướng ngại vật trong quá trình
di chuyển đến vị trí mục tiêu
1.2.3 Đặc điểm của robot tự hành thơng minh
Khả năng tự bảo trì: Robot tự hành thơng minh có khả năng tự tìm đến
các vị trí sạc và tự kết nối với cổng sạc để thực hiện sạc pin khi pin yếu.
Hình 1.2 mơ tả robot tự hành có khả năng tự tìm đến vị trí sạc khi hết pin
Hình 1.2: Robot có khả năng tự tìm vị trí sạc pin
Cảm nhận được mơi trường xung quanh:
2
Robot tự hành được trang bị các loại cảm biến khác nhau như cảm biến nhiệt độ,
cảm biến khoảng cách, cảm biến siêu âm, cảm biến hóa chất.vv. vì vậy chúng có
khả năng nhận biết được mơi trường xung quanh như vật cản, nhiệt độ, âm thanh.
Khả năng tự động điều hướng:
Điều hướng môi trường indoor. Được trang bị các loại cảm biến, cùng với các thuật
toán, robot tự hành thơng minh có thể tự xác định vị trí của nó trong mơi trường
và vẽ lại bản đồ trong mơi trường đó. Với mơi trường indoor, khơng gian hẹp cùng
với mơi trường ít có sự biến động, vì vậy robot tự hành thơng minh hồn tồn có
khả năng tự động điều hướng đến vị trí đích
Điều hướng trong mơi trường outdoor. Robot tự hành thông minh không những tự
điều hướng được trong mơi trường indoor mà cịn tự điều hướng trong mơi trường
uotdoor. Tuy nhiên, mơi trường uotdoor có nhiều sự biến động như địa hình gồ
ghề, nên việc tự động điều hướng thường được nghiên cứu với môi trường trên
không như máy bay không người lái, hoặc ở những nơi địa hình bằng phẳng như
oto khơng ngời lái.
1.2.4 Phân loại robot tự hành
Robot tự hành được chia làm 2 loại chính đó là loại robot tự hành chuyển động
bằng chân và robot tự hành chuyển động bằng bánh.Ngoài ra một số loại robot
hoạt động trong các môi trường đặc biệt như dưới nước hay trên khơng trung thì
chúng được trang bị cơ cấu di chuyển đặc trưng.
Robot tự hành di chuyển bằng chân (Legged robot)
Ưu điểm lớn nhất của loại robot này là có thể thích nghi và di chuyển trên các địa
hình gồ ghề. Hơn nữa chúng cịn có thể đi qua những vật cản như hố, vết nứt sâu.
Nhược điểm chính của robot loại này chính là chế tạo quá phức tạp. Chân robot là
kết cấu nhiều bậc tự do, đây là nguyên nhân làm tăng trọng lượng của robot đồng
thời giảm tốc độ di chuyển. Các kĩ năng như cầm, nắm hay nâng tải cũng là nguyên
nhân làm giảm độ cứng vững của robot. Robot loại này càng linh hoạt thì chi phí
chế tạo càng cao. Robot tự hành di chuyển bằng chân được mơ phỏng theo các lồi
động vật vì thế mà chúng có loại 1 chân, loại 2,4,6 chân và có thể nhiều hơn. Dưới
đây là một số loại robot điển hình chuyển động bằng chân.
3
b) robot 4 chân
c) robot 6 chân
a) robot 2 chân
Robot tự hành di chuyển bằng bánh (Wheel robot)
Bánh xe là cơ cấu chuyển động được sử dụng rộng rãi nhất trong công nghệ Robot
tự hành. Vấn đề cân bằng thường không phải là vấn đề được chú ý nhiều trong
robot di chuyển bằng bánh. Ba bánh là kết cấu có khả năng duy trì cân bằng nhất,
tuy nhiên kết cấu 2 bánh cũng có thể cân bằng được. Khi robot có số bánh nhiều
hơn 3 thì thơng thường người ta phải thiết kế hệ thống treo để duy trì sự tiếp xúc
của tất cả các bánh xe với mặt đất. Vấn đề của robot loại này là về lực kéo, độ ổn
định và khả năng điều khiển chuyển động
b) Robot 3 bánh
a) Robot 4 bánh
c) Robot 2 bánh truyền động, một bánh lái phía trước
4
1.2.5 Ứng dụng Robot tự hành thông minh
Ứng dụng trong công nghiệp:
Robot tự hành được ứng dụng rộng rãi cơng nghiệp. Như hình 1.3 mơ tả robot tự
hành Kuka sử dụng trong các nhà máy để vận chuyển những tấm dầm có tải trọng
lớn lên đến 11 tấn với độ chính xác minimet
Hình 1.3: Robot Kuka
Hay như hình 1.4, mô tả robot tự hành được sử dụng trong nhà máy sản xuất máy
bay của Boeing để vận chuyển các thiết bị, cấu kiện nặng và cần độ chính xác cao
Hình 1.4: Ứng dụng robot tự hành thơng minh trong sản xuất máy bay Boeing
Ứng dụng trong đời sống, dịch vụ
Ngày nay robot tự hành được ứng dụng rộng rãi trong lĩnh vực đời sống, dịch vụ,
chúng có thể thay thế con người để làm những công việc mang tính lặp đi lặp lại
nhiều lần nhàm chán như robot lau nhà (Hình 1.5), chúng cũng có thể làm những
cơng việc thay thế con người như robot bồi bàn phục vụ trong các quán cafe (Hình
1.6)
5
Hình 1.5: Robot lau nhà
Hình 1.6: Robot dịch vụ
Ứng dụng trong nghiên cứu
Robot tự hành, ngoài khả năng thay thế con người làm những công việc nặng nhọc,
trong môi trường nguy hiểm và phục vụ đời sống dịch vụ con người chúng còn
được ứng dụng trong việc nghiên cứu khoa học, thám hiểm vũ trụ, thám hiểm đáy
biển, những nơi mà con người khó có thể đặt chân đến. Hình 1.7 mơ tả một robot
tự hành của NASA phục vụ cơng việc thám hiểm ngồi vũ trụ
6
Hình 1.7: Robot tự hành NASA thám hiểm vũ trụ
1.3 Những thách thức trong nghiên cứu Robot tự hành thông minh
Mục tiêu của robot tự hành là một robot có khả năng tự di chuyển, tự vận động (có
thể lập trình lại) dưới sự điều khiển tự động để thực hiện tốt những công việc được
giao. Môi trường hoạt động của robot có thể là mặt đất, nước, khơng khí, không
gian hay là sự tổ hợp của các môi trường đó. Các mơ hình robot di động khác nhau
được nghiên cứu theo mơi trường robot chuyển động, ví dụ như xe tự hành trên
mặt đất AGV (Autonomous Guided Vehicles), robot tự hành dưới nước AUV
(Autonomous Underwater Vehicles), robot tự hành trên không UAV (Unmanned
Arial Vehicles) và robot vũ trụ (Space Robot). Những khả năng cần có của một
robot tự hành là dự trữ năng lượng đảm bảo cho robot tự hành trong thời gian yêu
cầu, khả năng phát hiện và nhận biết vật cản, tránh va chạm với các vật thể và khả
năng xử lý, tính tốn các chương trình giải thuật phức tạp trong thời gian thực để
đáp ứng kịp thời với những tác động của môi trường .v.v. Xuất phát từ mục tiêu
trên, việc nghiên cứu Robot tự hành có một số khó khăn, thách thức sau:
Điều khiển và khả năng tự điều hướng trong robot tự hành
Vấn đề tích hợp và đồng bộ các cảm biến trên robot tự hành
Mơ hình hóa và mơ phỏng robot trong môi trường ảo
1.3.1 Điều khiển và khả năng tự điều hướng của Robot
Khả năng định hướng của robot được định nghĩa là sự kết hợp của ba khả năng
- Định vị bản thân – Self –localization
- Lập lộ trình – Path Planning
- Dựng và diễn dịch bản đồ - Map building and interpretation
Self-localization là khả năng robot nhận biết tọa độ và định hướng không gian
(orientation) của mình trong một hệ tọa độ. Path-planning là việc xác định các tọa
7
độ hiện thời và các tọa độ tiếp theo mà robot cần đạt được để đi đến tọa độ mục
tiêu. Map building là công việc nhận diện môi trường qua từng phép đo đạc từ cảm
biến và kết hợp các phép đo này thành một mơ hình trong hệ tọa độ của robot từ
đó làm cơ sở cho việc định vị và lập lộ trình.
Bài tốn định vị và lập bản đồ đồng thời (Simultaneous Localization and Mapping
– SLAM) là một bài tốn đặc biệt ln đi kèm với bài toán định hướng. SLAM
được định nghĩa là việc xây dựng hoặc cập nhật liên tục một bản đồ, đồng thời
định vị vị trí của robot trong bản đồ đó. Trong SLAM, hai tác vụ này không thể
tách rời, khi biết chính xác vị trí của mình thì robot mới có thể đưa các cập nhật
mới vào bản đồ một cách hợp lý. Đồng thời khi bản đồ được cập nhật chính xác,
robot mới có thể đánh giá được sự dịch chuyển của mình so với mơi trường
Trong bài tốn định hướng, robot sẽ phải có khả năng thực hiện SLAM ở nhiều
mức độ. Nếu ta cung cấp cho robot một bản đồ được đo đạc chính xác, robot vẫn
phải sử dụng SLAM tại những vị trí có vật cản chưa biết trước hoặc những vị trí
mà giá trị cảm biến trả về khơng đủ xác định vị trí của robot, ví dụ như tại một
hành lang dài có bối cảnh không thay đổi. Các vấn đề lý thuyết định hướng và
SLAM sẽ được đề cập sâu hơn trong phần sau.
1.3.2 Tích hợp và đồng bộ cảm biến trên robot tự hành
Cảm biến là một thiết bị không thể thiếu trong robot tự hành, vấn đề tích hợp và
đồng bộ các cảm biến cũng là một thách thức trong việc nghiên cứu robot tự hành.
Làm thế nào để kết hợp tất cả các tín hiệu cảm biến đầu vào, của các hãng khác
nhau như cảm biến khoảng cách, cảm biến hình ảnh, cảm biến nhiệt độ….để đồng
bộ, tạo thành một mô hình hoặc hình ảnh duy nhất. Và robot tự hành sẽ làm thế
nào để sử dụng thông tin được cung cấp thông qua phản ứng tổng hợp cảm biến để
hỗ trợ các hành động thông minh hơn
Mỗi loại cảm biến có điểm mạnh và điểm yếu riêng. Radar rất mạnh mẽ trong việc
xác định chính xác khoảng cách và tốc độ - ngay cả trong thử thách điều kiện thời
tiết - nhưng không thể đọc các biển báo đường phố hoặc nhìn thấy màu của đèn
giao thơng. Cảm biến hình ảnh làm rất tốt các dấu hiệu đọc hoặc phân loại các đối
tượng, chẳng hạn như người đi bộ, người đi xe đạp hoặc các phương tiện khác.
Tuy nhiên, chúng có thể dễ dàng bị hạn chế bởi bụi bẩn, nắng, mưa, tuyết hoặc
bóng tối. Các LIDAR có thể phát hiện chính xác các đối tượng, nhưng có hạn chế
là khơng xác định được chính xác đối tượng có vật liệu trong suốt như gương, kính.
Vì vậy việc tích hợp và đồng bộ các loại cảm biến này với nhau thơng qua các
thuật tốn, phần mềm để cung cấp một hình ảnh mơi trường tồn diện nhất và chính
xác nhất cho robot. Từ đó, robot sẽ hoạt động hiệu quả và chính xác hơn
1.3.3 Hệ điều hành robot
Một vấn đề có ý nghĩa vơ cùng to lớn và quan trọng khi nghiên cứu robot tự hành
là hệ điều hành. Ngày nay với sự phát triển của công nghệ thông tin, có rất nhiều
hệ điều hành trên thị trường. Việc nghiên cứu, lựa chọn hệ điều hành robot hết sức
quan trọng, đặc biệt khi thương mại hóa. Hệ điều hành phải đảm bảo dễ sử dụng,
có cộng đồng sử dụng rộng lớn, mang tính tồn cầu để có thể hỗ trợ lẫn nhau. Và
8
ROS (Robot Operating System) là hệ điều hành được ưa chuộng số một hiện nay
được sử dụng trong robot tự hành.
ROS đã đạt được rất nhiều thành tựu. Kể từ khi thành lập, hơn 600 người đã viết
hơn 2000 gói phần mềm và hiện tại vẫn được duy trì. Gần 80 loại robot thương
mại đã sử dụng hệ điều hành ROS và hàng ngàn bài báo nghiên cứu [6]
ROS bao gồm bộ trình điều khiển đa dạng, cho phép người dùng đọc dữ liệu từ
các cảm biến, điều khiển cơ cấu chấp hành. Một số lượng lớn các thuật toán xây
dựng bản đồ, điều hướng robot, thu thập dữ liệu và hoạch định đường đi. ROS
cũng có một cộng đồng rộng rãi các nhà nghiên cứu robot
1.3.4 Mơ hình hóa và mô phỏng robot trong môi trường ảo
Trong lĩnh vực nghiên cứu và phát triển robot, việc mơ hình hóa và mơ phỏng
robot là hết sức cần thiết. Mơ hình hóa và mơ phỏng robot giúp ta tiết kiệm chi phí
về thời gian và tiền bạc. Mơ hình hóa và mô phỏng robot càng chi tiết càng giúp
ta đánh giá tính chính xác và độ ổn định của robot so với thực tế. Việc mơ hình
hóa và mơ phỏng robot có thể là xây dựng mới mơ hình, hoặc cũng có thể là dựa
trên những mơ hình robot đã có sẵn để chỉnh sửa, thêm dữ liệu đầu vào, hoặc thêm
các yếu tố tác động để từ đó đánh giá độ hoạt động ổn định của robot.
Ngày nay, với sự phát triển của cơng nghệ thơng tin, có rất nhiều công cụ hỗ trợ
việc mô phỏng robot trong môi trường ảo. Có thể liệt kê một số cơng cụ như sau:
- Gazebo: Là công cụ mô phỏng robot đa dạng, nó là mã nguồn mở và được phát
triển bởi Open-Source Robotics Foundation. Gazebo là công cụ chủ yếu để mô
phỏng mobile robot, dùng trên hệ điều hành ROS và rất được ưa chuộng tại Mỹ
- ARGoS: Là công cụ mô phỏng robot đa dạng, có thể mơ phỏng tính chất, hình
dạng vật lý của robot, và có thể mơ phỏng năng lượng tiêu hao của robot trong quá
trình hoạt động. Tuy nhiên ARGoS khơng phải là mã nguồn mở. Nó được phát
triển bởi dự án Swarmanoid. Chủ yếu được dùng ở thị trường Bỉ và Italy
- ODE: (Open Dynamics Engine): Là công cụ mô phỏng mã nguồn mở. Giống
như Gazebo, ODE chủ u mơ phỏng tính chất động học của robot, được dùng chủ
yếu ở Pháp
- Bullet: Bullet cũng là một cơng cụ mơ phỏng mã nguồn mở, có thế mạnh mơ
phỏng về đồ họa, vì vậy tương thích với máy tính cấu hình cao.
- V-Rep: Là phần mềm mơ phỏng robot được phát triển bởi Coppelia Robotics.
Giống như Gazebo, ODE hay Bullet, V-Rep hỗ trợ mơ phỏng tính chất động học
như hình dáng, tính chất vật lý của robot, sử dụng trong mobile robot, human robot
hay thiết kế kết cấu cơ khí.
- Webots: là cơng cụ mơ phỏng, hỗ trợ và phát triển mơ hình cũng như các chương
trình giành cho robot. Nó được phát triển bởi Cyberbotics Ltd.
- XDE: là công cụ phần mềm hỗ trợ mô phỏng tồn diện về cấu trúc, mơ hình động
học, động lục học của robot được phát triển bởi CEA LIST. Sản phẩm chủ yếu
được phân phối và sử dụng tại Pháp.
9
Dưới đây là một số hình ảnh mơ phỏng robot trong mơi trường ảo của các cơng cụ
trên
Hình 1.8: Mơ phỏng robot trên XDE Hình 1.9: Mơ phỏng robot trên ODE
Hình 1.10: Mơ phỏng robot trong Gazebo
10
Hình 1.11: Mơ phỏng robot trên V-Rep
Qua đây ta thấy ý nghĩa và tầm quan trọng của việc mơ hình hóa và mơ phỏng
robot. Việc nghiên cứu mơ phỏng robot trong môi trường ảo là hết sức cần thiết và
mang tính cấp bách. Do đó, đề tài trong bài luận văn này tập chung phát triển công
cụ mô phỏng robot di động trong môi trường Gazebo ứng dựng giải thuật SLAM
và URDF
Kết luận chương I
Trong chương này tác giả đã trình bày được các đặc điểm cơ bản của robot tự
hành, ý nghĩa và phạm vi ứng dụng của robot tự hành trong cuộc sống, cũng như
tính cấp thiết của đề tài.
11
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 Robot Operation System – ROS và ứng dụng trong mô phỏng robot
Phần này mô tả tổng quan về hệ điều hành ROS, các khái niệm, thành phần trong
ROS cũng như ý nghĩa và tầm quan trọng của ROS trong việc mô phỏng robot
2.1.1 Tổng quan hệ điều hành ROS
ROS là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng trên robot. Về cơ
bản, ROS cũng có những khả năng cần thiết cho một hệ điều hành cơ bản như khả
năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu giữa các tác
vụ bằng thông điệp và quản lý dữ liệu. Bên cạnh đó, để có thể ứng dụng trong lĩnh
vực robotics, ROS đã phát triển các khái niệm, thư viện và công cụ chuyên biệt
dành cho việc thu thập dữ liệu, xử lý, hiển thị và điều khiển. Ngồi ra, ROS cịn
có thể tương tác và kết hợp với nhiều framework khác như player (một software
tool cho robot và các ứng dụng về cảm biến), Orocos (điều khiển thơng minh trong
robot và tự động hóa), Carmen (Robot Navigation Toolkit), Orca (các đối tượng
cho robot) [7].
ROS có nhiều khái niệm dựa trên graph, biểu diễn mối quan hệ giữa các thành
phần trong hệ điều hành như stack, package, node, topic, message, service, cũng
như các khái niệm hệ tọa độ và phép chuyển đổi hệ tọa độ.
Về khía cạnh trao đổi dữ liệu và giao tiếp, ROS có tích hợp sẵn một vài chuẩn 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 trữ dữ liệu trên Parameter Server. Như hình 2.1 mơ tả sơ đồ truyền
tin trong ROS
Hình 2.1: Sơ đồ truyền tin trong ROS [1]
ROS cũng được sử dụng rộng rãi trong các trường đại học và có rất nhiều đóng
góp. ROS có một cộng đồng rộng lớn, có rất nhiều dự án được hỗ trợ, có một môi
trường hệ thống thân thiện với hệ thống phát triển robot khác.
12
Hình 2.2: Cộng đồng các trung tâm tham gia, đóng góp phát triển ROS trên thế
giới [2]
ROS hồn tồn tương thích với hệ điều hành Linux, mà cụ thể ở đây là hệ điều
hành Ubuntu. Tuy nhiên, ROS cũng được phát triển để tương thích với một số hệ
điều hành khác như ARM, Debian, Gentoo, Mac OSX, Android, Window và Open
Embeded
Hình 2.3: Các hệ điều hành hỗ trợ ROS [2]
Ưu điểm của ROS
Xây dựng ứng dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các công
việc lập trình, thiết lập hệ thống, tận dụng nguồn tài nguyên mã nguồn mở vô cùng
phong phú của cộng đồng.
Ta có thể so sánh khối lượng cơng việc kỹ thuật cơ bản (required engineering) và
khối lượng nghiên cứu khoa học nòng cốt (Core Research) như sau:
13
Hình 2.4: So sánh khối lượng cơng việc phải làm khi dùng và khơng dùng ROS
Từ đó, ta thấy rằng, với sự hiệu quả từ ROS, thời gian dành cho các công việc kỹ
thuật cơ bản sẽ được giảm xuống rất đáng kể, và do đó, tăng thời gian cho công
việc nghiên cứu chuyên sâu, hàm lượng khoa học đạt được trong đề tài sẽ lớn hơn
nhiều lần.
Một số đặc điểm giúp cho ROS trở thành một hệ điều hành nên được sử dụng khi
nghiên cứu phát triển một ứng dụng robot là:
- ROS là hệ điều hành mã nguồn mở
- Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ, phong phú
- Vấn đề cốt lõi nhất khiến ROS trở lên mạnh mẽ đó là tính cộng đồng rất lớn.
Nguồn tài ngun được cộng đồng đóng góp hầu như được xây dựng, phát triển từ
những viện nghiên cứu và đại học hàng đầu thế giới
2.1.2 Cấu trúc trong ROS
ROS có 3 cấp khái niệm: Filesystem, Computation Graph và Community. Ngồi
ra ROS cịn có một số khái niệm cấp cao đặc trưng cho các ứng dụng robot như hệ
tọa độ, phép chuyển đổi, thông điệp mô tả.
2.1.2.1. File ROS system
Filesystem là nguồn tài nguyên source code ROS được lưu trữ trên bộ nhớ hệ
thống, nó bao gồm các khái niệm:
14
Hình 2.5: Cấu trúc file hệ thống ROS [3]
Package: Gói ứng dụng là đơn vị cơ bản trong tổ chức phần mềm của ROS, một
gói chứa source code cho một tác vụ thực thi một chức năng đặc thù, danh mục
các mã nguồn kế thừa (dependency, là các filesystem ngang cấp được đơn vị này
dựa trên), các file cấu hình (như file CMakeList.txt chứa các lệnh hướng dẫn biên
dịch, yêu cầu tạo file thực thi .bin; hay chọn version cho các thư viện) [3].
MetaPackage: Metapackage là một nhóm bao gồm nhiều các package. Ví dụ như
trong ROS có một metapackage được gọi là navigation trong việc điều hướng robot
tự hành. Nó lưu giữ thơng tin các package và hỗ trợ trong việc cài đặt [3].
Manifest: là bảng kê khai thông tin mô tả một packages (manifest.xml), cung cấp
các cơ sở dữ liệu về package đó, bao gồm điều kiện thực thi (license) và các
dependency của package đó. Ngồi ra, manifests cịn chứa những thơng tin về đặc
trưng của ngơn ngữ lập trình như cờ báo (flags) của trình biên dịch [3].
Message (.msg): thông tin mô tả message, được lưu trữ trong file có dạng
my_package/msg/MyMessageType.msg, định nghĩa các cấu trúc dữ liệu của
messages được gửi trong ROS [3].
Service (.srv): thông tin mô tả các services, được lưu trữ trong
my_package/srv/MyServiceType.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 [3]
2.1.2.2. ROS Computation Graph
Computation Graph, tạm gọi là lược đồ tính toán, là mạng peer-to-peer các tác vụ
khi thực thi của ROS, trong đó các dữ liệu được trao đổi và xử lý giữa các node.
Các khái niệm cơ bản của computation graph của ROS là các node, Master,
Parameter Sever, Message, Service, topics và bags [2].
15
Hình 2.6: Sơ đồ ROS computation graph [3]
Node: là đơn vị thực hiện một tác vụ tính tốn, điều khiển. Một node có thể được
khởi tạo khi biên dịch thành cơng một package và có thể được khởi tạo nhiều node
từ cùng một package. Một hệ thống điều khiển thường bao gồm nhiều node. Ví dụ
một node điều khiển động cơ, một node thực hiện tác vụ định vị, một node vẽ quỹ
đạo đường đi [3].
Master: ROS Master cung cấp tên đăng ký và tra cứu đến phần còn lại của
Computation Graph. Nếu khơng có Master, các nodes sẽ khơng tìm thấy nhau để
trao đổi thơng tin hay gọi services [3].
Hình 2.7: Trao đổi thơng tin giữa ROS Master và các Node [2]
Message: các nodes giao tiếp với nhau thông qua các messages. Một message
trong computation graph là dữ liệu cụ thể có cấu trúc như trong khai báo của file
.msg tương ứng. Các kiểu dữ liệu chuẩn như integer, floating, point, Boolean… và
mảng (array) với kiểu chuẩn đều được hỗ trợ. Bên cạnh đó, message cũng có thể
bao gồm các cấu trúc và các mảng lồng nhau như cấu trúc trong ngôn ngữ C. Các
node khi nhận Message cần phải xác định kiểu đệm để xử lý dữ liệu nhận được
[2].
Topic: Messages được định tuyến thông qua một hệ thống vận chuyển (transport
system), trong đó phân loại thành hai cơng việc chính: publish (đăng tin) và
16
subcribe (đăng ký nhận tin). Một node gửi đi một message bằng việc đưa thông tin
tới một topic (chủ đề). Một topic có tên và kiểu message xác định. Một node chỉ
subscribe đến đúng topic có tên và kiểu dữ liệu như đã khai báo. Một topic có thể
có nhiều đối tượng đưa tin (publishers) và cũng có thể có nhiều đối tượng đăng ký
nhận tin (subcribers). Mỗi node cũng có thể truyền tin trên nhiều topic khác nhau,
cũng như có thể nhận tin từ nhiều topic khác nhau. Các nguồn truyền tin và các
đối tượng nhận tin nhìn chung không cần phải biết về sự tồn tại của nhau. Ý tưởng
xây dựng ROS ở đây là tách biệt nguồn tạo ra thông tin với bộ phận sử dụng thông
tin đó. Topic được xem như là một kênh truyền các thơng điệp được định kiểu.
Mỗi kênh truyền này có một tên riêng, và node nào cũng có thể kết nối với kênh
này để gửi/nhận thông điệp, miễn là thông điệp cùng kiểu với topic đó [2].
Hình 2.8: Trao đổi thơng tin giữa các topic [2]
Service: Mơ hình truyền thơng theo mẫu publish/subcribe như trình bày ở trên là
một mơ hình rất linh hoạt, tuy vậy, đặc điểm của nó là thông tin được truyền đa
đối tượng, một chiều (many-to-many, one-way) đôi khi lại không phù hợp với các
trường hợp cần tương tác theo kiểu request/reply (yêu cầu/đáp ứng), kiểu tương
tác này thường gặp trong các hệ thống phân phối. Do vậy, cần có thêm một thành
phần nữa trong ROS Graph, đó là service, nhằm thực hiện được các yêu cầu tương
tác theo kiểu request/reply. Service là một cặp cấu trúc thông điệp, một thông điệp
để gửi yêu cầu và một thông điệp dành cho đáp ứng. Một node cung ứng một
service với một thuộc tính name, một client sử dụng service đó bằng cách gửi đi
một thơng điệp u cầu (request message) rồi đợi phản hồi. Trong thư viện client
của ROS, phương thức tương tác này thường được cung cấp như một hàm được
gọi từ xa [2]
17