Thông báo

Tất cả đồ án đều đã qua kiểm duyệt kỹ của chính Thầy/ Cô chuyên ngành kỹ thuật để xứng đáng là một trong những website đồ án thuộc khối ngành kỹ thuật uy tín & chất lượng.

Đảm bảo hoàn tiền 100% và huỷ đồ án khỏi hệ thống với những đồ án kém chất lượng.

LUẬN VĂN TỐT NGHIỆP Xác định đường đi của robot dùng Kinect trên nền tảng Robot Operating System

mã tài liệu 301000100087
nguồn huongdandoan.com
đánh giá 5.0
mô tả 300 MB Bao gồm file thuyết minh ,...... và nhiều tài liệu liên quan kèm theo đồ án này
giá 300,000 VNĐ
đồ án ngưng giao dịch

NỘI DUNG ĐỒ ÁN

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

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

Xác định đường đi của robot dùng Kinect trên nền tảng Robot Operating System

LI CẢM ƠN

LUẬN VĂN TỐT NGHIỆP  Xác định đường đi của robot dùng Kinect trên nền tảng Robot Operating System

Tôi xin gởi đến thầy ................. lời biết ơn sâu sắc vì đã dành thời gian quý báu để hướng dẫn, tạo điều kiện thuận lợi cũng như cho tôi những lời khuyên bổ ích để hoàn thành luận văn này.

Trong suốt thời gian học tập tại trường đại học Bách Khoa – ĐHQG Tp. HCM, tôi đã được các Thầy Cô khoa Điện – Điện tử, và đặc biệt là các Thầy Cô bộ môn Điều khiển tự động giảng dạy tận tình, cho tôi nhiều kiến thức mới bổ ích, bên cạnh đó tôi cũng được các bạn bè cùng khóa, cùng lớp đóng góp nhiều ý kiến cũng như các tài liệu có giá trị. Xin gởi đến các Thầy Cô và các bạn lời cảm ơn chân thành nhất.

Cuối cùng, tôi xin cảm ơn Cha Mẹ và các anh chị em trong gia đình đã động viên và tạo điều kiện giúp tôi vượt qua những khó khăn trong suốt quá trình học tập và nghiên cứu vừa qua.

 

TÓM TẮT LUẬN VĂN

ROS – Robot Operating System là một kiến trúc hệ điều hành mã nguồn mở, được thiết kế ban đầu tại Đại học Stanford, hiện nay được phát triển và mở rộng bởi Willow Garage. ROS cung cấp một nền tảng giúp cho việc nghiên cứu và phát triển robot được dễ dàng, thuận tiện hơn, cả trong học thuật và trong công nghiệp. ROS được xây dựng theo kiến trúc mở, các nhà khoa học, kỹ sư có thể chia sẻ, mở rộng, tích hợp nhiều thư viện, hệ thống khác nhau. Việc sử dụng hệ điều ROS giúp cho việc thử nghiệm các ý tưởng, thuật toán được dễ dàng, nhanh chóng hơn. Đặc biệt, ROS được xây dựng nền tảng riêng biệt theo hướng các ứng dụng robot có tính tương tác với người cao, phục vụ cho cuộc sống thường ngày của con người. Các hướng ứng dụng của ROS được mở rộng theo hướng định vị, xây dựng bản đồ, xử lý, nhận dạng ảnh, âm thanh,…

Mục tiêu của đề tài là nghiên cứu về kiến trúc hệ điều hành ROS, phương thức hoạt động, giao tiếp dữ liệu, phương pháp xây dựng ứng dụng trên ROS. Ứng dụng cụ thể của đề tài là xác định đường đi của robot trong môi trường in-door sử dụng camera RGB-D Kinect. Bài toán xác định đường đi của robot là một trong các bài toán cơ bản của hướng phát triển robot tự hành.


 

MC LỤC

 

LỜI CẢM ƠN ................................................................................................. 2

TÓM TẮT LUẬN VĂN .................................................................................. 3

MỤC LỤC ....................................................................................................... 4

DANH SÁCH HÌNH ẢNH.............................................................................. 6

DANH SÁCH BẢNG BIỂU ............................................................................ 9

CHƯƠNG 1     TỔNG QUAN ........................................................................ 10

1.1    Mục tiêu ............................................................................................. 10

1.2    Giới thiệu tổng quan ........................................................................... 10

CHƯƠNG 2     CƠ SỞ LÝ THUYẾT ............................................................ 13

2.1    Hệ điều hành ROS – Robot Operating System .................................... 13

2.1.1    Giới thiệu tổng quan hệ điều hành ROS........................................ 13

2.1.2    Mô hình ROS ............................................................................... 18

2.1.3    Lớp ứng dụng: Higher-level Concepts .......................................... 29

2.1.4    Thư viện Client ............................................................................ 32

2.1.5    Các vấn đề về trao đổi dữ liệu giữa các thành phần trong ROS..... 32

2.2    Chuyển động của robot theo phương pháp xác suất............................. 36

2.2.1    Giới thiệu ..................................................................................... 36

