1. Trang chủ
  2. » Luận Văn - Báo Cáo

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à

97 2,2K 28
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 97
Dung lượng 3,48 MB

Nội dung

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 1

TRƯỜ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 2

TRƯỜ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 3

BỘ 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 4

BỘ 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 8

Hệ đ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 9

TÓ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 10

5.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 11

Hì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 12

Hì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 13

Bả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 14

CHƯƠ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 15

Trong 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 17

CHƯƠ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 18

Tạ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 19

Ta 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 21

Phươ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 22

tậ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 23

Hì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 24

Ta 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 25

Vớ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 26

nà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 27

hà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 28

phâ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 29

Hì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 30

Trong 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 31

Hì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 32

Trong 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 33

CHƯƠ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 34

Hì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 36

ROS 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 37

Hì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 39

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

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 40

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

đó

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

Ngày đăng: 09/11/2014, 11:40

HÌNH ẢNH LIÊN QUAN

Hình 2.2: Minh họa về quá trình định vị theo phương pháp xác suất, phân bố - 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à
Hình 2.2 Minh họa về quá trình định vị theo phương pháp xác suất, phân bố (Trang 23)
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 - 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à
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 (Trang 35)
Hình 3.6: Mô tả cơ chế quản lý parameter trên Master. - 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à
Hình 3.6 Mô tả cơ chế quản lý parameter trên Master (Trang 39)
Hình 3.10: Các hệ tọa độ gắn với các phần tử chuyển động trên robot - 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à
Hình 3.10 Các hệ tọa độ gắn với các phần tử chuyển động trên robot (Trang 42)
Hình 3.12: Giao tiếp giữa action client và server - 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à
Hình 3.12 Giao tiếp giữa action client và server (Trang 43)
Hình 3.13: Mô hình robot đƣợc mô tả bằng URDF - 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à
Hình 3.13 Mô hình robot đƣợc mô tả bằng URDF (Trang 45)
Hình 3.15: Computation Graph của Navigation Stack - 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à
Hình 3.15 Computation Graph của Navigation Stack (Trang 49)
Hình 3.16:  Costmap function - 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à
Hình 3.16 Costmap function (Trang 52)
Hình 3.17: Recovery Behavior của move_base - 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à
Hình 3.17 Recovery Behavior của move_base (Trang 55)
Hình 3.19: Những thành phần chính của Kinect - 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à
Hình 3.19 Những thành phần chính của Kinect (Trang 56)
Hình 3.20: Vùng nhìn thấy của camera khoảng cách Kinect. - 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à
Hình 3.20 Vùng nhìn thấy của camera khoảng cách Kinect (Trang 57)
Hình 3.23: Kinect adaptor, connector và supply cable  3.2.2.  Package driver và điều khiển cho Kinect - 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à
Hình 3.23 Kinect adaptor, connector và supply cable 3.2.2. Package driver và điều khiển cho Kinect (Trang 59)
Hình 3.24: Ứng dụng của openni_launch trong ccny_rgbd tìm visual_odometry - 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à
Hình 3.24 Ứng dụng của openni_launch trong ccny_rgbd tìm visual_odometry (Trang 60)
Hình 3.26: Sơ đồ chi tiết mạch điều khiển mobile base - 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à
Hình 3.26 Sơ đồ chi tiết mạch điều khiển mobile base (Trang 62)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w