Tải bản đầy đủ (.pdf) (66 trang)

Xây dựng chương trình điều khiển robot hút bụi iRobot trên môi trường ROS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.12 MB, 66 trang )

TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

LUẬN VĂN THẠC SĨ
Xây dựng chƣơng trình điều khiển robot
hút bụi iRobot trên mơi trƣờng ROS
TRẦN MINH HẢI


Ngành Hệ thống thông tin

Giảng viên hƣớng dẫn:

TS. Ngô Lam Trung
Chữ ký của GVHD

Viện:

Công nghệ Thông tin và Truyền thông

HÀ NỘI, 10/2020



CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc

BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn: Trần Minh Hải
Đề tài luận văn: Xây dựng chƣơng trình điều khiển robot hút bụi iRobot
trên môi trƣờng ROS
Chuyên ngành: Hệ thống thông tin


Mã số HV: CB180153
Tác giả, Ngƣời hƣớng dẫn khoa học và Hội đồng chấm luận văn
xác nhận tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng
ngày 31/10/2020 với các nội dung sau:
STT
1

2

3

3

4

5

Yêu cầu của hội đồng
Phần tổng quan cần
trình bày chi tiết hơn
sau đó mới đi vào từng
nội dung liên quan

Nội dung đã chỉnh sửa, bổ sung
Phần tổng quan trƣớc khi bắt đầu mục
1.1 đã đƣợc viết thêm giới thiệu bài
toán và lý do chọn đề tài, tính cấp
thiết của đề tài (P.1)
Cuối mỗi chƣơng đã đƣợc thêm phần
Trong mỗi chƣơng cần kết luận tổng kết tóm tắt tồn bộ nội

phải có phần tóm tắt
dung, các kết quả đạt đƣợc của
kết luận chƣơng
chƣơng đó đồng thời dẫn giải đến
chƣơng tiếp theo
Thay đại từ nhân xƣng “em”, “chúng
Chỉnh sửa đại từ nhân
ta” thành “tác giả”, “tơi” trong tồn bộ
xƣng, bổ sung phần
luận văn.
hƣớng phát triển tiếp
Trong mục kết luận đã bổ sung thêm
theo.
phần hƣớng phát triển (P.53)
Phần tài liệu tham khảo Phần tài liệu tham khảo đã đƣợc chỉnh
cần trình bày đúng quy sửa theo định dạng IEEE
định
Các chữ đƣợc chèn bên trong ảnh đã
đƣợc chỉnh sửa theo đúng định dạng.
Chỉnh sửa lại cỡ chữ
Một số ảnh đã đƣợc thay thế cho phù
trong các hình ảnh theo hợp hơn
đúng định dạng
Các ảnh đã chỉnh sửa, thay thế bao
gồm: hình 1.2, 1.3, 1.4, 1.5, 1.6, 1.7,
1.9, 4.6, 5.1, 5.2.
Bổ sung khảo sát đối
Bổ sung mục 1.1.3 giới thiệu về các



với các robot hút bụi
thƣơng mại hiện có
trên thị trƣờng

mẫu robot có trên thị trƣờng (P.2)
Mục 2.1 bổ sung so sánh công cụ quét
bản đồ của iRobot vs các mẫu robot
thƣơng mại (P.15)

Ngày 27 tháng 11 năm 2020
Giáo viên hƣớng dẫn

Tác giả luận văn

TS. Ngô Lam Trung

Trần Minh Hải

CHỦ TỊCH HỘI ĐỒNG

PGS.TS Lê Thanh Hƣơng


ĐỀ TÀI LUẬN VĂN
Mã đề tài: 2018BKHDL-KH05
Theo QĐ số 138 do Hiệu trƣởng Trƣờng Đại học Bách Khoa Hà Nội ký ngày 13
tháng 03 năm 2019
Họ và tên học viên: Trần Minh Hải
SHHV: CB180153
Chuyên ngành: Hệ thống thông tin

Lớp: Khoa học dữ liệu
Ngƣời hƣớng dẫn: TS. Ngô Lam Trung
Đơn vị: bộ mơn Kỹ thuật máy tính, viện Cơng nghệ thơng tin và truyền thông,
Trƣờng Đại học Bách Khoa Hà Nội
5. Tên đề tài: Xây dựng chƣơng trình điều khiển robot hút bụi iRobot trên môi
trƣờng ROS.
1.
2.
3.
4.