2.2.2    Tổng quan .................................................................................... 37

2.2.3    Mô hình vận tốc ........................................................................... 41

2.2.4    Mô hình odometry ........................................................................ 50

CHƯƠNG 3     MÔ HÌNH THỰC NGHIỆM ................................................ 58

3.1    RGB-D camera ................................................................................... 58

3.2    Ước lượng toạ độ 3D từ ảnh RGB và ảnh Depth ................................. 59

3.3    Sơ đồ giải thuật ................................................................................... 60

3.4    Mô hình robot ..................................................................................... 62

CHƯƠNG 4     KẾT QUẢ .............................................................................. 64

4.1    Xây dựng ảnh 3D từ hai ảnh RGB và ảnh Depth: ................................ 64

4.2    Đánh giá sai số khi cho robot chuyển động theo các quỹ đạo khác nhau

66

4.3    Xây dựng bản đồ 3D ........................................................................... 69

CHƯƠNG 5     KẾT LUẬN............................................................................ 75

5.1    Kết luận .............................................................................................. 75

5.2    Hướng phát triển đề tài ....................................................................... 75

TÀI LIỆU THAM KHẢO ............................................................................ 76

PHỤ LỤC ...................................................................................................... 78


 

DANH SÁCH HÌNH ẢNH

Hình 1.1 Mô hình hệ robot thông minh theo [INT1] .................................................. 11

Hình 1.2 Sơ đồ mô tả kiến trúc bộ điều khiển robot thông minh theo 3 tầng (theo

[INT1]) ...................................................................................................................... 12

Hình 2.1 Một hệ robot được xây dựng trên ROS ....................................................... 13

Hình 2.2 So sánh khối lượng khoa học giữa việc sử dụng ROS hay không dùng. ...... 14

Hình 2.3 Những mặt mạnh của ROS ......................................................................... 15

Hình 2.4 Phân bố cộng đồng đóng góp mã nguồn mở ROS trên thế giới ................... 16

Hình 2.5 Mã nguồn ROS phát triển qua các năm ....................................................... 17

Hình 2.6 Một số robot được thực hiện với ROS ........................................................ 17

Hình 2.7 Mô tả Parameter ......................................................................................... 19

Hình 2.8 Quan hệ giữa action – topic ........................................................................ 20

Hình 2.9 Mô tả phương thức hoạt động của service ................................................... 21

Hình 2.10 Sơ đồ mô tả phương thức tổ chức trong ROS ............................................ 22

Hình 2.11 Mô hình giao tiếp cơ bản trong ROS......................................................... 22

Hình 2.12 Giao tiếp giữa các nodes ........................................................................... 23

Hình 2.13 Sơ đồ mô tả phương thức tổ chức ROS: repository với stack và các thành phần khác của ROS.................................................................................................... 25

Hình 2.14 ROS universe và repository ...................................................................... 25

Hình 2.15 Mô tả phương thức hoạt dộng server – client ............................................ 30

Hình 2.16 Tổng quan về lớp ứng dụng ...................................................................... 31

Hình 2.17 Ví dụ sơ đồ trao đổi dữ liệu trong ROS ..................................................... 35

Hình 2.18 Vị trí của robot trong hệ toạ độ tổng quát.................................................. 38

Hình 2.19 Ví dụ mô tả mô hình xác suất của phương trình động học ......................... 39

Hình 2.20 Biểu diễn mô hình vận tốc với các hệ số đặc trưng nhiễu khác nhau ......... 42

Hình 2.21 Ví dụ áp dụng thuật toán lấy mẫu cho mô hình vận tốc, các thông số như

hình 3.3. Mỗi sơ đồ lấy 500 mẫu. ............................................................................... 45

Hình 2.22 Quỹ đạo chuyển động lý tưởng của robot với v và ω là hằng số. ............... 46

Hình 2.23 Hàm phân phối sác xuất theo quy luật phân phối chuẩn (a) và tam giác (b)

với phương sai b. ....................................................................................................... 48

Hình 2.24 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 δrot1, chuyển động tịnh tiến δtrans, và chuyển

động quay δrot2. Các chuyển động quay và tịnh tiến này bị ảnh hưởng bởi nhiễu. ....... 51

Hình 2.25 Mô hình theo odometry với các thiết lập thông số nhiễu khác nhau. ......... 53

Hình 2.26 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ư hình 2.26. Mỗi trường hợp lấy 500 mẫu.......................................................... 55

Hình 3.1 Kinect camera............................................................................................. 58

Hình 3.2 Sơ đồ khối phương pháp xây dựng mô hình 3D .......................................... 60

Hình 3.3 Sơ đồ khối hệ thống trên nền ROS: tác vụ thu thập dữ liệu odometry từ

kinect ......................................................................................................................... 61

Hình 3.4 Sơ đồ điều khiển mô hình robot bằng joystick trên nền ROS ...................... 62

Hình 3.5 Sơ đồ kết nối các thiết bị của mô hình robot ............................................... 63

Hình 3.6 Mô hình robot sử dụng trong đề tài ............................................................. 63

