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à
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG
LUẬN VĂN TỐT NGHIỆP
TRIỂN KHAI THUẬT TOÁN ĐỊNH HƯỚNG TRÊN ROS
CHO ROBOT TỰ HÀNH TRONG NHÀ
STUDENT : Nguyễn Phạm Nhất Thiên Minh 40901569
Thành phố Hồ Chí Minh, tháng 12, 2013
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự do – Hạnh phúc
Thành phố Hồ Chí Minh o0o
KHOA: ĐIỆN-ĐIỆN TỬ NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP BỘ MÔN: ĐIỀU KHIỂN TỰ ĐỘNG HỌ VÀ TÊN: NGUYỄN PHẠM NHẤT THIÊN MINH MSSV: 40901569 HOÀNG VIỆT HÀ MSSV: 40900700 NGÀNH: ĐIỀU KHIỂN TỰ ĐỘNG LỚP: DD09KSTD Đầu đề luận văn: Triển khai thuật toán định hướng trên ROS cho robot tự hành trong nhà 1- Nhiệm vụ (yêu cầu về nội dung và số liệu ban đầu)
2- Ngày giao nhiệm vụ luận án:
3- Ngày hoàn thành nhiệm vụ:
4- Họ tên người hướng dẫn Phần hướng dẫn
Nội dung và yêu cầu LVTN đã được thông qua bộ môn Ngày ……tháng 12 năm 2013 Chủ nhiệm bộ môn Người hướng dẫn chính (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên) PHẦN DÀNH CHO KHOA, BỘ MÔN Người duyệt (Chấm sơ bộ):
Đơn vị:
Ngày bảo vệ:
Điểm tổng kết:
Nơi lưu trữ luận văn:
Trang 3BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG o0o
Ngày…… tháng …… năm………
PHIẾU CHẤM ĐIỂM BẢO VỆ LVTN (Dành cho người hướng dẫn) 1- Họ và tên sinh viên: NGUYỄN PHẠM NHẤT THIÊN MINH MSSV: 40901569 HOÀNG VIỆT HÀ MSSV: 40900700 Chuyên ngành: Điều khiển tự động 2- Đề tài luận văn: Triển khai thuật toán định hướng trên ROS cho robot tự hành trong nhà 3- Họ tên người hướng dẫn: Th.S HUỲNH VĂN KIỂM 4- Tổng quát về bản thuyết minh: Số trang: Số chương:
Số bảng số liệu: Số hình vẽ:
Số tài liệu tham khảo: Phần mềm tính toán:
Sản phẩm:
5- Tổng quát về các bản vẽ: Số bản vẽ: bản A1 bản A2 Khổ khác:
Số bản vẽ tay: Số bản vẽ máy tính:
6- Những ưu điểm chính của luận văn tốt nghiệp:
7- Những khuyết điểm chính của luận văn tốt nghiệp:
8- Đề nghị: Được bảo vệ : □ Bổ sung thêm để bảo vệ: □ Không được bảo vệ: □ 9- Ba câu hỏi sinh viên phải trả lời trước hội đồng: a
b
c
10- Đánh giá chung (bằng chữ: giỏi, khá, trung bình): Điểm: /10
Ký tên (ghi rõ họ tên)
Trang 4BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG o0o
Ngày…… tháng …… năm………
PHIẾU CHẤM ĐIỂM BẢO VỆ LVTN (Dành cho người phản biện) 11- Họ và tên sinh viên: NGUYỄN PHẠM NHẤT THIÊN MINH MSSV: 40901569 HOÀNG VIỆT HÀ MSSV: 40900700 Chuyên ngành: Điều khiển tự động 12- Đề tài luận văn: Triển khai thuật toán định hướng trên ROS cho robot tự hành trong nhà 13- Họ tên người phản biện:
14- Tổng quát về bản thuyết minh: Số trang: Số chương:
Số bảng số liệu: Số hình vẽ:
Số tài liệu tham khảo: Phần mềm tính toán:
Sản phẩm:
15- Tổng quát về các bản vẽ: Số bản vẽ: bản A1 bản A2 Khổ khác:
Số bản vẽ tay: Số bản vẽ máy tính:
16- Những ưu điểm chính của luận văn tốt nghiệp:
17- Những khuyết điểm chính của luận văn tốt nghiệp:
18- Đề nghị: Được bảo vệ : □ Bổ sung thêm để bảo vệ: □ Không được bảo vệ: □ 19- Ba câu hỏi sinh viên phải trả lời trước hội đồng: a
b
c
20- Đánh giá chung (bằng chữ: giỏi, khá, trung bình): Điểm: /10
Ký tên (ghi rõ họ tên)
Trang 5
Trang 6
Trang 7
Lời đầu tiên chúng tôi xin gửi tới thầy Thạc sĩ Huỳnh Văn Kiểm 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ừ đồ án tới luận văn, tạo điều kiện để chúng tôi có thể hoà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 điều khiển tự động, tại khoa Điện-Điện tử, trường đại học Bách Khoa thành phố Hồ Chí Minh Nhờ các thầy cô, chúng 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ị Ngoài ra, còn có bạn bè luôn 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, đặc biệt là các thành viên và ban chủ nhiệm câu lạc bộ nghiên cứu khoa học Pay It Forward Nhân đây, xin gửi đến thầy cô và các bạn lời cảm ơn chân thành nhất
Cuối cùng, chúng tôi xin cảm ơn Cha Mẹ cùng gia đình đã luôn đứng về phía chúng tôi, truyền dạy, động viên và tạo điều kiện cho chúng tôi trong suốt quá trình học tập và nghiên cứu vừa qua
Tp Hồ Chí Minh, ngày 18 tháng 12 năm 2013
Nguyễn Phạm Nhất Thiên Minh
Hoàng Việt Hà
Trang 8Hệ điều hành robot – Robot Operation System là một nền tảng mã nguồn mở dành cho việc
thiết kế phần mềm robot Tiền thân của ROS được phát triển đầu tiên bởi Phòng thí nghiệm Trí tuệ Nhân tạo của Đại học Stanford vào năm 2007 Kể từ năm 2008, ROS được phát triển và mở rộng tại phòng nghiên cứu Willow Garage cùng một mạng lưới liên kết nhiều viện nghiên cứu lớn trên thế giới Willow Garage hiện là đơn vị duy trì các thư viện mã nguồn mở rất phổ biến là OpenCV và Point Cloud Library, chính vì vậy, ROS được tích hợp đầy đủ các thư viện trên cùng với vô số các công cụ và chương trình ứng dụng robot được đóng góp xây dựng bởi cộng đồng đông đảo các nhà nghiên cứu từ khắp nơi trên thế giới, giúp cho việc thử nghiệm, chia sẻ các thuật toán trở nên dễ dàng hơn Trong thời gian ngắn kể từ khi xuất hiện, ROS đã phát triển nhanh chóng và trở thành một công cụ phổ biến, chuẩn mực được sử dụng rộng rãi bởi các đơn vị nghiên cứu và chế tạo robot
Định hướng cho robot di động là một vấn đề có nhiều ứng dụng to lớn và liên quan tới
nhiều lĩnh vực Đây cũng là một hướng ứng dụng trọng tâm của ROS Trong phạm vi luận văn, bài toán định hướng được nghiên cứu trên một robot tự hành trong nhà ứng dụng các lý thuyết và
công cụ tiên tiến được phát triển trên nền tảng ROS Bằng việc ứng dụng thành công ROS, robot
đã có khả năng tự định vị trong một môi trường gồm các đặc điểm biết trước đồng thời phản ứng thích hợp với các vật cản chưa biết để tìm đường đi đến một vị trí đích đã chọn Từ tính năng cơ bản này, trong tương lai, ta có thể khai thác sâu hơn các tính năng của ROS, tích hợp các kỹ thuật định vị tiên tiến giúp cho robot có thể di chuyển chính xác hơn, phạm vi hoạt động rộng nhằm phục vụ cho các ứng dụng trong đời sống
Trang 9TÓM TẮT LUẬN VĂN ii
MỤC LỤC iii
DANH MỤC HÌNH ẢNH v
DANH MỤC BẢNG vii
CHƯƠNG I – TỔNG QUAN VỀ ĐỊNH HƯỚNG CHO ROBOT DI ĐỘNG 1
1.1 Định hướng cho robot tự hành 1
1.2 Mục tiêu luận văn và phương pháp thực hiện 2
1.3 Sơ lược về nội dung luận văn 2
CHƯƠNG II – CƠ SỞ LÝ THUYẾT ĐỊNH HƯỚNG ROBOT 4
2.1 Ước lượng tọa độ từ encoder 4
2.2 Chuyển động học xác suất và phương pháp định vị Monte Carlo thích nghi 8
CHƯƠNG III – CÁC THÀNH PHẦN CHÍNH CỦA ROBOT TỰ HÀNH TRONG NHÀ 20
3.1 Hệ điều hành robot – ROS 20
3.1.1 Tổng quan về hệ điều hành robot- Robot Operating System 20
3.1.2 Cấu Trúc ROS 23
3.1.3 ROS Navigation Stack 36
3.2 Camera khoảng cách Kinect 42
3.2.1 Công nghệ và đặc tính 42
3.2.2 Package driver và điều khiển cho Kinect 46
3.3 Mobile base và Điều khiển 48
3.3.1 Thiết kế mô hình di động 48
3.3.2 Thiết kế chương trình nhúng 52
CHƯƠNG IV – LẬP TRÌNH TÍCH HỢP NAVIGATION STACK TRÊN MÔ HÌNH ROBOT 56
4.1 Serial Server cho Mobile Base 56
4.2 Transform Broadcaster. 60
4.3 Dựng Static Map 63
Trang 105.3 Kết luận 76
5.4 Hướng phát triển 77
Tài liệu tham khảo 78
Phụ lục 1 – HƯỚNG DẪN LẬP TRÌNH ROS TRÊN IDE ECLIPSE 79
Phụ lục 2 – TẠO LAUNCH FILE CHO NODE DEPTHIMAGE_TO_LASERSCAN 84
Trang 11Hình 2.1: Mô hình robot lái bằng hiệu vận tốc 5
Hình 2.2: Minh họa về quá trình định vị theo phương pháp xác suất 10
Hình 2.3: Minh họa mô hình xác suất của phương trình động học 11
Hình 2.4: Mô hình odometry mô tả chuyển động của robot trong khoảng thời gian (t-1,t] 12
Hình 2.5: Mô hình theo odometry với các thiết lập thông số nhiễu khác nhau 13
Hình 2.6: Phân bố xác suất của biến ngẫu nhiên a, phương sai b, kì vọng bằng 0 14
Hình 2.7: Ví dụ lấy mẫu ngẫu nhiên theo mô hình odometry 16
Hình 2.8: Mô hình xác suất của phép đo từ cảm biến khoảng cách chùm tia 16
Hình 2.9: Minh họa trường hợp kidnapping 18
Hình 3.1: Các robot ứng dụng thành công ROS PR2, Kobuki, Jaguar, Turtlebot 21
Hình 3.2: Cộng đồng các trung tâm tham gia đóng góp phát triển cho ROS trên thế giới 21
Hình 3.3: So sánh khối lượng công việc phải làm khi dùng và không dùng ROS 22
Hình 3.4: Mối quan hệ giữa Stack và các package 24
Hình 3.5: Ví dụ về quan hệ giữa Stack, Package và các file mô tả theo dạng thư mục 24
Hình 3.6: Mô tả cơ chế quản lý parameter trên Master 26
Hình 3.7: Mô tả hoạt động của service 27
Hình 3.8: Mô hình giao tiếp cơ bản trong ROS 28
Hình 3.9: ROS Repository vaa repository trong toàn tài nguyên ROS 28
Hình 3.10: Các hệ tọa độ gắn với các phần tử chuyển động trên robot 29
Hình 3.11: Các hệ tọa độ của robot và chuyển động trong không gian 30
Hình 3.12: Giao tiếp giữa action client và server 30
Hình 3.13: Mô hình robot được mô tả bằng URDF 32
Hình 3.14: Remapping topic 34
Hình 3.15: Computation Graph của Navigation Stack 36
Hình 3.16: Costmap function 39
Hình 3.17: Recovery Behavior của move_base 42
Hình 3.18: Kinect 42
Hình 3.19: Những thành phần chính của Kinect 43
Hình 3.20: Vùng nhìn thấy của camera khoảng cách trên Kinect 44
Hình 3.21: Hình ảnh thực tế từ Kinect trên mobile base 45
Hình 3.22: Khoảng cách từ tâm mobile base tới vật cản 45
Hình 3.23: Kinect adaptor, connector và supply cable 46
Hình 3.24: Ứng dụng của openni_launch trong ccny_rgbd 47
Hình 3.25: Logo của point cloud 48
Hình 3.26: Sơ đồ chi tiết mạch điều khiển mobile base 49
Trang 12Hình 3.29: Picture robot 51
Hình 3.30: Giải thuật điều khiển trên vi điều khiển 51
Hình 3.31: Sơ đồ chức năng các ngoại vi trên MCU 52
Hình 3.32: Sơ đồ khối của Timer điều khiển nâng cao của STM32F4 54
Hình 3.33: Giản đồ xung giải mã quadrature encoder của Encoder Interface trên STM32F4 55
Hình 3.34: Khối XOR ngõ vào giúp tăng đôi tần số encoder và các ngõ ra PWM giúp điều khiển đảo chiều động cơ 55
Hình 4.1: Ví dụ về hai hệ tọa độ trên robot 60
Hình 4.2: Giá trị của điểm trong hệ tọa độ cảm biến, cây tọa độ đơn giản và giá trị chuyển đổi trong hệ tọa độ của mobile base 61
Hình 4.3: Sơ đồ cây các hệ tọa độ chính của robot tự hành 61
Hình 4.4: Laser scan 2D trích từ point cloud 3D 63
Hình 4.5: Một số bản đồ 2D đƣợc dựng bằng slam_gmapping 2D 64
Hình 4.6: Static map đƣợc đo vẽ 64
Hình 4.7: 3D map và hình chiếu 2D 66
Hình 5.1: Khu vực thử nghiệm 67
Hình 5.2: Khu vực khảo sát khả năng lập lộ trình và tránh vật cản của robot 68
Hình 5.3: Chọn tọa độ đích cho robot 69
Hình 5.4: robot di chuyển tránh vật cản 69
Hình 5.5: Quá trình mapping và path-planning của robot 71
Hình 5.6: Robot ở tọa độ đích 72
Hình 5.7: Quá trình di chuyển của robot 74
Hình 5.8: Lộ trình ƣớc lƣợng của robot khi đi đến một điểm và trở về 75
Trang 13Bảng 2.1: Giải thuật motion_model_odommetry 13 Bảng 2.2: Giải thuật prob_normal_distribution và giải thuật prob_triangular_distribution 14 Bảng 2.3: Giải thuật sample_motion_model_odometry 15 Bảng 2.4: Giải thuật sample_normal_distribution và giải thuật sample_triangular_distribution 15 Bảng 2.5: Giải thuật beam_range_finder_model 17 Bảng 2.6: Giải thuật Augm ented_MCL 18
Trang 14CHƯƠNG I – TỔNG QUAN VỀ ĐỊNH HƯỚNG CHO ROBOT DI ĐỘNG
1.1 Định hướng cho robot tự hành
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 với theo môi trường trong đó 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 toá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 Trong
đó khả năng định hướng của robot tự hành là vấn đề quan trọng nhất Khả năng định hướng được định nghĩa là kết hợp của ba khả năng:
1 Định vị bản thân – Self-localization
2 Lập lộ trình – Path-planning
3 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 độ 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 toán định vị và lập bản đồ đồng thời (Simultaneous Localization and Mapping –
SLAM) là một bài toán đặc biệt luôn đ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
Trang 15Trong bài toá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 chương sau
1.2 Mục tiêu luận văn và phương pháp thực hiện
Mục tiêu luận văn:
Thiết kế một robot di động, sử dụng cảm biến khoảng cách Kinect và các cảm biến khác cùng với thuật toán định hướng trên ROS để xây dựng bản đồ có đặc tính bằng phẳng và tự di chuyển trong bản đồ đó tới một vị trí đặt trước, đồng thời xử lý tránh vật cản chưa biết Với mục đích phát triển sâu xa là trở thành một robot cá nhân có thể thực hiện nhiều tác vụ nhằm giảm tải công việc cho con người như quét dọn, hút bụi, chuyển đồ,… trong phạm vi nhà ở hoặc trong các văn phòng, bệnh viện
Phương pháp thực hiện
Triển khai thuật toán định hướng trên ROS và các ứng dụng ROS hỗ trợ việc định hướng cho robot tự hành trong nhà với sự hỗ trợ thu thập dữ liệu từ Kinect (thu thập dữ liệu và vẽ bản đồ cho robot định hướng cho) và các cảm biến khác như encoder, cảm biến gia tốc góc (IMU)… để robot tự thực hiện được các chức năng như mong đợi
1.3 Sơ lược về nội dung luận văn
Nội dung luận văn bao gồm 5 chương và 1 phụ lục
Chương 1: Tổng quan về định hướng cho robot di động: Giới thiệu sơ lược về bài
toán định hướng cho robot di động, mục tiêu luận văn và phương pháp thực hiện
Chương 2: Cơ sở lý thuyết định hướng robot: Lý thuyết về ước lượng tọa độ cho
robot, giải bài toán ước lượng từ tín hiệu encoder thu về Sơ lược về mô hình chuyển động xác suất học của robot và phương pháp định vị Monte Carlo thích nghi
Chương 3: Các thành phần chính của robot tự hành trong nhà: Tổng quan về hệ
điều hành robot ROS, camera khoảng cách Kinect Cấu tạo robot trong luận văn, và chương trình nhúng điều khiển động cơ trên Kit STM32F4 Discovery
Trang 16 Chương 4: Lập trình tích hợp Navigation Stack trên mô hình robot: Thiết kế, thao
tác các node đặc thù hỗ trợ cho Navigation Stack cho mô hình robot trong đề tài
Chương 5: Thực nghiệm và đánh giá: Trình bày các kết quả đạt được trong quá
trình thực nghiệm, đánh giá sai số và đề ra phương hướng cải thiện phát triển
Phụ lục 1: Cách tạo 1 package mới trong ROS và sử dụng Môi trường Phát triển Tích hợp (Intergrated Development Environment – IDE) để lập trình cho ROS
Phụ lục 2: Cách tạo file launch cho depthimage_to_laserscan
Trang 17CHƯƠNG II – CƠ SỞ LÝ THUYẾT ĐỊNH HƯỚNG ROBOT
Trở về với bài toán định hướng, để thực hiện việc định vị cho robot, Navigation Stack sử
dụng phương pháp định vị Monte Carlo thích nghi trong package amcl (adaptive Monte Carlo
localization), phương pháp này sử dụng giá trị đo đạc khoảng cách từ cảm biến để xác định môi
trường xung quanh robot trên một mặt phẳng, so sánh giá trị này với một bản đồ 2D cho trước và ước lượng tọa độ thích hợp có lân cận trên bản đồ phù hợp với giá trị đo này Trong một số trường hợp khi việc ước lượng cho ra giá trị không hội tụ, như khi robot di chuyển trong một khu vực rộng hơn tầm đo của cảm biến khoảng cách, navigation stack sẽ sử dụng tọa độ ước lượng từ các phương pháp khác để định hướng cho robot tiếp tục di chuyển cho đến khi gặp được một lân cận quen thuộc Phần dưới đây trình bày phương pháp ước lượng tọa độ từ encoder được sử dụng
trong luận văn và lý thuyết cùa phương pháp định vị Monte Carlo thích nghi
Ước lượng tọa độ của robot từ giá trị hồi tiếp từ encoder
Robot tự hành trong luận văn được thiết kế theo mô hình robot lái bằng hiệu tốc độ (differential steered drive) Giả sử robot chuyển động không trượt, ta sẽ ước lượng tọa độ của
robot dựa vào giá trị hồi tiếp từ encoder Trong hệ tọa độ , robot chuyển động với vận tốc tịnh tiến là và vận tốc xoay ω Trong khoảng thời gian rất bé , và ω không đổi, chuyển động
của robot là chuyển động tròn quanh tâm quay tức thời với bán kính r
Trang 18Tại đầu khoảng thời gian , tọa độ tâm của robot trong hệ tọa độ gồm bộ ba [ ],
tại điểm này ta có tọa độ của tâm :
( )
( )
Hình 2.1: Mô hình robot lái bằng hiệu vận tốc
Sau khoảng thời gian góc thay đổi một lượng , tọa độ mới của sau là
[
], sử dụng lại phương trình và để tìm quan hệ giữa và điểm này, ta có quan hệ
giữa tọa độ mới và tọa độ cũ:
[
ω
𝑂
𝜃 𝜋 /
Trang 19Ta sẽ tìm quan hệ giữa các đại lượng , , với giá trị thu được từ encoder và thay vào phương trình trên Sử dụng quan hệ giữa vận tốc dài và vận tốc góc của một vật thể trong chuyển động tròn, ta có các phương trình sau:
( )
( )
Trong đó:
vận tốc dài quanh trục bánh phải
vận tốc dài quanh trục bánh trái
khoảng cách giữa 2 bánh xe
bán kính quay tức thời
ω vận tốc quay của robot
Lấy phương trình trừ phương trình vế theo vế ta được quan hệ giữa vận tốc của hai bánh và vận tốc góc:
Lấy phương trình cộng phương trình vế theo vế, ta có:
Thay từ vào phương trình trên ta có quan hệ giữa vận tốc tịnh tiến và vận tốc hai bánh:
Ta suy ra được bán kính quay tức thời của robot từ các phương trình và
Trang 20
Thay và vào phương trình và với và là độ dài mỗi bánh dịch chuyển được trong thời gian Thay lại và trong các biểu thức này vào phương trình Ta có:
[
Phương trình trên cho ta quan hệ chính xác của giữa chuyển động của hai bánh với tọa độ của robot Ta có thể xây dựng giải thuật xấp xỉ phương trình trên để cập nhật tọa độ của robot với đầu vào ở mỗi thời điểm cập nhật là và , là số đếm tăng thêm từ encoder của mỗi bánh, và tọa độ , , cuối chu kỳ trước Khi đó ta gán giá trị và vào vị trí của và trong phương trình
Ngoài ra ta còn có thể xấp xỉ phương trình và giảm đáng kể khối lượng tính toán nếu việc cập nhật tọa độ được thực hiện trên hệ nhúng
Ta có:
[ ] [ ]
]
Nếu như chuyển động xoay của robot rất nhỏ, ta có thể xấp xỉ các phương trình trên trở thành dạng đơn giản
[ ] [ ]
[
]
Trang 21Phương trình xấp xỉ trên cũng là của phương trình gốc khi , ứng với việc robot chỉ di chuyển tịnh tiến theo phương có hệ số góc
Để điều khiển robot, ta có có quan hệ giữa , với và như sau:
2.2 Chuyển động học xác suất và phương pháp định vị Monte Carlo thích nghi
Trong phần 2.1, mặc dù ta có được mô tả toán học chính xác chuyển động của robot nhưng biểu thức chứa các đại lương vi phân chỉ có thể xấp xỉ bằng các phương pháp tính Đồng thời giá trị trả về từ encoder lại cho ta giá trị rời rạc, cho nên tọa độ ước lượng vẫn hàm chứa một
số sai số qua mỗi bước lặp và sai số sẽ tích lũy dần dần và càng ngày tọa độ ước lượng được càng
có độ tin cậy thấp hơn
Trong mọi trường hợp, đối với một một robot cụ thể được thiết kế theo một mô hình toán học cho trước nào đó, ta có thể suy ra được quỹ đạo, vị trí của robot từ mô hình của nó Tuy nhiên, một vấn đế tất yếu đó là ta không bao giờ tìm được mô hình chính xác của robot, mà chỉ có thể tìm được một họ các mô hình có các hệ số trong phạm vi chính xác nhất định Ngoài ra, khi hoạt động, tác động của môi trường, đo lường, hao mòn lại làm xuất hiện sai số và kết quả điều khiển không đúng như mô hình Do đó cần phải quan tâm đến các yếu tố không chắn chắn này Trong mô hình động học xác suất, một trong những định lý quan trọng nhất của xác suất học đó là định lý Bayes Định lý Bayes cho phép tính xác suất của một biến ngẫu nhiên , khi biết
sự kiện liên quan , đã xảy ra Trong phương pháp định vị Monte Carlo thích nghi, là tọa độ của robot và , là giá trị đo được từ cảm biến và thông tin bản đồ đã biết Giả sử ta biết trước trong một hành lang có ba cửa phòng và robot đang ở một vị trí bất kì trong hành lang Robot có trang bị một cảm biến và có thể cho ta một biến ngẫu nhiên z cho biết robot đang ở cạnh một cánh cửa với xác suất của z phân bố theo hàm Gauss Tại thời điểm đầu tiên, robot không biết được nó
đang ở đâu trong đoạn hành lang Hàm cảm tính của robot có dạng phân bố đều trên toàn
bộ chiều dài của hành lang như đồ thị đầu tiên trong hình 2.2 Khi khởi động hành trình, cảm biến trên robot cho tín hiệu robot đang ở cạnh một cánh cừa Phân bố xác suất , là xác suất để
Trang 22tập trung quanh vị trí các cánh cửa Tại thời điểm đó, của robot sẽ có dạng tương tự như
Nói cách khác gần đúng, robot biết rằng nó đang ở gần một trong ba cánh cửa trong hành lang Đồ thị thứ hai và thứ ba trong hình minh họa hai phân bố xác suất và tại thời điểm này Khi robot di chuyển một đoạn so với vị trí mà nó vừa cảm nhận được cánh cửa, dựa vào odometry của mình, robot sẽ dự đoán vị trí hiện thời, do đó cũng dịch chuyển theo hướng di chuyển Tuy nhiên do odometry có sự không chắc chắn nên đỉnh tại các vùng xác suất cao cũng thấp dần như đồ thị thứ tư trong hình 2.2 Tiếp theo khi cảm biến cho ta một phép đo
mới của z Cảm tính của robot sẽ có phân bố lớn xung quanh vị trí cánh cửa thứ hai và phân bố ở
các khu vực khác đều giảm mạnh như trong đồ thị thứ sáu Từ sự chắc chắn cao tại cánh cửa hiện tại, trong khoảng từ đó đến cánh cửa kế tiếp, cảm tính của robot dựa vào odometry vẫn cho vị trí thực tế có giá trị cao mặc dù có giảm và sẽ được bổ sung lại khi robot đến được cánh cửa thứ 3
Trang 23Hình 2.2: 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
Trang 24Ta thử khảo sát trường hợp khi chưa có thông tin về bản đồ , tọa độ ước lượng của robot
có dạng một phân bố xác suất hậu nghiệm - posterior probability Xác suất hậu nghiệm của một
biến ngẫu nhiên là xác suất có điều kiện mà nó nhận được khi một bằng chứng có liên quan được xét đến Phân bố xác suất hậu nghiệm của một biến ngẫu nhiên khi cho trước giá trị của một biến khác có thể được tính theo Định lý Bayes Ta biểu diễn phương trình động học xác suất của robot dưới dạng một hàm phân bố như sau:
, Với và là trạng thái của robot tại thời điểm và , là giá trị điều khiển tại thời điểm
Phương trình này mô tả hàm phân bố xác suất hậu nghiệm, với điều kiện ràng buộc phụ thuộc vào trạng thái động học của robot, cần xét khả năng robot đạt trạng thái với điều kiện giá trị điều khiển là và biết robot đang ở trạng thái
Trong ứng dụng cụ thể, có thể được xác định nhờ odometry, tuy nhiên khi phân tích lý thuyết, ta sẽ xem như là giá trị điều khiển
Hình 2.3: Minh họa mô hình xác suất của phương trình động học
Ta giả sử trong quá trình di chuyển tịnh tiến trên một quãng đường, sẽ xảy ra hiện tượng trượt hoặc có sự chênh lệch nhất thời vận tốc trên hai bánh, robot sẽ có một phân bố xác suất vị trí
ở cuối quãng đường, đám mây minh họa phân bố này dày ở các điểm gần đường thẳng và thưa dần ra xung quanh, biểu thị độ chắc chắn trong một lân cận gần điểm cuối lý tưởng Hình thứ hai minh họa độ chắc chắn trong một quãng đường phức tạp hơn Ta thấy độ chắc chắn này phân bố trải đều hơn
Trang 25Với mô hình odometry, ta sử dụng các số liệu chuyển động tương đối của robot Trong
khoảng thời gian , robot chuyển từ trạng thái sang Thông qua odometry ta nhận được sự di chuyển của robot từ ̅ ̅ ̅ ̅ sang ̅ ̅ ̅ ̅ Trên hình 2.4, đường thẳng màu đen là thể hiện cho kết quả đo lường odometry trong hệ trục tọa độ gắn liền với robot (chưa biết toạ độ tương đối của hệ trục tọa gắn với robot so với hệ trục tọa độ cố định) Yếu tố quan trọng nhất trong bài toán ước lượng trạng thái là xác định sự sai biệt giữa 2 vị trí ̅ và ̅(được gọi là “vi sai” vị trí), giá trị sai biệt này dùng để ước lượng cho khoảng cách thực và
Hình 2.4: Mô hình odometry mô tả chuyển động của robot trong khoảng thời gian (t-1,t] Được xấp xỉ với chuyển động quay δ r o t1 , chuyển động tịnh tiến δ tr a ns ,
và chuyển động quay δ r o t2 Các chuyển động quay và tịnh tiến này bị ảnh hưởng
bởi nhiễu
Giải thuật trình bày trong bảng 2.1 được dùng để tính giá trị của , với giá trị ngõ vào là trạng thái của robot tại thời điểm là và trạng thái tiếp theo Chuyển động của robot được diễn tả bởi với ( ̅ ̅ ) Chuyển động được tách 3 bước liên tiếp: 1 chuyển động quay, 1 chuyển động thẳng và 1 chuyển động quay nữa Hình 2.5 miêu tả sự khai triển này: chuyển động quay đầu tiên được gọi là , chuyển động tịnh tiến và chuyển động quay thứ hai Mỗi cặp vị trí ̅ ̅ (chuyển động từ ̅ tới ̅ ) được diễn tả bằng vector thông số duy nhất và những thông số
Trang 26này đủ để thiết lập quan hệ tương đối giữa ̅ và ̅ Mô hình chuyển động khảo sát ở đây xét trong trường hợp ba thông số trên sẽ bị sai do các loại nhiễu độc lập
Bảng 2.1: Giải thuật motion_model_odommetry
Hình 2.5: Mô hình theo odometry với các thiết lập thông số nhiễu khác nhau
Bước 2 đến bước 4 trong giải thuật cho phép tìm được thông số của chuyển động tương đối
từ các giá trị odometry thu được, thông qua bài toán động học ngược Bước 5 đến bước 7 tính các thông số chuyển động tương đối ̂ ̂ ̂ Bước 8 đến bước 10 tính xác suất sai số cho các thông số chuyển động Hàm phân phối xác suất
prob(x,b) diễn tả cho sai số của chuyển động, hàm này tính giá trị xác suất xảy ra trạng thái x tuân
theo quy luật phân phối với giá trị kì vọng (tham số vị trí, hay cũng chính là giá trị trung bình)
bằng 0 (zero-centered) và phương sai b Bảng 2.2 trình bày hai giải thuật có thể ứng dụng để tính
1: Giải thuật motion_model_odometry(𝑥𝑡,𝑢𝑡, 𝑥𝑡
Trang 27hàm phân phối này, với biến sai số lần lượt tính theo hàm phân phối chuẩn (phân phối Gaussian) và hàm phân phối tam giác Lưu ý khi dùng phép tính này là tập xác định của giá trị vi sai góc là khoảng [ Do đó kết quả của ̂ phải được chọn lọc lại cẩn thận Cuối cùng, bước 11 trả về xác suất sai số tổng hợp bằng cách nhân các xác suất sai số riêng lẻ , và 3 Hệ số từ đến 4 là các thông số đặc trưng cho nhiễu trong chuyển động của robot
Bảng 2.2: Giải thuật prob_normal_distribution và gi ải thuật
prob_triangular_distribution
Hình 2.6: Phân bố xác suất của biến ngẫu nhiên a, phương sai b, kì vọng bằng 0 Particle Filter
Một khái niệm quan trọng cần giới thiệu trong mô hình động học xác suất đó là trong tính
toán thực tiễn, ta sẽ sử dụng kỹ thuật particle filter để mô phỏng các phân bố xác suất liên tục Kỹ
thuật particle filter còn được gọi là phương pháp Monte Carlo Ý tưởng chính của particle filter là
ta sẽ đại diện một phân bố xác suất hậu nghiệm bởi một bộ các mẫu ngẫu nhiên rút ra từ
1: Giải thuật prob_normal_distribution(a,b):
𝜋𝑏𝑒 12
𝑎2 𝑏
3: Giải thuật prob_triangular_distribution(a,b):
Trang 28phân bố này Trong các bộ particle filter, các mẫu của một phân bố xác suất hậu nghiệm được gọi
là các particle và được biểu thị như sau:
̅ [ , [ , , [ với là số mẫu trong bộ ̅xác suất hậu nghiệm , liên tục theo giải thuật bảng 2.3, ta có thể diễn đạt đơn giản là ̅ Ta ứng dụng kỹ thuật particle filter để tìm giải thuật lấy mẫu ngẫu nhiên từ phân phối , theo mô hình odometry như sau :
Bảng 2.3: Giải thuật sample_motion_model_odometry
Giải thuật lấy mẫu ngẫu nhiên theo quy luật phân phối chuẩn (xấp xỉ) và tam giác với kỳ vọng bằng 0 và phương sai b
Bảng 2.4: Giải thuật sample_normal_distribution và gi ải thuật
Trang 29Hình 2.7: Ví dụ lấy mẫu ngẫu nhiên theo mô hình odometry, sử dụng cùng các
thông số như bảng 2.3 Mỗi trường hợp lấy 500 mẫu
Mô hình xác suất của phép đo
Mô hình xác suất của một phép đo, biểu thị bằng , , là xác suất có được một phép
đo khi biết trước bản đồ và tọa độ của robot Đối với đa số cảm biến được ứng dụng cho robot tự
hành trong nhà, khoảng cách có thể được đo dọc theo một chùm tia vật lý (ví dụ như tia sáng hoặc
tia siêu âm), ta có thể biểu thị { , , } với là giá trị đo thu được từ một chùm tia Ngoài ra, do trong mô hình, ta bắt đầu xét tới bản đồ nên ta cũng biểu thị { , , } với có một giá trị biểu thị mức độ chắc chắn một điểm có bị chiếm chỗ trong không gian Ta sẽ quan tâm tới việc đi tìm mô hình xác suất của loại cảm biến khoảng cách bằng chùm tia
Hình 2.8: Mô hình xác suất của phép đo từ cảm biến khoảng cách chùm tia
Trang 30Trong hình 2.8, mô hình xác suất của một chùm tia tại tọa độ trong được mô tả với các thành phần , , , Giả sử là khoảng cách thực từ cảm biến tới vật thể, ta có
là phép đo chính xác với các nhiễu đo lường xung quanh , là nhiễu do các vật thể không biết trước, là nhiễu cảm biến bị bão hòa và là nhiễu phân bố đều trên toàn tầm
đo Mô hình xác suất tổng quát của phép đo là tích của cả bốn thành phần này
Giải thuật beam_range_finder_model sau cho ta khả năng (likelihood) của một phép đo , khi biết tọa độ và bản đồ
Bảng 2.5: Giải thuật beam_range_finder_model
Vòng lặp ngoài cùng từ hàng 2 - 7 nhân tất cả khả năng của các chùm cảm biến áp dụng xấp xỉ , = ∏ ( | , ) Hàng 5 sử dụng mô hình xác suất của từng chùm tia để tìm khả năng của từng phép đo Các thông số , , , là đặc trưng của từng thành phần trong mô hình xác suất của ( | , ) với điều kiện + + = 1
Phương pháp định vị Monte Carlo thích nghi – Adaptive Monte Carlo Localization
Phương pháp định vị Monte Carlo (MCL) là một giải thuật ước lượng tọa độ của robot từ cả
thông tin odometry, cảm biến, bản đồ Tính từ thích nghi trong phương pháp trên đề cập tới một
biến thể của MCL Bảng 2.6 trình bày đồng thời giải thuật MCL và biến thể của nó có màu đò Phần biến thể của MCL được áp dụng trên dự đoán với cảm biến [ để khắc phục trường hợp kidnapping như minh họa trên hình 2.9
1: Giải thuật beam_range_finder_model (𝑧𝑡, 𝑥𝑡, 𝑚
Trang 31Hình 2.9: Minh họa trường hợp kidnapping - tại thời điểm thứ hai khi robot dự
đoán những vị trí ở cả bốn góc của hành lang
Bảng 2.6: Giải thuật Augm ented_MCL
1: Giải thuật Augmented_MCL (χ𝑡 , 𝑢𝑡, 𝑧𝑡, 𝑚
Trang 32Trong giải thuật MCL ở trên, sample_motion_model và measurement_model có thể là các
mô hình chuyển động xác suất từ odometry và cảm biến nhƣ bảng 2.3 và bảng 2.5 đã khảo sát Hàng số 4 trong giải thuật MCL sẽ lấy mẫu từ mô hình chuyển động sử dụng các mẫu để đại diện cảm tính của robot Sau đó phép đo từ cảm biến sẽ đƣợc áp dụng vào dòng 5 để xác định trọng số
của mẫu Cảm tính ban đầu của robot có thể đƣợc giả sử bằng một phân bố đều trên toàn không gian với trọng số ban đầu bằng nhau là Các thông số , và đƣợc chọn với yêu cầu
Trang 33CHƯƠNG III – CÁC THÀNH PHẦN CHÍNH CỦA ROBOT TỰ HÀNH
TRONG NHÀ
3.1 Hệ điều hành robot – ROS
3.1.1 Tổng quan về hệ điều hành robot- Robot Operating System
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…Ngoà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)…
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
Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường phát hành dưới dạng ROS Distribution, tương tự Linux Distribution, cung cấp những bộ phần mềm ổn định để người dùng sử dụng và phát triển thêm
ROS là một hệ điều hành mã nguồn mở, cho nên thu hút được sự quan tâm và đóng góp của cộng đồng trên khắp thế giới để xây dựng phát triển các dự án robotics, các công cụ và thư viện kèm theo Có rất nhiều mô hình robot đã được xây dựng thành công với hệ điều hành ROS này
Trang 34Hình 3.1: Các robot ứng dụng thành công ROS PR2 (Personal Robot), Kobuki, Jaguar, Turtlebot
Hiện nay ROS chỉ chạy trên hệ điều hành Ubuntu và Mac OS X Cộng đồng ROS đang thử nghiệm hỗ trợ cho các nền tảng khác nhƣ Windows, ARM Linux, Fedora và Gentoo
Hình 3.2: Cộng đồng các trung tâm tham gia đóng góp phát triển cho ROS trên
thế giới
Trang 35 Ư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:
Hình 3.3: 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 đủ
- Vấn đề cốt lõi nhất khiến ROS trở nên mạnh mẽ đó là tính cộng đồng rất lớn Nguồn tài nguyên đượ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à những trường đại học hàng đầu trên thế giới
Những tài nguyên được cung cấp từ ROS thể hiện được sức mạnh trong các lĩnh vực robotics như là:
Trang 36ROS có 3 cấp khái niệm: Filesystem, Computation Graph và Community
Ngoà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ả…
ROS Filesystem Level
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:
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)…
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 đó Ngoà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
Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức năng cụ thể Stack
còn mô tả cách thức biên dịch ROS và thông tin về phiên bản ROS tương thích (gọi là distro, ví
dụ như các phiên bản ROS hydro, groovy hay fuerte) Ví dụ pcl_ros là một stack chứa các
package có chức năng cung cấp các bộ lọc cho point cloud như bọc lọc PassThrough (giới hạn point cloud theo các chiều x, y, z), VoxelGrid (lượng tử hóa point cloud thành các ô 3 chiều), Inlier/Outlier (tìm các điểm trong/ngoài một mặt theo các thông số của mặt đó trong point cloud)
Trang 37Hình 3.4: Mối quan hệ giữa Stack và các packages
Stack Manifests (.xml): cung cấp mô tả cơ sở dữ liệu về một stack, bao gồm điều kiện cho
phép (license) và thông tin về các stack dependency khác
Dependency: là mô tả trong manifest của một package hay stack về các file system ngang
cấp (stack hoặc package khác) mà stack hay package kế thừa
Hình 3.5: Ví dụ về quan hệ giữa Stack, Package và các file mô tả theo dạng thư
mục
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 Ví dụ ta có mô tả của message PointCloud2 được mô tả trong file sensor_msgs/PointCloud2.msg như sau:
Stack
Package 1 trong Stack
Package 2 trong Stack
Trang 38# Message này chứa một tập hợp các điểm N-chiều cùng với các thông tin như
# binary và cách sắp xếp các kênh được lưu trong mảng "fields"
# Dữ liệu của point cloud có thể cấu trúc kiểu 2D (giống image) hay 1D
# (không cấu trúc) Point clouds 2d image có thể được tạo ra từ các cảm biến như Kinect hay stereo camera.
# Header chứa thông tin về hệ tọa độ của các điểm và time stamp của dữ liệu
Header header
# Cấu trúc 2D of the point cloud Nếu point cloud không theo cấu trúc 2D+1,
# height = 1 và width là số điểm của point cloud.
uint32 height
uint32 width
# Mô tả các kênh RGBXYZ và cách sắp xếp của chúng trong khối dữ liệu binary
PointField[] fields
# có kích thước bằng row_step * height bool is_dense # Có giá trị true nếu point cloud có điểm không hợp lệ
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
Launch (.launch): là các file launch dùng để khởi tạo một tập hợp các node cùng lúc, đồng
thời gán giá trị cho các parameter và gán các topic liên kết các node bằng lệnh roslaunch trong
Command Terminal của Linux
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
Node: là đơn vị thực hiện một tác vụ tính toá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
Trang 39Master: 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
Parameter Server: là một phần của Master, cho phép dữ liệu được lưu trữ trong một vị trí
trung tâm và cho phép các node truy cứu tới
Hình 3.6: Mô tả cơ chế quản lý parameter trên Master
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 queue đệm để xử lý dữ
liệu nhận được
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à 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
Trang 40nhì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
đó
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 yê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
Hình 3.7: Mô tả hoạt động của service
Bag: là một định dạng để lưu trữ và phát lại dữ liệu từ ROS messages Bags là một cơ chế
quan trọng để lưu trữ dữ liệu