Giáo viên hƣớng dẫn
Ký và ghi rõ họ tên



Lời cảm ơn
Trƣớc hết, tác giả xin gửi lời cảm ơn chân thành tới TS Ngô Lam Trung, ngƣời
đã tận tình dạy dỗ và hƣớng dẫn trong q trình hồn thành luận văn cũng nhƣ
trong học tập.
Đồng thời, tác giả xin bày tỏ lịng biết ơn đến các thầy cơ giáo giảng viên trong
Viện Công nghệ thông tin và Truyền thông – trƣờng Đại học Bách Khoa Hà Nội,
những ngƣời đã giảng dạy, truyền đạt những kiến thức cơ bản, làm nền tảng cho
việc thực hiện luận văn
Tác giả cũng xin gửi lời cảm ơn tới các anh chị, các bạn, các em trong nhóm sinh
viên nghiên cứu, những ngƣời đã giúp đỡ, động viên tác giả trong quá trình hồn
thành luận văn.

Tóm tắt nội dung luận văn
Luận văn tập trung vào việc xây dựng hệ thống robot (iRobot) có nhiệm vụ quét

bản đồ, và hút bụi phòng giúp đỡ con ngƣời trong cuộc sống
Ứng dụng iRobot đƣợc xây dựng trên robot kobuki, cảm biến laser Hokuyo
UTM-30LX và hệ điều hành robot ROS (Robot Operating System). Với môi
trƣờng giả lập, tác giả sử dụng phần mềm gazebo.
Về phƣơng pháp thực hiện. Đầu tiên cần quét bản đồ môi trƣờng, sau đó sẽ áp
dụng một thuật tốn bao phủ trên bản đồ đã quét. Tác giả sử dụng hƣớng tiếp cận
dựa trên lƣới, bản đồ sẽ đƣợc chia làm nhiều ô nhỏ, mỗi ô trong lƣới biểu diễn
cho một ô vuông trong thực tế kích thƣớc nxn, mỗi ơ sẽ mang một giá trị thể hiện
tại đó có vật cản hay khơng. Một controller sẽ triển khai thuật tốn bao phủ kết
hợp với các công cụ khác để điều khiển robot đi hết các ô trống
Kết quả thực nhiệm của hệ thống iRobot đƣợc trình bày chi tiết trong luận văn.
.
HỌC VIÊN
Ký và ghi rõ họ tên



MỤC LỤC
CHƢƠNG 1.
1.1

1.2

TỔNG QUAN ................................................................................................... 1

Đặt vấn đề ....................................................................................................................... 1
1.1.1

Robot dịch vụ là gì? .......................................................................................... 1


1.1.2

Các ứng dụng của robot dịch vụ ....................................................................... 1

1.1.3

Một số robot hút bụi thƣơng mại hiện có trên thị trƣờng ................................. 2

Giới thiệu một số khái niệm ............................................................................................ 4
1.2.1

Giới thiệu về ROS ............................................................................................. 4

1.2.2

Giới thiệu về kobuki ....................................................................................... 12

1.2.3

Giới thiệu về hokuyo ...................................................................................... 13

1.3

Nội dung đề tài .............................................................................................................. 15

1.4

Các kết quả đạt đƣợc ..................................................................................................... 15

CHƢƠNG 2.

2.1

2.2

2.3

Quét bản đồ ................................................................................................................... 16
2.1.1

Quét bản đồ trên môi trƣờng giả lập ............................................................... 16

2.1.2

Quét bản đồ trên môi trƣờng thực tế ............................................................... 17

2.1.3

Tìm hiểu file ảnh .pgm và file .yaml (kết quả của quá trình quét bản đồ) ...... 19

Xây dựng bản đồ lƣới.................................................................................................... 21
2.2.1

Khái niệm về cell trong bản đồ lƣới. .............................................................. 21

2.2.2

Chuyển đổi bản đồ quét đƣợc sang bản đồ lƣới.............................................. 21

Kết luận ......................................................................................................................... 22


CHƢƠNG 3.
3.1

QUÉT BẢN ĐỒ VÀ XÂY DỰNG BẢN ĐỒ LƢỚI ...................................... 16

ĐIỀU HƢỚNG VÀ ĐỊNH VỊ ROBOT .......................................................... 23

Điều hƣớng robot .......................................................................................................... 23
3.1.1