Hình 4.1 Hình ảnh thu được từ kinect, trong đó hình bên trái là hình RGB, hình bên

phải thể hiện độ sâu (D – Depth)................................................................................ 64

Hình 4.2 Kết hợp ảnh RGB và ảnh Depth ứng với 2 ảnh trong Hình 4.1.................... 65

Hình 4.3 Một số hướng nhìn khác của không gian 3D khi kết hợp hai ảnh RGB và D.

................................................................................................................................. 65

Hình 4.4 Chạy thử nghiệm robot theo đường thẳng với quãng đường 4m, toạ độ bắt

đầu (x;y) là (0;0), toạ độ cuối là (3.894;0.017). Sai số theo trục X là 0.106m. ............ 66

Hình 4.5 Kết quả quỹ đạo thu được khi cho robot chạy theo đường cong, sai số theo

trục X là X =0.048m, sai số trục Y là Y = 0.107m. Bán kính quỹ đạo khoảng 0.8m, chu vi khoảng 5m. ..................................................................................................... 67

Hình 4.6 Kết quả quỹ đạo thu được khi robot chuyển động theo quỹ đạo hình chữ

nhật............................................................................................................................ 68

Hình 4.7 Tách đặc trưng 2D và thể hiện 3D (ảnh 1) .................................................. 69

Hình 4.8 Tách đặc trưng 2D và thể hiện 3D (ảnh 2) .................................................. 70

Hình 4.9 Mô hình các điểm đặc trưng của căn phòng sau khi thực hiện giải thuật ghép

các mây điểm đặc trưng của từng frame ảnh .............................................................. 71

Hình 4.10 Mô hình các điểm đặc trưng của căn phòng ở một góc nhìn khác.............. 71

Hình 4.11 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 1 .......................... 72

Hình 4.12 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 2 .......................... 73

Hình 4.13 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 3 .......................... 73

Hình 4.14 Hình ảnh thực tế căn phòng thí nghiệm (a) ............................................... 74

Hình 4.15 Hình ảnh thực tế căn phòng thí nghiệm (b) ............................................... 74

 

DANH SÁCH BẢNG BIỂU

 

Bảng 2.1 Giải thuật tính toán                           dựa trên mô hình vận tốc ...................... 42

Bảng 2.2 Giải thuật tính toán mật độ phân bố xác suất theo hàm phân phối chuẩn và hàm phân phối tam giác: với phương sai b. ................................................................ 43

Bảng 2.3 Giải thuật lấy mẫu ngẫu nhiên                             từ các giá trị đã biết

và                       ............................................................................................. 44

Bảng 2.4 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 ................................................................... 44

Bảng 2.5 Giải thuật tính xác suất                          theo mô hình odometry................... 53

Bảng 2.6 Giải thuật lấy mẫu ngẫu nhiên từ phân phối                             theo mô hình odometry. .................................................................................................................. 54

Bảng 4.1 Các giá trị sai số khi robot chạy trên các quỹ đạo khác nhau....................... 68


 

CHƯƠNG 1       TỔNG QUAN


1.1  Mục tiêu

Mục tiêu của đề tài nghiên cứu lý thuyết hướng robot tự hành, định vị, hoạch

định đường đi và tương tác với người.

Trong đó, xây dựng một ứng dụng cụ thể hệ điều hành Robot (ROS – Robot Operating System) để xác định đường đi của robot nhằm thể hiện phương thức vận hành của hệ điều hành robot.

1.2  Giới thiệu tổng quan

Hướng nghiên cứu về robot tự hành ứng dụng trong đời sống hàng ngày, có khả năng tương tác với người đang là một trong những hướng nghiên cứu rất được cộng đồng các nhà khoa học, kỹ sư robotics quan tâm trên thế giới. Do sự phát triển vượt bậc về công nghệ chế tạo cảm biến, đặc biệt là các loại cảm biến 3D, định vị, camera…, đã khiến cho các ý tưởng đáng kinh ngạc về tính tương tác với người và khả năng vận hành của robot được dần hiện thực hóa.

Trong lĩnh vực robot phục vụ con người, robot không chỉ di chuyển, mà còn mang các vật dụng thường ngày, tránh được các vật cản (cố định, di chuyển được, người…), nhận biết được sự thay đổi của môi trường hoạt động, quyết định và vận hành theo các tác vụ đã được hoạch định trước.

Các bài toán trên phải được giải quyết dựa vào các thông tin không hoàn toàn chính xác, nhiễu thay đổi, phụ thuộc nhiều vào môi trường hoạt động.

Kiến trúc hầu hết các bộ điều khiển robot có thể được chia thành các tầng như

sau (xem Hình 1.2):

-  Tầng Realtime: là tầng thấp nhất, gắn liền với phần cứng (điện tử và cơ cấu cơ khí). Tầng này bao gồm thu thập dữ liệu từ các cảm biến, điều khiển các cơ cấu chấp hành. Tầng realtime đòi hỏi khắt khe về thời gian thực.

Hình 1.1 Mô hình hệ robot thông minh theo [INT1]

-  Tầng Ra quyết định: từ các dữ liệu cảm biến thu thập được và các lệnh điều khiển cơ cấu chấp hành, tầng này sẽ dựa vào các mô hình toán, các thuật toán để đưa ra các lệnh điều khiển các cơ cấu chấp hành.

 

-  Tầng Chiến lược: là tầng sẽ dựa vào các thuật toán trí tuệ nhân tạo AI để ra các quyết định về tác vụ tiếp theo cho robot.

Hình 1.2 Sơ đồ mô tả kiến trúc bộ điều khiển robot thông minh theo 3 tầng

(theo [INT1])

 

Bài toán định vị robot:

Trong các bài toán về robot tự hành, bài toán về định vị robot được xem là một bài toán nền tảng để có thể thực hiện các tác vụ thông minh kế tiếp. Bài toán định vị là bài toán ước lượng hệ tọa độ gắn với robot bằng cách thu thập các thông tin từ cảm biến, trong đó, thông tin từ môi trường hoạt động (bản đồ) là có thể biết trước hoặc không.

 

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

Chương này trình bày các vấn đề cơ sở lý thuyết liên quan đến đề tài, bao gồm hệ điều hành Robot ROS - Robot Operating System (Mục 2.1) và lý thuyết robot xác suất (Mục 2.2). Hệ thống robot xác định được đi trong đề tài được xây dựng dựa trên nền hệ điều hành ROS và ứng dụng các lý thuyết của mô hình xác suất động học robot.

2.1  Hệ điều hành ROS – Robot Operating System

2.1.1    Giới thiệu tổng quan hệ điều hành ROS

2.1.1.1   ROS là gì?

ROS là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng robot. Về cơ bản, ROS có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu,… Hơn thế nữa, để ROS có thể ứng dụng trong lĩnh vực robotics, ROS còn được phát triển riêng biệt về các thư viện, công cụ dành cho việc thu thập, xử lý, hiển thị, điều khiển,… ROS có thể kết hợp, tương tác với nhiều robot framework khác như Player, YARP, Orocos, CARMEN, Orca, Moos, và Microsoft Robotics Studio.

Hình 2.1 Một hệ robot được xây dựng trên ROS

ROS là hệ điều hành được phát triển chuyên dụng cho các ứng dụng điều khiển robot, với ROS ta có thể lập trình, biên dịch, chạy thực thi chương trình điều khiển qua nhiều máy tính và nhiều hệ thống robots khác nhau.

Graph trong ROS có thể được hiểu như cây (tree graph) biểu diễn quan hệ giữa các thành phần trong hệ điều hành này, như là nodes, topics, messages, services,… (các khái niệm cụ thể được giải thích rõ hơn trong mục 2.2).

Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giao tiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics, và lưu trữ dữ liệu trên Parameter Server.

 Ư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. Những phần này có thể tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng.

Theo [ROS5], 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 2.2 So sánh khối lượng khoa học giữa việc sử dụng ROS hay không dùng.

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 làm cho ROS là một hệ điều hành nên được sử dụng, đó 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 đủ.

+ Một trong những 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.

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à:

 

    visualization

    object recognition

    navigation

    manipulation/grasping

    plugging in

Hình 2.3 Những mặt mạnh của ROS

2.1.1.2   Các thông tin khác

Hiện nay ROS chỉ chạy trên nền tảng Unix. Phần mềm cho ROS chủ yếu được thử nghiệm trên Ubuntu và Mac OS X. Cho đến nay cộng đồng ROS cũng đã bắt đầu xây dựng cho Fedora, Gentoo, Arch Linux và các nền tảng Linux khác.

ROS chưa hỗ trợ trên Microsoft Windows.

Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường được phát hành ở dạng ROS Distribution, tương tự như Linux distribution, cung cấp một bộ phần mềm để người dùng sử dụng, xây dựng và phát triển.

ROS là hệ điều hành mã nguồn mở, do đó thu hút được sự quan tâm đóng góp

của cộng đồng để phát triển hệ thống cũng như các công cụ và thư viện kèm theo.

Cộng đồng ROS tham gia đóng góp mã nguồn ngày càng phát triển, tuy vậy, vẫn tập trung chủ yếu Hoa Kỳ, Tây Âu, ngoài ra còn có Nhật Bản như trong bản đồ phân bố sau:

Hình 2.4 Phân bố cộng đồng đóng góp mã nguồn mở ROS trên thế giới

(theo [ROS5])

Ngoài ra theo thống kê trình bày ở đồ thị sau, ta cũng thấy được xu hướng phát triển ROS trong lĩnh vực robotics trên thế giới. ROS là một hệ điều hành mới phát triển trong thời gian gần đây, từ năm 2007 và càng ngày càng chứng tỏ được ưu điểm của mình.

Hình 2.5 Mã nguồn ROS phát triển qua các năm

(theo [ROS5])

 

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, và hình sau cho ta một số ví dụ cụ thể:

Hình 2.6 Một số robot được thực hiện với ROS

2.1.2    Mô hình ROS