Twist ............................................................................................................... 24

3.1.2

Odometry ........................................................................................................ 25

3.1.3

Các hàm di chuyển .......................................................................................... 26

3.2

Định vị robot sử dụng AMCL ....................................................................................... 28

3.3

Kết luận ......................................................................................................................... 31

CHƢƠNG 4.


THUẬT TOÁN BAO PHỦ ............................................................................. 32

4.1

Thuật toán D*................................................................................................................ 32

4.2

Thuật toán Path Transform (PT) ................................................................................... 35

4.3

Thuật toán CCD* .......................................................................................................... 36
4.3.1

Lý thuyết về thuật tốn CCD* ........................................................................ 36

4.3.2

Phân tích thuật tốn CCD* ............................................................................. 41


4.4

Áp dụng thuật toán CCD* vào bài toán iRobot ............................................................ 45

4.5

Kết luận ......................................................................................................................... 45


CHƢƠNG 5.
5.1

5.2

5.3

CHƢƠNG TRÌNH ĐIỀU KHIỂN IROBOT .................................................. 47

Chƣơng trình điều khiển robot hút bụi iRobot .............................................................. 47
5.1.1

Mơ hình chung ................................................................................................ 47

5.1.2

Hàm xử lý phát hiện vật cản ........................................................................... 48

Các trƣờng hợp ngoại lệ ................................................................................................ 50
5.2.1

Robot di chuyển khơng chính xác................................................................... 50

5.2.2

AMCL trả dữ liệu chậm .................................................................................. 51

5.2.3

Laser có sai số ................................................................................................. 52


Kết luận ......................................................................................................................... 52


DANH MỤC HÌNH VẼ
Hình 1.1 Một ứng dụng của robot dịch vụ ........................................................................ 2
Hình 1.2 Các thành phần kiến trúc trong ROS [3]............................................................ 5
Hình 1.3 Cấu trúc tầng FileSystem level [3] .................................................................... 6
Hình 1.4 Cấu trúc package của ROS sử dụng catkin [3] .................................................. 7
Hình 1.5 Mối liên hệ giữa Stack và Package [3] .............................................................. 8
Hình 1.6 Các thành phần trong tầng Computation Graph [3] ........................................... 8
Hình 1.7 Mơ hình quản lý của master với các node [3] .................................................... 9
Hình 1.8 Các kiểu dữ liệu trong message [3] ................................................................. 10
Hình 1.9 Mơ hình hoạt động của dịch vụ trong ROS [3] Error! Bookmark not defined.
Hình 1.10 Robot kobuki [4] ............................................................................................ 12
Hình 1.11 Laser Hokuyo UTM-30LX [5] ...................................................................... 13
Hình 2.1 Cơng cụ RVIZ .................................................................................................. 16
Hình 2.2 Kết quả quét bản đồ căn hộ .............................................................................. 17
Hình 2.3 Bản đồ tịa nhà B1 ............................................................................................ 19
Hình 2.4 Robot hình trịn có diện tích bao phủ là 1 ô vuông gồm 3x3 cell, với 1 cell là
trung tâm và bán kính robot trong ví dụ này là 1 cell ..................................................... 21
Hình 2.5 Quá trình quét bản đồ và chuyển sang bản đồ lƣới, a. hình ảnh căn phòng giả
lập trên gazebo, b. kết quả quét bản đồ là file ảnh mơ tả căn phịng, c. bản đồ lƣới đƣợc
chuyển đổi từ file ảnh, hiển thị trên console ................................................................... 22
Hình 3.1 Mơ hình subcriber/publisher đƣợc sử dụng để điều hƣớng robot .................... 23
Hình 3.2 Mơ phỏng chiều di chuyển của robot theo chiều 3D ....................................... 24
Hình 3.3 Hệ tọa độ do node kobuki sinh ra .................................................................... 25
Hình 3.4 Thuật tốn AMCL [10] .................................................................................... 29
Hình 3.5 Định vị robot trên bản đồ lƣới ......................................................................... 29
Hình 3.6 Hình ảnh trƣớc khi hội tụ, hình ảnh thể hiện bản đồ lƣới và trên phần mềm