Mô hình ROS gồm có ba tầng: Filesystem, Computation Graph, và Community. Bên cạnh đó, ROS định nghĩa hai kiểu đặt tên (Names): Package Resource

Names và Graph Resource Names.

2.1.2.1   Tầng ROS Filesystem

Filesystem là nguồn tài nguyên ROS được lưu trữ trên bộ nhớ hệ thống, bao gồm những thành phần như:

    Packages: Gói dữ liệu là đơn vị chính trong tổ chức phần mềm của hệ điều hành

ROS. Một package có thể chứa các lệnh thực thi của ROS (các nodes), một thư viện phụ thuộc ROS, tập dữ liệu, các file cấu hình, hoặc các dữ liệu cần thiết khác trong hệ thống.

    Manifests: là bảng kê khai thông tin dữ liệu của package (manifest.xml),

cung cấp cơ sở dữ liệu về package đó, bao gồm điều kiện cho phép (license) và những yếu tố phụ thuộc của gói dữ liệu đó. Manifest còn chứa thông tin về đặc trưng của ngôn ngữ lập trình ví dụ như các 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ể, chẳng hạn như “navigation stack” là tập hợp các packages dẫn hướng cho robot. Stack còn mô tả cách thức phần mềm ROS được xây dựng và chứa thông tin về phiên bản ROS đang sử dụng.

    Stack Manifests: (stack.xml) cung cấp cơ sở dữ liệu về một stack, bao điều

kiện cho phép (license) và các thông số phụ thuộc vào những stack khác.

 

    Message  (msg)  Types:  Thông  tin  mô  tả  message,  được  lưu  trữ  trong

my_package/msg/MyMessageType.msg, định nghĩa cấu trúc dữ liệu cho

các messages được gửi trong ROS.

    Service  (srv)  Types:  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.

2.1.2.2   Tầng ROS Computation Graph

 

“Computation Graph”, tạm gọi là lược đồ tính toán, là một mạng peer-to-peer của ROS trong đó các dữ liệu được xử lý với nhau. Computation Graph cơ bản gồm các  thành  phần:  các  nút  (nodes),  Master,  Parameter Server,  messages, services  , topics, bags, tất cả các thành phần này đều cung cấp dữ liệu cho Graph bằng những phương thức khác nhau.

    Nodes: là đơn vị thực hiện các lệnh tính toán, xử lý dữ liệu. Hệ điều hành ROS

được thiết kế mô-đun hoá, các mô-đun được xây dựng rất chi tiết và chuyên biệt, một hệ thống điều khiển robot thường sẽ bao gồm nhiều nodes. Ví dụ, một node điều khiển hệ thống cảm biến, một node điều khiển động cơ bánh xe, một nút thực hiện việc tác vụ định vị, một node hoạch định đường đi, một node vẽ quỹ đạo của hệ thống… Mỗi node ROS được xây dựng nhờ sử dụng một ROS client library, chẳng hạn như roscpp hoặc rospy.

    Master: Các 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 node sẽ không thể tìm thấy nhau,

 

trao đổi thông tin, hay gọi services đều không thực hiện được.

 

    Parameter Server: là một phần của Master.

 Messages: Các node giao tiếp với nhau thông qua các message. Một message c

đơn giản là một cấu trúc dữ liệu, bao gồm các trường được định kiểu. 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ợ. Messages có thể bao gồm các cấu trúc và các mảng lồng nhau (giống như kiểu structs trong ngôn ngữ C).

  Topics: Messages được định tuyến thông qua một hệ thống trao đổi (transport

system), trong đó phân loại các thông điệp thành 2 dạng: publish (đưa tin) và subcribe (đăng ký nhận thông tin). Một node gửi đi một message bằng việc đưa thông tin tới một topic (chủ đề). Tên của topic được dùng để quy định nội dung của message. Một node liên quan đến loại dữ liệu như thế nào sẽ đăng ký nhận tin từ topic tương ứng. Một topic có thể có nhiều đối tượng đưa tin (publishers) cũng như nhiều đối tượng đăng ký nhận tin (subcribers); và mỗi một node cũng có thể truyền tin nhiều topic khác nhau, cũng như có thể nhận tin từ nhiều topic. 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 đó.

Hình 2.8 Quan hệ giữa action – topic

    Services: 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à “services”, nhằm thực hiện được các yêu cầu tương tác theo kiểu request/reply. Services 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 2.9 Mô tả phương thức hoạt động của service

    Bags: là một định dạng để lưu và phát lại dữ liệu từ các ROS messages. Bags là một cơ chế quan trọng để lưu trữ dữ liệu, chẳng hạn như dữ liệu cảm biến, những dữ liệu này là cần thiết để phát triển và thử nghiệm các thuật toán.

Hình 2.10 Sơ đồ mô tả phương thức tổ chức trong ROS

a) mối liên hệ giữa Package và các thành phần nodes, messages, services trong ROS. b) Mối liên hệ giữa Stack và các packages.

ROS Master hoạt động như một nameservice trong ROS Computation Graph, lưu trữ các topics và thông tin đăng ký services cho nodes. Một node giao tiếp với Master để báo thông tin đăng ký của node. Khi giao tiếp với Master, các nodes cũng có thể nhận thông tin về các nodes khác đã đăng ký với Master từ đó thực hiện kết nối phù hợp để trao đổi dữ liệu. Master cũng sẽ gửi lại thông tin (callbacks) đến các nodes trong trường hợp có thay đổi thông tin đăng ký với Master, cho phép các node tự động tạo kết nối khi có nodes mới tham gia vào mạng.

Hình 2.11 Mô hình giao tiếp cơ bản trong ROS

Sự kết nối giữa các nodes là kết nối trực tiếp; Master chỉ cung cấp thông tin tra cứu (lookup information), giống như một máy chủ DNS. Các nodes đăng ký nhận tin từ một topic, sẽ gửi yêu cầu kết nối trực tiếp đến các nodes cung cấp thông tin cho topic đó. Kết nối được khởi tạo khi các chuẩn kết nối (connection protocol) phù hợp

với nhau. Chuẩn giao thức phổ biến nhất thường được dùng trong ROS là TCPROS, thông qua chuẩn TCP/IP.

Hình 2.12 Giao tiếp giữa các nodes

Cách xây dựng hệ thống như trong ROS cho phép nguồn cung cấp tin và đối tượng nhận tin có thể tách rời nhau, và mối liên hệ được thực hiện thông qua thuộc tính “name”. “Name” là thuộc tính đóng vai trò rất quan trọng trong ROS: các nodes, topics, services, và các parameters đều được đặt tên. Mỗi thư viện ROS Client đều hỗ trợ command-line để liên kết các tên này (remapping names), nhờ đó mà chương trình đã được biên dịch có thể cấu hình lại được khi chạy ngay cả khi hoạt động trong một cấu trúc Computation Graph khác.

Ví dụ, để điều khiển một thiết bị chẳng hạn như bộ cảm biến laser Hokuyo laser range-finder, ta có thể khởi động driver hokuyo_node, driver này có nhiệm vụ đọc các thông số từ laser rồi gửi đi (publish) các messages dạng sensor_msgs/LaserScan tới topic có tên là scan. Để xử lý dữ liệu từ cảm biến, ta có thể viết một node sử dụng package laser_filters, node này sẽ đăng ký nhận thông tin (subcribe) từ topic scan. Sau khi đăng ký, bộ lọc filter sẽ tự bắt đầu nhận messages từ cảm biến laser.

.............................................

CHƯƠNG 4       KẾT QUẢ

4.1  Xây dựng ảnh 3D từ hai ảnh RGB và ảnh Depth:

Dưới đây là hình ảnh phòng thí nghiệm thu được bằng camera RGB (hình màu) và camera Depth (thể hiện độ sâu), lấy mẫu tại một địa điểm thí nghiệm trong phòng (in-door environment).

Hình 4.1 Hình ảnh thu được từ kinect, trong đó hình bên trái là hình RGB, hình bên phải thể hiện độ sâu (D – Depth).

Kết hợp hai hình ảnh này (combination), ta thu được hình ảnh không gian 3 chiều của địa điểm thí nghiệm như trong Hình 4.2. Một số hướng nhìn khác của đối tượng được thể hiện trong các ảnh nhỏ tại Hình 4.3, các hình này được đính kèm trong Phụ lục với chất lượng lớn hơn.

Đây là hình 3D của một góc phòng, do robot (đồng thời là camera) đứng tại một điểm thu được. Khi cho robot chuyển động quanh phòng, từ những hình ảnh thu được, ta có thể xây dựng được bản đồ 3D của căn phòng đó.

Hình 4.2 Kết hợp ảnh RGB và ảnh Depth ứng với 2 ảnh trong Hình 4.1

Hình 4.3 Một số hướng nhìn khác của không gian 3D khi kết hợp hai ảnh RGB và D.

4.2  Đánh giá sai số khi cho robot chuyển động theo các quỹ đạo khác nhau

Các phần tiếp theo đây trình bày kết quả quỹ đạo thu được khi cho robot di chuyển, theo đường thẳng, đường cong và đường hình chữ nhật (bao quanh một căn phòng) nhằm đánh giá sai số.

 

Các điểm tròn màu xanh là vị trí của robot tại từng thời điểm trên quỹ đạo.

Hình 4.4 Chạy thử nghiệm robot theo đường thẳng với quãng đường 4m, toạ độ bắt

đầu (x;y) là (0;0), toạ độ cuối là (3.894;0.017). Sai số theo trục X là 0.106m.

Trong trường hợp đầu tiên, cho robot chuyển động theo quỹ đạo là đường thẳng, với quãng đường 4m. Quỹ đạo robot do camera thu về được biểu diễn trên đồ thị hình 4.4. Theo kết quả từ các camera, toạ độ điểm cuối của robot theo trục X là

3.894m, và sai số theo trục X: X = 0.106 m = 10.6 cm.