RVIZ ............................................................................................................................... 31
Hình 3.7 Hình ảnh AMCL xác định đƣợc tọa độ robot trên bản đồ lƣới........................ 31
Hình 4.1 Thuật tốn D* .................................................................................................. 33
Hình 4.2 Các cell đƣợc gán giá trị .................................................................................. 34
Hình 4.3 Lấy ra cell từ hàng đợi và gán giá trị cho cell hàng xóm ................................. 34
Hình 4.4 Kết quả thuật tốn D* ...................................................................................... 35
Hình 4.5 Thuật tốn PT [10] ........................................................................................... 36
Hình 4.6 Mặt nạ robot với 1 cell trung tâm và bán kính robot bằng 2 cell ..................... 37
Hình 4.7 Giải thuật pha initial complete [13] ................................................................. 38
Hình 4.8 Quá trình tìm cell hàng xóm thỏa mãn điều kiện cùng hàng hoặc cùng cột,
non-visited và non-overlapped (mã giả 1-4). Màu đỏ thể hiện visited, màu vàng thể hiện
overlapped [13] ............................................................................................................... 39
Hình 4.9 Sử dụng D* để tìm cell mới non-visited (mã giả 5) [13] ................................. 39
Hình 4.10 Đƣờng đi sinh ra bởi pha initial complete ..................................................... 40
Hình 4.11 Giải thuật pha replanning [13] ....................................................................... 41
Hình 4.12 Kết quả sinh lại đƣờng đi pha replanning khi gặp vật cản [13] ..................... 41
Hình 4.13 Các màu biểu thị mức độ lặp lại .................................................................... 43


Hình 4.14 Mức độ lặp lại khi ƣu tiên trong tìm kiếm D* theo thứ tự UP-LEFT-DOWNRIGHT ............................................................................................................................ 43
Hình 4.15 Mức độ lặp lại khi ƣu tiên trong D* theo thứ tự RIGHT-DOWN-LEFT-UP 44
Hình 5.1 Mơ hình chung các thành phần trao đổi dữ liệu với nhau phục vụ iRobot ...... 47
Hình 5.2 Vùng phát hiện vật cản của laser ..................................................................... 49
Hình 5.3 AMCL trả dữ liệu chậm gây sai số trong khi quay .......................................... 51
Hình 5.4 Laser phát hiện vật cản khơng chính xác ......................................................... 52


CHƢƠNG 1. TỔNG QUAN
1.1 Đặt vấn đề
Xã hội hiện đại, đời sống con ngƣời nâng cao. Việc robot tham gia vào đời

sống con ngƣời không phải điều mới lạ. Robot phục vụ con ngƣời trong nhiều
lĩnh vực từ hỗ trợ con ngƣời sản xuất đến các cơng việc mang tính dịch vụ nhƣ
bƣng bê trong nhà hàng, đón tiếp khách hàng… Một trong những cơng việc có
tính lặp đi lặp lại hàng ngày chính là việc dọn dẹp nhà cửa, cụ thể là việc hút bụi.
Nếu có robot làm giúp công việc này, con ngƣời sẽ tiết kiệm đƣợc rất nhiều thời
gian và cơng sức. Với tính cấp thiết nhƣ vậy, tôi quyết định lựa chọn đề tài “Xây
dựng chƣơng trình robot hút bụi iRobot trên mơi trƣờng ROS”
1.1.1 Robot dịch vụ là gì?
Robot dịch vụ là loại robot hỗ trợ, thực hiện thay con ngƣời trong các cơng
việc; ví dụ nhƣ cơng việc có tính chất lặp đi lặp lại, các công việc trong nhà, công
việc phải thực hiện ở những chỗ dơ bẩn, nguy hiểm [1],…. Những robot này
thƣờng đƣợc điều khiển tự động bởi một hệ thống điều khiển tích hợp đƣợc cài
đặt thủ cơng bên trong. Thuật ngữ “Robot dịch vụ” khơng có một định nghĩa
chính xác. Liên đoàn Robot Quốc Tế (The International Federation of Robotics –
IFR) [2] đã đề xuất một định nghĩa: Một robot dịch vụ là một robot mà hoạt động
bán hoặc hoàn toàn tự động để thực hiện các dịch vụ hữu ích cho của con ngƣời
và thiết bị, khơng bao gồm các hoạt động sản xuất.
1.1.2 Các ứng dụng của robot dịch vụ
Ứng dụng có thể có của robot chủ yếu là để hỗ trợ trong công việc của
con ngƣời. Hiện nay có các ứng dụng trong một số lĩnh vực nhƣ sau:
- Ứng dụng trong công nghiệp: Robot dịch vụ cơng nghiệp có thể đƣợc sử
dụng để thực hiện các nhiệm vụ đơn giản, chẳng hạn nhƣ kiểm tra hàn. Nó cũng
có các nhiệm vụ phức tạp hơn, thực hiện trong các môi trƣờng khắc nghiệt, chẳng
hạn nhƣ giúp đỡ trong việc tháo dỡ các nhà máy điện hạt nhân. Robot cũng có
thể đƣợc dùng để thực hiện những hành động lặp đi lặp lại nhƣ lắp ráp, thực hiện
các cơng việc tự động hóa khác. Nhƣng robot đƣợc sử dụng trong công nghiệp
đƣợc gọi là "Robot công nghiệp".
1



- Ứng dụng trong các nhà hàng, quán bar, khách sạn: Hiện nay, nhiều nhà
hàng, quán bar, khách sạn đã sử dụng robot dịch vụ. Các công việc mà robot có
thể thực hiện ví dụ nhƣ dọn dẹp, pha chế các đồ uống phức tạp, hay thậm chí là
tiếp đón khách hàng.
- Ứng dụng trong gia đình: Robot trong gia đình thực hiện nhiệm vụ mà con
ngƣời thƣờng xuyên thực hiện xung quanh nhà nhƣ lau chùi sàn nhà, cắt cỏ, dọn
dẹp hồ bơi.... Chúng cũng có thể đóng vai trị của một ngƣời quản gia trong gia
đình.
- Ứng dụng trong khoa học: Hệ thống robot thực hiện nhiều chức năng nhƣ
tiến hành các thao tác lặp đi lặp lại trong nghiên cứu. Những robot tự động cũng
có thể thực hiện các nhiệm vụ khoa học mà con ngƣời khó hoặc khơng thể thực
hiện, ví dụ nhƣ các vùng biển sâu, khơng gian bên ngồi Trái Đất....

Hình 1.1 Một ứng dụng của robot dịch vụ
1.1.3 Một số robot hút bụi thƣơng mại hiện có trên thị trƣờng
Hiện nay trên thị trƣờng cũng có rất nhiều loại robot hút bụi khác nhau về
giá cả, mẫu mã, khả năng hút bụi, chức năng, cấu tạo phần cứng… Tuy nhiên ở
đây, trong phạm vi nghiên cứu, tơi muốn phân tích sự khác nhau về hƣớng tiếp
cận bài toán bao phủ.
Các robot này đều có chung một nhiệm vụ là hút bụi tất cả các vị trí trong
phịng. Trên thị trƣờng có một số mẫu robot nhƣ iLife V5S Pro, Eufy Robovac
11S, Ecovacs N79s [3]… dựa vào cảm biến để tránh vật cản, điều khiển robot đi
theo hƣớng khác, đƣờng đi do robot này sinh ra là hồn tồn ngẫu nhiên, do đó tỉ
lệ lặp lại cao, tỉ lệ bỏ sót lớn.
Hƣớng tiếp cận thứ hai là quét bản đồ phạm vi cần quét sau đó cho robot di
chuyển trên bản đồ này, đây là hƣớng tiếp cận phổ biến nhất áp dụng trên một số
2


mẫu nhƣ ILIFE X750, X787, V8s [3]… Hƣớng tiếp cận này cũng là hƣớng tiếp

cận tác giả sử dụng để xây dựng hệ thống iRobot.
Hƣớng tiếp cận thứ ba là điều hƣớng với camera trực quan. Robot đƣợc xây
dựng trên hƣớng tiếp cận này là những robot khá hiện đại với trang bị nhiều cảm
biến, sử dụng thuật toán VSLAM (Visual Simultaneous Location And Mapping).
Các robot này không cần quét bản đồ trƣớc, có khả năng tạo bản đồ ngay trong
khi dọn dẹp nhờ đó hiệu quả cơng việc tăng đáng kể. Một số mẫu robot thuộc
loại này nhƣ Roomba i7, Roomba S9, Roomba 960, 980, X800 [3]…

3