Trong trường hợp tiếp theo, robot được cho di chuyển theo một đường cong gần với đường tròn, với bán kính khoảng 0.8m, tổng quãng đường di chuyển khoảng 5m. Khi này ta sẽ đánh giá sai số theo cả hai trục X và Y.

Toạ độ xuất phát của robot được đánh dấu là (0m ; 0m). Dữ liệu do các camera thu nhận được về quỹ đạo chuyển động được thể hiện trên Hình 4.5. Từ kết quản này, ta đánh giá được sai số theo trục X là 0.048m (4.8cm), sai số trục Y là 0.107m (10.7cm).

Hình 4.5 Kết quả quỹ đạo thu được khi cho robot chạy theo đường cong, sai số theo trục X là X =0.048m, sai số trục Y là Y = 0.107m. Bán kính quỹ đạo khoảng 0.8m, chu vi khoảng 5m.

Trong trường hợp thứ 3, robot được cho chuyển động theo một quỹ đạo dài hơn bao quanh căn phòng dùng làm thử nghiệm. Quỹ đạo lúc này của robot gần với hình chữ nhật có tổng quãng đường di chuyển khoảng 9m. Sai số nhận được theo trục X là

X = 0.08m (8cm), sai số theo trục Y là Y = 0.28m (28cm).

Hình 4.6 Kết quả quỹ đạo thu được khi robot chuyển động theo quỹ đạo hình chữ

nhật.

Như vậy, với ba trường hợp thí nghiệm trên, ta tổng hợp được các giá trị sai số như trong bảng sau:

Bảng 4.1 Các giá trị sai số khi robot chạy trên các quỹ đạo khác nhau.

 

Trường hợp

 

Quỹ đạo

 

Quãng

đường

 

Sai số (m)

 

Sai số (cm)

 

1

 

Đường thẳng

 

3.9 m

X = 0.10

X = 10

 

 

2

 

 

Đường cong

 

 

5 m

X= 0.048

Y = 0.107

X = 4.8

Y = 10.7

 

 

3

 

 

Hình chữ nhật

 

 

9 m

X= 0.08

Y = 0.28

X = 8

Y = 28

 

Như vậy, nhìn chung, sai số theo trục Y lớn hơn so với sai số trên trục X. Trục X là trục thẳng góc với các frame ảnh, còn trục Y là trục trượt ngang. Ở các góc xoay, việc tính toán giá trị trục Y có nhiều sai số.

Có thể khắc phục bằng cách kết hợp các cảm biến khác như encoder, IMU để

hạn chế sai số này.

Một cách tổng quát thì khi quãng đường dịch chuyển tăng lên thì sai số trên các trục cũng tăng, phù hợp với các kết luận theo lý thuyết trình bày ở chương 2.

4.3  Xây dựng bản đồ 3D

Như đã trình bày ở chương 3, số điểm ảnh point-cloud thu được rất lớn (khoảng trăm ngàn điểm ảnh trong một frame ảnh). Do đó cần tách đặc trưng để giảm chiều dữ liệu. Thuật toán được dùng để trích đặc trưng trong đề tài này là Shi-Tomashi.

Trong hình 4.7 và 4.8, các điểm màu vàng là kết quả tách đặc trưng trên frame ảnh 2D và thể hiện 3D. Đây là các ví dụ tách đặc trưng trong căn phòng thí nghiệm, ở

2 vị trí khác nhau.Hình 4.7 Tách đặc trưng 2D và thể hiện 3D (ảnh 1)

Hình 4.8 Tách đặc trưng 2D và thể hiện 3D (ảnh 2)

Như vậy, cứ mỗi một frame ảnh do kinect thu về được, sẽ được xử lý để tách ra các điểm đặc trưng 2D này. Tập các điểm đặc trưng này tạo thành đám mây điểm đặc trưng của frame ảnh đó.

Tổng hợp các điểm đặc trưng của tất cả các frame hình thu được khi cho robot chuyển động quanh không gian đang xét (ví dụ ở đây là một căn phòng), ta sẽ có mô hình đặc trưng của căn phòng đó.

 

Giải thuật này được gọi là giải thuật ghép các mây điểm đặc trưng của các frame ảnh. Hình 4.9 thể hiện mô hình đặc trưng của căn phòng thí nghiệm trong đề tài. Hình 4.10 cũng là mô hình đặc trưng của gian phòng, tuy nhiên được nhìn từ một góc khác.

Hình 4.9 Mô hình các điểm đặc trưng của căn phòng sau khi thực hiện giải thuật ghép

các mây điểm đặc trưng của từng frame ảnh

Hình 4.10 Mô hình các điểm đặc trưng của căn phòng ở một góc nhìn khác

Trong các Hình 4.9 và Hình 4.10, đường màu xanh lá biểu diễn quỹ đạo chuyển

động của robot.

Từ các dữ liệu trên, bản đồ 3D của căn phòng nơi thí nghiệm được xây dựng. Các hình từ 4.11 đến 4.13 thể hiện ảnh 3D nhìn từ những hướng khác nhau của phòng. Căn phòng thực tế được chụp lại để so sánh, các hình tương ứng được trình bày trong các hình 4.14 và 4.15.

 