1.2 Giới thiệu một số khái niệm
1.2.1 Giới thiệu về ROS
a, Khái lƣợc về ROS
ROS (Robot Operating System) là một tập hợp các framework cung cấp
công cụ và thƣ viện giúp các nhà phát triển phần mềm có thể tạo đƣợc ứng dụng
robot. ROS cung cấp trừu tƣợng hóa phần cứng, các trình điều khiến mức thấp,
truyền thơng điệp, quản lý các gói… [4]
Các tiến trình trong ROS đƣợc triển khai theo cấu trúc đồ thị với mỗi tiến
trình ứng với từng node có thể nhận, thơng báo và kết hợp các cảm biến, bộ điều
khiển, định mức hiện trạng, quy hoạch, bộ truyền động cùng nhiều thông điệp
khác. Khả năng phản ứng nhanh và độ trễ thấp là những yêu cầu quan trọng với
ứng dụng robot nhƣng cho dù vẫn có thể tƣơng tác với một số đoạn mã xử lý tức
thời, bản thân ROS không phải là hệ điều hành thời gian thực.
Các phần mềm trong ROS đƣợc chia làm 3 nhóm:
- Các cơng cụ độc lập với ngơn ngữ lập trình và nền tảng phần cứng dùng
để xây dựng và phân phối những phần mềm cơ bản cho ROS.
- Bộ thƣ viện áp dụng cho bên client để triển khai.
- Các gói chứa mã hỗ trợ dùng cho một hoặc nhiều thƣ viện.
Các công cụ và thƣ viện chính viết bằng C++, Python hoặc LISP, đƣợc phát

hành theo bản quyền của BSD và đều là mã nguồn mở, miễn phí cho sử dụng
trong nghiên cứu hoặc ngay cả với mục đích thƣơng mại. Đa phần những gói
cơng cụ còn lại phát hành dƣới nhiều bản quyền mã nguồn mở đa dạng, đóng vai
trị triển khai các chức năng và ứng dụng dùng chung nhƣ trình điều khiển phần
cứng, mơ hình hóa robot, phân loại dữ liệu, quy hoạch, nhận thức, lập bản đồ,
định vị đồng thời hay giả lập cùng nhiều giải thuật khác.
Những thƣ viện chính của ROS thiết kế hƣớng tới hệ thống tƣơng tự UNIX,
chủ yếu vì phải phụ thuộc nhiều vào lƣợng lớn những phần mềm mã nguồn mở.
Một trong số các hệ điều hành đƣợc hỗ trợ có thể kể đến nhƣ là Ubuntu Linux,
còn nhiều hệ điều hành khác chẳng hạn Fedora, Mac OS X hay Microsoft
Windows vẫn đang thử nghiệm. Trong khi đó thƣ viện rosjava viết bằng Java có
thể cài đặt trên mọi nền tảng.

4


b, Các thành phần kiến trúc trong ROS

Hình 1.2 Các thành phần kiến trúc trong ROS [4]
Kiến trúc chung của ROS đƣợc phân chia thành 3 tầng:
- File System Level: Là tầng tổ chức hệ thống file của ROS nhƣ cấu trúc
thƣ mục, các tài nguyên.
- Computation Graph Level: Là nơi xử lý giao tiếp, dữ liệu giữa các tiến
trình trong một hệ thống hoặc giữa các hệ thống với nhau.
- Community Level: Là nơi cho phép các thành viên trong cộng đồng sử
dụng ROS chia sẻ kinh nghiệm, hiểu biết, thuật tốn.. thơng qua các module mã
nguồn mở của mình.

5



- FileSystem Level

Hình 1.3 Cấu trúc tầng FileSystem level [4]

Package
- Gói là đơn vị tổ chức mã phần mềm trong ROS. Mỗi gói có thể chứa thƣ
viện, tập tin thực thi (executables), tập tip kịch bản (scripts), hoặc những tập tin
khác.
- Manifests (package.xml): Manifest là một gói mơ tả chứa đựng thơng tin.
Nó sẽ cung cấp thơng tin về sự phụ thuộc giữa các gói và lƣu trữ thơng tin (meta
information) về gói đó nhƣ phiên bản, bảo trì, like version, maintainer, giấy phép,

ROS cung cấp hai cơng cụ có thể tạo gói tin đó là catkin và rosbuild. Cách
tạo gói tin có thể xem tại: />
6


Hình 1.4 Cấu trúc package của ROS sử dụng catkin [4]

Message types
Định nghĩa các message, đƣợc lƣu tại: my_package/msg/my_message.msg
Định nghĩa dữ liệu gửi trong ROS, thành phần giao tiếp của ROS.
Service types
Mô tả dịch vụ, đƣợc lƣu tại: my_package/srv/my_service.srv
Khai báo cấu trúc dữ liệu của request và response trong dịch vụ của ROS.
Code
Source code của một package trong ROS đƣợc lƣu trong thƣ mục src bên
trong thƣ mục chứa package, có thể tạo nhiều thƣ mục bên trong thƣ mục src này
để tiện quản lý source code theo mục đích sử dụng. Các file script sẽ đƣợc lƣu

riêng trong thƣ mục scripts. Ngồi bên trong thƣ mục chứa package cịn có thêm
thƣ mục include, bên trong thƣ mục này là các thƣ mục tƣơng ứng với các
package_name chứa các header của các package mà package đang xây dựng cần
dùng đến giống nhƣ khái niệm sử dụng thƣ viện(library) của ngôn ngữ C.
Stacks
Stack đƣợc sử dụng để đơn giản quá trình chia sẻ code. Một stack là một
thƣ mục chứa một hoặc nhiều package. Bên trong stack cũng chứa một file
7


manifest gọi là stack manifest 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/package khác mà
stack kế thừa.

Hình 1.5 Mối liên hệ giữa Stack và Package [4]

- Computation Graph Level

Hình 1.6 Các thành phần trong tầng Computation Graph [4]

Node
Node (nút) là một tập tin thực thi, nó dùng ROS để giao tiếp với các nút
khác. Có thể nói node là tế bào cấu tạo nên chƣơng trình ROS.
Master

8


Là một nút, nó có nhiệm vụ giúp các nút có thể tìm thấy nhau. Hay nói
cách khác, nó quản lý các nút.

Master cung cấp tên đăng ký và tra cứu đến các node khác. 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.

Hình 1.7 Mơ hình quản lý của master với các node [4]

Parameter server
Parameter Server là một phần của Master, cho phép dữ liệu về các node
đƣợc lƣu trữ trong một vị trí trung tâm và cho phép các node truy cập đến để tìm
kiếm thơng tin.
Messages
Là một loại dữ liệu để các nút có thể dùng thơng qua ROS để giao tiếp với
các nút khác.Trong ROS, tệp tin tin nhắn là các tập tin văn bản đơn giản mô tả
các trƣờng của một thông điệp ROS. Các kiểu dữ liệu trong tin nhắn là các kiểu
dữ liệu nguyên thủy. Chúng đƣợc sử dụng để tạo mã nguồn cho các tin nhắn
trong các ngơn ngữ khác nhau. Qua đó, giữa các nút sẽ giao tiếp đƣợc với nhau
mà không bị rào cản về mặt ngơn ngữ lập trình.

9


Hình 1.8 Các kiểu dữ liệu trong message [4]

Topic
Các nút có thể xuất bản tin nhắn tới chủ đề, đồng thời có thể đăng kí chủ đề
để nhận tin nhắn. Đây là cơ chế chính trong việc giao tiếp giữa các nút trong
ROS.
Service
Mọi giao tiếp giữa các nút trong ROS chủ yếu qua mơ hình xuất bản/ đăng
ký. Tuy nhiên, mơ hình này khơng phù hợp trong mơ hình u cầu / trả lời nhƣ là
lời gọi thủ tục từ xa (RPC- Remote Procedure Calls). Dịch vụ trong ROS cung

cấp cơ chế này.
Yêu cầu/ Trả lời đƣợc thực hiện thông qua tin nhắn, đƣợc định nghĩa bởi
một cặp tin nhắn: một giành cho yêu cầu, một giành cho trả lời.Một nút cung cấp
một dịch vụ dƣới dạng chuỗi tên, client sẽ gọi dịch vụ bằng cách gửi tin nhắn yêu
cầu và chờ tin nhắn trả lời.

10


Hình 1.9 Mơ hình hoạt động các dịch vụ trong ROS [4]