Hình 4.11 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 1

Hình 4.12 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 2

Hình 4.13 Bản đồ 3D được xây dựng của căn phòng, hướng nhìn 3

Các hình ảnh thực của phòng nơi thí nghiệm được cho trong các hình 4.14 và

4.15, thể hiện những góc nhìn từ những vị trí khác nhau trong phòng, nhằm để so sánh với kết quả xây dựng bản đồ 3D ở phần trên.

Hình 4.15 Hình ảnh thực tế căn phòng thí nghiệm (b)

Như vậy, mô hình thực nghiệm trong đề tài đã hoàn thành các nhiệm vụ: xác định đường đi của robot, đánh giá được sai số khi chuyển động trên các quỹ đạo khác nhau và xây dựng được bản đồ 3D của không gian xung quanh robot khi robot hoạt động trong môi trường in-door (trong nhà).

CHƯƠNG 5       KẾT LUẬN

5.1  Kết luận

Đề tài đã xây dựng được một ứng dụng cụ thể chạy trên nền hệ điều hành ROS: Ứng dụng dùng camera RGB-D Kinect xác định đường đi của robot hoạt động trong môi trường in-door.

Về hệ điều hành ROS, kiến trúc, phương thức giao tiếp dữ liệu và các phương pháp để xây dựng ứng dụng trên ROS đã được nắm vững từ đó xây dựng thành công một ứng dụng cụ thể trên nền hệ điều hành này.

Về visual odometry dựa trên camera RGB-D Kinect, các thuật toán áp dụng trong đề tài để thu thập dữ liệu cho sai số tương đối nhỏ, có thể chấp nhận được trong các ứng dụng không cần độ chính xác quá cao. Các thông tin odometry thu thập được đã được sử dụng để xây dựng bản đồ 3D.

Một trong những phương án có thể áp dụng để cải thiện sai số đó là kết hợp thêm thông tin từ các cảm biến khác như encoder, IMU,…

5.2  Hướng phát triển đề tài

Hiện tại trong đề tài hệ điều hành ROS chạy trên máy tính laptop, trong tương lai có thể nghiên cứu để ứng dụng ROS trên các nền tảng khác như các vi điều khiển (MCU), Android, Rasberry PI, BeagleBoard… để tăng tính linh hoạt và khả năng ứng dụng vào thực tế.

Cũng như đã đề cập ở phần trên, các cảm biến khác như encoder, IMU,… có thể được kết hợp để cải thiện sai số thông tin odometry. Từ các thông tin odometry thu thập được, ứng dụng xây dựng bản đồ (2D, 3D) cũng có thể được phát triển, là cơ sở để robot tự hành và thực hiện các tác vụ đơn giản trong môi trường trong nhà.

 

TÀI LIỆU THAM KHẢO

[INT1] Herman Bruyninckx, Joris De Schutter. “Advanced Robot Control Systems”.

 

Internet:      http://people.mech.kuleuven.be/~bruyninc/robotics/H06U9A/    , Sep.27, 2011.

 

[ROS1] Wiki, “ROS Package Summary”. Internet:  http://www.ros.org/wiki/ROS, Apr.

 

23, 2013.

 

[ROS2] Wiki, “ROS Message”. Internet: http://www.ros.org/wiki/msg, Apr. 22, 2013.

 

[ROS3] Wiki, “ROS Service”. Internet: http://www.ros.org/wiki/srv, Dec.18, 2012.

 

[ROS4] Wiki, “ROS Nodes”. Internet: http://www.ros.org/wiki/Nodes,Feb. 03, 2012.

 

[ROS5] R. B. Rusu. ROS - Robot Operating System. Willow Garage, Inc, 2010.

 

[ROS6] Jonathan Scholz, et al. “Cart Pushing with a Mobile Manipulation System: Towards Navigation with Moveable Objects”,  ICRA 2011, Shanghai, China,

2011.

 

[ROS7]    Armin   Hornung,   et    al.,    “Navigation   in   Three-Dimensional   Cluttered

 

Environments for Mobile Manipulation”, ICRA 2012, St. Paul USA, 2012.

 

[ROS8] J. Mason, B.Marthi, R. Parr, “Object Disappearance for Object Discovery”, IROS2012.

 

[ODO1] S. Thrun, W. Burgard, D. Fox. Probabilistic Robotics, Stanford University, Stanford, CA, 2000.

 

[ODO2] I.Dryanovski, R. G. Valenti and J.Xiao, “Fast Visual Odometry and Mapping from RGB-D Data”.

 

[ODO3] I. Dryanovski, C. Jaramillo, and J. Xiao, “Incremental Registration of RGB-D Images”, in IEEE International Conference on Robotics and Automation (ICRA) 2012, 2012, pp.1685-1690.

 

[ODO4] I. Dryanovski, W. Morris and J. Xiao, “Multi-Volume Occupancy Grids: an

 

Efficient Probabilistic 3D Mapping Model for Micro Aerial Vehicles”, in The

 

Close