Bag
Bag là một file .bag có định dạng dùng để lƣu trữ và phát lại dữ liệu từ
messages, topic, service hay nói cách khác khi sử dụng Bag có thể biết điều gì đã
xảy với robot, cho phép debug chƣơng trình cho robot khi đã đƣa robot vào mơi
trƣờng thực tế.
- Community Level
Ở tầng này, cộng đồng sử dụng ROS có thể chia sẻ các kiến thức, source
code của mình thơng qua các kênh sau:
Distribution: ROS Distributions là bộ phiên bản các stable stack mà ngƣời
dùng có thể cài đặt. Nó giống nhƣ hệ thống quản lý phần mềm của Linux cho
phép ngƣời dùng dễ dàng cài đặt các stack/package theo version.
Repository: là nguồn tài nguyên dựa trên cộng đồng mã nguồn mở, trong đó
các viện nghiên cứu, trƣờng đại học khác nhau có thể cùng phát triển đồng thời
và công bố những mã nguồn cho các thành phần trong robot của riêng họ.
ROS wiki: là bách khoa mở lƣu trữ các tài liệu, hƣớng dẫn về ROS. Bất kỳ
ai cũng có thể đăng ký tài khoản để chia sẻ tài liệu, cập nhật, hay sử dụng, viết
bài hƣớng dẫn và đặt câu hỏi…Đây là một kênh tham khảo quan trọng bậc nhất
khi làm quen với ROS.


11


Mailing-list: Cho phép các thành viên có thể cập nhật thông tin, gửi các câu
hỏi/trả lời các thắc mắc về ROS qua email, từ đó hình thành lên một forum cho
các thành viên trong cộng đồng sử dụng ROS trao đổi với nhau.
1.2.2 Giới thiệu về kobuki
a, Khái niệm

Hình 1.10 Robot kobuki [5]
Kobuki, tên gọi đầy đủ iClebo Kobuki là một thiết bị di động giá rẻ, thiết kế
cho mục đích giáo dục và nghiên cứu trong lĩnh vực robot. Ngồi khả năng hoạt
động liên tục, Kobuki có thể cấp nguồn cho máy tính khác cũng nhƣ các bộ phận
cảm biến và bộ phận vận động. Kobuki sở hữu dụng cụ đo hành trình đƣợc cải
thiện bằng con quay hồi chuyển đã hiệu chỉnh, cho phép di chuyển với độ chính
xác cao.
b, Đặc tả chức năng
- Tốc độ di chuyển tịnh tiến tối đa: 70 cm/s
- Tốc độ quay góc tối đa: 180 deg/s (với tốc độ trên 110 deg/s, con quay hồi
chuyển sẽ giảm hiệu năng)
- Tải trọng: 5 kg (sàn cứng), 4 kg (thảm mềm)
- Cảm biến vách: Khơng chạy ra khỏi vách có độ sâu lớn hơn 5 cm
- Thời gian chạy: Từ 3 đến 7 tiếng tùy kích thƣớc pin
- Thời gian sạc: Từ 1.5 đến 2.6 tiếng tuỳ kích thƣớc pin

12


c, Đặc tả phần cứng
- Kết nối với máy vi tính qua cổng USB hoặc chân RX/TX

- Phát hiện quá tải động cơ: tự động ngắt nguồn khi dòng lớn hơn 3A
- Hành trình kế: 52 nhịp/enc, 2578.33 nhịp/vịng xoay, 11.7 nhịp/mm
- Con quay hồi chuyển: Đã hiệu chỉnh
- Bộ giảm chấn: trái, giữa, phải
- Cảm biến vách: trái, giữa, phải
- Cảm biến bánh xe: trái, phải
- Điện năng tiêu thụ: 5 V/1 A, 12 V/1.5 A, 12 V/5 A
- Pin: Lithium-ion, 14.8 V, 2200 mAh (loại nhỏ 4S1P)
- Tốc độ dữ liệu cảm biến: 50 Hz
- Đƣờng kính: 351.5 mm, chiều cao: 124.8 mm, cân nặng: 2.35 kg (khi lắp
pin loại nhỏ 4S1P)
d, Đặc tả phần mềm
- Bộ điều khiển viết bằng C++ cho Linux và Windows
- Sử dụng nút ROS
- Phần mềm mô phỏng Gazebo
1.2.3 Giới thiệu về hokuyo

Hình 1.11 Laser Hokuyo UTM-30LX [6]
Thiết bị laser Hokuyo UTM-30LX là thiết bị nhỏ, chính xác và tốc độ cao
ứng dụng trong các mơ hình robot. Thiết bị đƣợc sử dụng để nhận dạng môi
trƣờng, phù hợp sử dụng trên các hệ thống robot mang tính tự động cao.
a, Thơng số kỹ thuật
- Trọng lƣợng 370g
13


×