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

Sử dụng IMU và LIDAR phục vụ xe tự hành 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.78 MB, 73 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
SỬ DỤNG IMU VÀ LIDAR PHỤC VỤ XE TỰ HÀNH TRÊN
MÔI TRƯỜNG ROS

Giảng viên hướng dẫn: ThS. MAI CƯỜNG THỌ
Sinh viên thực hiện:

NGUYỄN TUẤN ĐẠT - 58131281
TRẦN TRƯƠNG NGỌC SƠN - 58133435

Khánh Hòa - 2020


BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
SỬ DỤNG IMU VÀ LIDAR PHỤC VỤ XE TỰ HÀNH TRÊN
MÔI TRƯỜNG ROS

Giảng viên hướng dẫn: ThS. MAI CƯỜNG THỌ
Sinh viên thực hiện:

NGUYỄN TUẤN ĐẠT - 58131281


TRẦN TRƯƠNG NGỌC SƠN - 58133435

Khánh Hòa – Tháng 6/2020


LỜI MỞ ĐẦU
Cuộc cách mạng 4.0 đã làm thay đổi mạnh mẽ các ngành công nghiệp, đặc biệt
là trong lĩnh vực cơng nghệ ơ tơ. Từ đó mảng “xe tự hành” được tất cả hãng xe trên khắp
thế giới quan tâm và phát triển các công nghệ liên quan đến mảng này. Đi đầu của mảng
“xe tự hành”, tập đoàn FPT đã và đang triển khai các dự án liên quan đến lĩnh vực
automotive đạt được nhiều kết quả khả quan. Một trong số các dự án đó là cuộc thi lập
trình xe tự hành dành cho sinh viên tồn quốc, tạo sân chơi cho các sinh viên tiềm năng
thỏa sức thể hiện năng lực của mình. Từ đó làm nền tảng có thể nói vào một ngày khơng
xa những chiếc xe tự hành sẽ được lăn bánh trên đường phố Việt Nam.
Về cơ bản, tự hành là khả năng một cỗ máy thực hiện nhiệm vụ của mình mà
khơng cần đến sự điều khiển của con người, có thể hiểu là cỗ máy đó có khả năng phản
ứng một cách thông minh với môi trường xung quanh. Vậy xe tự hành là một chiếc xe
có thể tự lái đến địa điểm hoặc mục tiêu xác định, có khả năng tránh né vật cản, xác định
làn đường đồng thời tuân theo các hiệu lệnh giao thông trên đường đi.
Đối với việc phát triển xe tự hành thì phần mềm đóng vai trị quan trọng nhất, nó
được ví như não bộ của chiếc xe, một chiếc xe tự hành sẽ được điều khiển 100% bởi
phần mềm. Các nghiên cứu trên xe tự hành tập trung vào hai lĩnh vực chính là: Phát hiện
làn đường và nhận dạng đối tượng.
Nhận dạng đối tượng là một phần quan trọng của xe tự hành, gần đây cơng nghệ
này đã có những bước phát triển rất lớn như nhận dạng đối tượng như xe đạp, người đi
bộ, ô tô …
Việc nhận dạng vật thể và xác đinh vị trí của ơ tơ khi tham gia giao thơng đó là
một vấn đề quan trọng của xe tự hành. Để một chiếc xe tự hành có thể hoạt động trên
đường phố, yêu cầu xử lý nhận dạng các vật thể xung quanh xe đó là một yêu cầu thiết
yếu với độ chính xác gần như là tuyệt đối, giúp xe có thể tránh né các loại vật cản động,

vật cản tĩnh hay quan trọng hơn hết đó là người tham gia giao thông. Hiện nay, ở nước
ta lĩnh vực này vẫn còn mới và chưa được nhiều người nghiên cứu cũng như ứng dụng.
Vì thế chúng tơi đã chon đề tài “SỬ DỤNG IMU VÀ LIDAR PHỤC VỤ XE TỰ HÀNH
TRÊN MÔI TRƯỜNG ROS” để làm đồ án tốt nghiệp của mình
Đề tài nghiên cứu sử dụng 2 thiết bị cảm biến là IMU và LiDAR xử lý qua môi
trường ROS (Robot Operating System) để giải quyết các bài toán đặt ra hỗ trợ cho xe tự
hành, qua quá trình nghiên cứu và thực nghiệm đã cho được kết quả khá tốt.


CAM ĐOAN CỦA SINH VIÊN
Chúng tôi xin cam đoan đây là cơng trình nghiên cứu của chúng tơi và được
sự hướng dẫn khoa học của ThS. Mai Cường Thọ. Các nội dung nghiên cứu, kết
quả trong đề tài này là trung thực và chưa cơng bố dưới bất kỳ hình thức nào trước
đây. Những nội dung trong phần khảo sát, phân tích, nhận xét và đánh giá được
chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham
khảo. Ngoài ra, trong đồ án cịn tham khảo phần mềm của nhóm tác giả khác đều
có trích dẫn và chú thích nguồn gốc. Nếu phát hiện có bất kì sự gian lận nào chúng
tơi xin hoàn toàn chịu trách nhiệm về nội dung đồ án của mình. Trường Đại Học
Nha Trang khơng liên quan đến những vi phạm tác quyền, bản quyền do chúng
tôi gây ra trong quá trình thực hiện.
Nha Trang, tháng 07 năm 2019
Sinh viên

Sinh viên

Nguyễn Tuấn Đạt

Trần Trương Ngọc Sơn



LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô
đã giảng dạy em trong suốt thời gian học tập tại khoa công nghệ thông tin trường
Đại Học Nha Trang, đặc biệt em xin cảm ơn tới THS. Mai Cường Thọ đã tạo điều
kiện và giới thiệu cho chúng em cuộc thi Cuộc Đua Số và nhiệt tình hướng dẫn
em hoàn thành đồ án.
Em cũng xin chân thành cảm ơn sự giúp đỡ của các anh chị và tập đoàn
FPT Software đã tạo điều kiện cho em có sân chơi thi đua, học hỏi kinh nghiệm,
tìm hiểu cung cấp các kiến thức và tài liệu cho em trong quá trình thi đua và làm
đồ án.
Trong quá trình học tập, cũng như là trong q trình làm đồ án, khó tránh
khỏi sai sót, rất mong các thầy, cơ bỏ qua. Đồng thời do trình độ lý luận cũng như
kinh nghiệm thực tiễn cịn hạn chế nên báo cáo đồ án khơng thể tránh khỏi những
thiếu sót, em rất mong nhận được ý kiến đóng góp của thầy, cơ để em học hỏi
thêm được nhiều kinh nghiệm.
Em xin chân thành cảm ơn!
Sinh viên

Sinh viên

Nguyễn Tuấn Đạt

Trần Trương Ngọc Sơn


TÓM TẮT ĐỒ ÁN
Bài viết chia thành 4 chương
Chương I: Tổng quan về đề tài:
Phần này trình bày lý do tại sao tôi chọn đề tài này, các yêu cầu của đề tài và
tổng quan về phương pháp nghiên cứu hoạt động.

Chương II: Cơ sở lý thuyết:
1. Tổng quan về ROS (Robot Operation System)
Mục này tập trung giới thiệu về ROS và các thành phần và cấu trúc hệ thống
của hệ điều hành ROS.
-

ROS là một hệ điều hành phổ biến đối với lĩnh vực xe tự hành cũng như
các hệ thống robot.

-

ROS là một bản phân phối của Linux, được tùy biến để sử dụng lập trình
cho xe tự lái, robot … Phần này chúng tôi sẽ giới thiệu qua cách tiếp cận
với ROS và các thư viện bên trong ROS để phục cho việc lập trình xe tự
hành.

2. Tổng quan về bộ cảm biến IMU và LiDAR
Đối với xe tự hành, vai trò của một hệ thống “giác quan” là rất quan trọng. Một
chiếc xe tự hành có thể được tích hợp nhiều các cảm biến như thiết bị cảm biến đo
lường qn tính, khoảng cách, hình ảnh, GPS…
Mục này tập trung giới thiệu một số lý thuyết, cấu trúc, khái quát cách hoạt
động và ứng dụng của IMU và LiDAR. Đồng thời đề cập đến một số các nhược điểm
khi sử dụng IMU, đưa ra một số bộ lọc để giải quyết vấn đề của IMU.
Giới thiệu về 2 thiết bị cảm biến mà chúng tôi nghiên cứu để thực hiện đồ án.
MPU9250 một trong những thiết bị IMU được sử dụng phổ biến phục vụ trong việc
xác định vị trí của xe và LiDAR A2 thiết bị quét laser dùng để xác định khoảng cách
từ thiết bị đến mục tiêu. Phần này chúng tơi sẽ nói qua một số thông tin như sau:
-

Sơ đồ kết nối của MPU9250 và LiDAR.

Nguyên lý hoạt động của MPU9250 và LiDAR
Sử dụng giao diện I2C giúp MPU9250 giao tiếp với các thiết bị bên
ngoài.
Đặc điểm kỹ thuật của LiDAR A2.

3. Bộ lọc Kalmam Filter
Phần này giới thiệu về bộ lọc Kalman Filter


-

Nguyên lý thực hiện.

4. Giới thiệu SLAM
Chương III: Ứng dụng IMU và LiDAR vào xe tự hành
-

Kalman Filter trong toán rời rạc.
Nguyên lý hoạt động của SLAM.

-

Kết hợp SLAM và KF.
Ứng dụng LiDAR vào xe tự hành.

-

Ứng dụng IMU vào xe tự hành.

Chương IV: Kết luận và hướng phát triển

Phần này trình bày kết quả đạt được và áp dụng kiến thức, hướng phát triển trong
tương lai.


MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................................. 3
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ....................................................................... 1
1.1. Lý do chọn đề tài ...................................................................................................... 1
1.2. Yêu cầu đề tài ........................................................................................................... 2
1.3. Giải pháp nghiên cứu ................................................................................................ 3
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ................................................................................ 4
2.1. Tổng quan về ROS ................................................................................................... 4
2.1.1. Giới thiệu ROS ..........................................................................................4
2.1.2. Một số thành phần của ROS ......................................................................4
2.1.3. ROS COMPUTATION GRAPH LEVEL .................................................6
2.1.4. Làm việc cùng ROS ...................................................................................8
2.2. Tổng quan về bộ cảm biến IMU và LiDAR ........................................................... 11
2.2.1. Bộ cảm biến IMU ....................................................................................11
2.2.2. Bộ cảm biến LiDAR ................................................................................15
2.3. MPU9250................................................................................................................ 16
2.3.1. Giới thiệu chung ......................................................................................16
2.3.2. Kết nối hệ thống.......................................................................................17
2.3.3. Nguyên lí hoạt động ................................................................................19
2.3.4. Giải pháp MPU-9250 sử dụng giao diện I2C ..........................................20
2.3.5. Định hướng các trục của MPU-9250 .......................................................21
2.4. LIDAR A2 .............................................................................................................. 22
2.4.1. Giới thiệu chung ......................................................................................22
2.4.2. Đặc điểm kỹ thuật ....................................................................................26
2.5. Bộ lọc Kalman Filter .............................................................................................. 29
2.5.1. Giới thiệu chung ......................................................................................29

2.5.2. Bộ lọc Kalman filter cho toán rời rạc ......................................................30
2.6. SLAM ..................................................................................................................... 32
2.6.1. Giới thiệu về SLAM ................................................................................32
2.6.2. Nguyên lý hoạt động của SLAM ............................................................. 33


2.6.3. SLAM dựa trên bộ lọc Kalman filter mở rộng ........................................34
2.6.4. Hiện trạng của SLAM..............................................................................38
CHƯƠNG 3. ỨNG DỤNG IMU VÀ LIDAR VÀO XE TỰ HÀNH ........................... 39
3.1. Giới thiệu thiết bị và hướng xử lý .......................................................................... 39
3.1.1. Giới thiệu thiết bị .....................................................................................39
3.1.2. Hướng xử lý ............................................................................................. 40
3.2. Ứng dụng LiDAR vào xe tự hành .......................................................................... 40
3.2.1. Phân tích dữ liệu ......................................................................................40
3.2.2. Tổ chức lưu trữ dữ liệu ............................................................................43
3.2.3. Xử lý dữ liệu ............................................................................................ 43
3.3. Ứng dụng IMU vào xe tự hành ............................................................................... 45
3.3.1. Phân tích dữ liệu ......................................................................................45
3.3.2. Thu thập dữ liệu và tạo map ....................................................................45
3.3.3. Theo dõi vị trí xe theo thời gian thực ......................................................48
CHƯƠNG 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................. 50
4.1. Kết luận ................................................................................................................... 50
4.2. Những vấn đề hạn chế sau khi thực hiện đề tài ...................................................... 50
4.3. Hướng phát triển ..................................................................................................... 51
PHỤ LỤC ...................................................................................................................... 53


DANH MỤC CÁC TỪ VIẾT TẮT




ROS - Robot Operation System
BSD - Berkeley Software Distribution



VSC - Version System Control




SLAM - Simultaneous Localization and Mapping
EKF - Extended Kalman filter




RANSAC - Random Sampling Consensus
RBPF - Rao-Blackwellization Particle Filter





PF - Particle Filter
MEMS - Micro-Electro-Mechanical Systems
ADCs - Analog-to-Digital Converter





DMP - Digital Motion Processor™
FIFO - First-In-First-Out





MIPS - First-In-First-Out
DSP - Digital Signal Processor
ACC - Adaptive Cruise Control


DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Hình 1.1: Mơ phỏng hệ thống xe tự hành cơ bản ............................................................2
Hình 2.1: Cấu trúc của ROS ............................................................................................5
Hình 2.2: Cấu trúc của ROS package ..............................................................................5
Hình 2.3: Ví dụ file message ...........................................................................................7
Hình 2.4: Ví dụ file service .............................................................................................7
Hình 2.5: Hình ảnh thiết bị IMU đời đầu ......................................................................11
Hình 2.6: IMU dựa trên hai loại cảm biến.....................................................................12
Hình 2.7: IMU dựa trên 3 loại cảm biến .......................................................................13
Hình 2.8: Sơ đồ chân MPU9250 ...................................................................................18
Hình 2.10b: Giao tiếp qua SPI .......................................................................................18
Hình 2.10a: Giao tiếp qua I2C .......................................................................................18
Hình 2.11: Sơ đồ khối MPU9250 ..................................................................................19
Hình 2.12: Sơ đồ kết nối qua I2C ..................................................................................21
Hình 2.13: Định hướng độ nhạy các trục và phân cực của phép quay đối với
cảm biến gia tốc và con quay hồi chuyển. .....................................................................21
Hình 2.14: Định hướng độ nhạy các trục của cảm biến từ trường. ............................... 22

Hình 2.15: LIDAR .........................................................................................................22
Hình 2.16: Thành phần hệ thống LiDAR ......................................................................23
Hình 2.17: Mơ tả hoạt động lidar ..................................................................................24
Hình 2.18: Bản đồ mơi trường thu được từ lidar ...........................................................25
Hình 2.19: Khung dữ liệu điểm mẫu LiDAR ................................................................ 26
Hình 2.20: Vùng thu nhận tín hiệu quét ........................................................................28
Hình 2.21: Định nghĩa hệ thống tọa độ qt dữ liệu qt LiDAR ................................ 29
Hình 2.22: Mơ tả thuật tốn Kalman .............................................................................31
Hình 2.23:Mơ hình bộ lọc Kalman cho hệ tuyến tính ...................................................32
Hình 2.24: Sơ đồ quy trình SLAM ................................................................................34
Hình 2.25: Bước khai thác. Robot qt mơi trường và nhận dữ liệu. ...........................36
Hình 2.26: Robot di chuyển vị trí ..................................................................................36


Hình 2.27: Quét và liên kết dữ liệu ...............................................................................37
Hình 2.28: Bước cập nhật. Đường nét liền là dữ liệu trước đó, đường nét đứt là dữ liệu
từ vị trí hiện tại ..............................................................................................................37
Hình 3.1: Sơ đồ phần cứng của xe.................................................................................39
Hình 3.2: Sơ đồ tổng quan về quá trình xử lý dữ liệu thiết bị và kết quả đầu ra ..........40
Hình 3.3: Ví dụ dữ liệu gửi về của LiDAR ...................................................................41
Hình 3.4: Hệ trục tọa độ của LiDAR .............................................................................42
Hình 3.5: ví dụ thực tế vật cản thu nhận từ LiDAR của xe ...........................................42
Hình 3.6: Vật cản ngồi tầm qt của xe.......................................................................44
Hình 3.7: Vật cản trong tầm qt của xe .......................................................................44
Hình 3.8: Ví dụ dữ liệu gửi về từ IMU ..........................................................................45
Hình 3.9: Biểu đồ biểu diễu dữ liệu linear_acceleration.y chưa qua bộ lọc..................46
Hình 3.10: Biểu đồ biểu diễu dữ liệu linear_acceleration.y đã qua bộ lọc ...................46
Hình 3.11: Sa hình ảo dựng từ dữ liệu thu thập ở bản đồ vòng 1 chung kết Cuộc đua
số mùa 3 năm 2018-2019 .............................................................................................. 48
Hình 3.12: Đi thẳng .......................................................................................................49

Hình 3.13: Ngã 3 ...........................................................................................................49

Bảng 2.1: Pin out và mơ tả tín hiệu của thiết bị ............................................................ 17
Bảng 2.2: Bảng thông tin dữ liệu điểm mẫu của lidar ...................................................25
Bảng 2.3: Hiệu năng của LiDAR ..................................................................................27
Bảng 2.4: Thông số kỹ thuật laser .................................................................................28


CHƯƠNG 1.
1.1.

TỔNG QUAN VỀ ĐỀ TÀI

Lý do chọn đề tài
Với sự phát triển mạnh mẽ của cách mạng công nghiệp 4.0, thế giới đang bước

sang một thời đại hoàn toàn mới – thời đại của tự động hóa. Nơi mà công nghệ robot
được ứng dụng vào mọi lĩnh vực của đời sống, đặc biết là lĩnh vực của các thiết bị tự
hành như: Máy bay không người lái, xe tự hành, robot khảo sát địa hình… Hiện nay
cơng nghệ phần mềm và công nghệ phần cứng về lĩnh vực thiết bị tự động đang ở giai
đoạn phát triển bứt tốc tích hợp vào các thiết bị tự động đem lại lợi ích cao trong nhiều
lĩnh vực. Phần cứng đóng vai trò rất quan trọng trong một thiết bị tự động, dùng để tiếp
nhận dữ liệu thông tin từ môi trường bên ngồi từ đó kết hợp với phần mềm bên trong
để xử lý trả về kết quả hành động của thiết bị. Hầu hết các thiết bị tự động hiện nay đều
được tích hợp hệ thống camera 2D hoặc 3D đảm nhiệm nhiệm vụ xử lý hình ảnh của
thiết bị, có thể đây là hê thống tầm nhìn của thiết bị. Nhưng như vậy là chưa đủ cho một
thiết bị tự hành, dữ liệu cần xử lý không chỉ dừng lại ở hình ảnh mà cịn nhiều loại dữ
liệu khác như âm thanh, từ trường, sóng… Từ đó thiết bị tự hành đã được tích hợp thêm
nhiều loại cảm biến đảm nhiệm vai trò như một hệ thống “giác quan” của thiết bị, tiêu
biểu nhất đó là LiDAR và IMU. Việc nghiên cứu và ứng dụng kỹ thuật giao tiếp giữa

máy tính và mơi trường bên ngồi đang là vấn đề được các nhà phát triển ứng dụng quan
tâm và phát triển. Với ý nghĩa và mục đích đã nêu trên, đề tài nghiên cứu và ứng dụng
LiDAR và IMU vào xe tự hành là rất cần thiết cho hiện tại. Thế mạnh khi sử dụng
LiDAR và IMU mang lại nhiều ưu điểm như: khả năng tương thích với nhiều loại thiết
bị mạch chủ, đã được cải tiến nhiều về chất lượng và đem lại hiệu quả cao, với mức chi
phí thấp, kích thước nhỏ gọn, phần mềm hoạt động, cộng đồng thuật toán xử lý mã
nguồn mở phát triển mạnh mẽ.
Từ nhưng ưu điểm đã nói trên, LiDAR và IMU hiện tại vẫn đang được các hãng
sản xuất nổi tiếng không ngừng cải tiến để ngày càng mang lại nhiều lợi ích về mặt kỹ
thuật và kinh tế. Một trong các chức năng cơ bản mà mỗi thiết bị robot tự hành phải có
là phát hiện vật cản trong q trình vận động, đồng thời vẫn có thể thức hiện các nhiệm
vụ hiện tại như di chuyển theo quỹ đạo, lịch trình, bám mục tiêu… Nên tơi đã chọn đề
tài sử dụng LiDAR và IMU để xử lý vấn đề vật cản và tìm đường của xe tự hành làm đồ
án tốt nghiệp để phục vụ cho cuộc thi “Cuộc đua số” và đồng thời cũng là đề tài dùng
để báo cáo đồ án tốt nghiệp của chúng tôi.
Để vận hành một chiếc xe tự hành (hình 1.1) trong thực tế, đòi hỏi chiếc xe phải
được trang bị một hệ thống cảm biến hiện đại. Và các loại cảm biến này phải được lập
1


trình để thu thập các thơng tin từ mơi trường bên ngồi, xử lý dữ liệu tại hệ thống chính
của xe từ đó sẽ đưa ra các quyết định để xe thực hiện.
Sau khi tham gia cuộc thi “Cuộc đua số” và vượt qua được vòng loại của cuộc thi
chúng tôi đã được ban tổ chức cung cấp cho một xe mơ hình mơ phỏng xe tự lái với kích
thước bằng 1/7 xe ơ tơ thật. Từ cở sở đó chúng tôi quyết định sử dụng thiết bị cảm biến
LiDAR và IMU để giải quyết một số bài toán của xe tự hành. Bài tốn thứ nhật đó là sử
dụng LiDAR để nhận diện vật cản xung quanh xe, bài toán tiếp theo sử dụng IMU và
LiDAR để xây dựng bản đồ từ đó xác định được vị trí của xe. Để có thể phục vụ cho
vịng thi tiếp theo của cuộc thi và đồng thời cũng là đề tài dùng để báo cáo đồ án tốt
nghiệp của chúng tơi.

Ngồi chúng tơi ra cịn có một nhóm khác thuộc đội tuyển tham gia cuộc thi đã
chọn phần đề tài xử lý hình ảnh qua camera Astra 3D để trình bày báo cáo. Việc kết hợp
thành quả nghiên cứu của hai nhóm sẽ giúp cho các thuật tốn điều khiển xe đem lại kết
quả tốt hơn từ đó mang lại được kết quả tốt hơn cho cuộc thi.

Hình 1.1: Mơ phỏng hệ thống xe tự hành cơ bản
1.2.

Yêu cầu đề tài
Nội dung yêu cầu thực hiện trong đề tài:

- Tìm hiều về LiDAR, IMU và thuật toán xử lý nhiều Kalman Filter.
- Nhận dạng vật cản bằng LiDAR trong khi di chuyển của xe.
- Xác định vị trí của xe thơng qua các phép đo hình học qua dữ liệu được trả về từ
IMU.

2


-

Thực hiện cài đặt môi trường ROS dùng để tương tác giữa LiDAR và IMU với

hê thống.
-

Thực hiện cài đặt một số chương trình giả lập thực hiện demo các chức năng nhận

diện vật cản và xác định vị trí của xe trên máy tính.
1.3.


Giải pháp nghiên cứu

Để giải quyết vấn đề đặt ra, qua tìm hiểu các tài liệu, chúng tôi chọn phương pháp
nghiên cứu sau đây:
- Nghiên cứu lý thuyết định vị và bản đồ hóa bằng phương pháp SLAM đã được
áp dụng trên thế giới.
- Tìm hiều về cấu tạo cách hoạt động của các thiết bị ngoại vi IMU và LiDAR để
phục vụ cho việc thu thập dữ liệu cho hệ thống xử lý.
- Nghiên cứu lập trình trên hệ điều hành ROS (Robot Operation System), thu thập
thông tin từ các cảm biến, xử lý dữ liệu và đưa ra các quyết định.

-

Thử nghiệm chương trình và đánh giá kết quả.

3


CHƯƠNG 2.
2.1.

CƠ SỞ LÝ THUYẾT

Tổng quan về ROS

2.1.1. Giới thiệu ROS
ROS (Robot Operation System) là một hệ điều hành cho robot cung cấp các thư
viện và các công cụ để giúp các nhà phát triển phần mềm tạo ra các ứng dụng cho robot.
Nó là một tập hợp các cơng cụ, thư viện và quy ước nhằm đơn giản hóa nhiệm vụ tạo ra

hành vi robot phức tạp và mạnh mẽ trên nhiều nền tảng robot khác nhau. Nó cung cấp
phần cứng trừu tượng, trình điều khiển thiết bị, thư viện, hiển thị trực quan, tin nhắn
ngưởi nhận, quản lý gói, và nhiều hơn nữa. ROS được cấp phép theo giấy phép nguồn
mở BSD.
ROS được xuất hiện lần đầu tiên vào năm 2007 và đang phát triển rất nhanh, được
sử dụng ngày càng thường xuyên hơn trên toàn thế giới, ngay cả trong các công ty robot
cao cấp. Tại sao? Bởi vì việc tạo ra các phần mềm robot đa năng thực sự mạnh mẽ là rất
khó. Từ quan điểm của robot, các vấn đề có vẻ tầm thường đối với con người thường
nhưng khác nhau rất nhiều giữa các tình huống của nhiệm vụ và sự tác động của mơi
trường. Đối phó với các biến thể này khó đến mức khơng thể một cá nhân, phịng thí
nghiệm hoặc một tổ chức nào có thể hy vọng tự làm được[1].
Do đó, ROS được xây dựng từ đầu và khuyến khích phát triển một phần mềm
robot mà mọi người đều có thể sử dụng và tiếp tục phát triển. Ví dụ, một phịng thí
nghiệm có các chun gia thiết lập bản đồ mơi trường trong nhà và có thể đóng góp một
hệ thống tốt nhất trên thế giới để xây dựng bản đồ. Một nhóm khác có các chuyên gia
sử dụng bản đồ để điều hướng, và một nhóm khác đã phát hiện ra một phương pháp thị
giác máy tính hoạt động tốt để nhận ra các vật thể nhỏ trong bản đồ đó. ROS được thiết
kế riêng cho các nhóm như thế này để hợp tác và xây dựng trên công việc của nhau[1].
2.1.2. Một số thành phần của ROS
2.1.2.1. Cấu trúc phân lớp hệ thống ROS
ROS có thể được gọi là một siêu hệ thống.
Tương tự như mọi hệ điều hành khác, các tệp của ROS được tổ chức trên đĩa
cứng như mơ tả trong hình 2.1.
• Package: Đơn vị cơ bản nhất của ROS, chứa các quy trình được gọi là nút (node).
• Package manifest (tệp .xml): là một tệp bên trong package, chứa các thông tin về
package.
4


• MetaPackage: một hoặc nhiều package được kết nối rời rạc với nhau để tạo thành

một package logic.
• MetaPackage
manifest (tệp .xml): tương
tự như package manifest
nhưng có khai báo thêm
thẻ <export>.
• Messenger
(.msg):
Kiểu thơng tin được các
quy trình sử dụng để giao
tiếp với nhau.
• Services (.srv): một
kiểu yêu cầu/trả lời giữa
các quy trình.
• Repositories: Hầu hết
ROS được duy trì bằng Hệ
Hình 2.1: Cấu trúc của ROS
thống kiểm soát phiên bản
(VSC). Repositories là tập hợp các tệp chia sẻ trong cùng VSC.
2.1.2.2. ROS package
Một ROS package thơng thường có cấu trúc như trong hình 2.2.
• CMakeList.txt: Tệp
chứa các chỉ thị về cách
biên dịch gói.
• package.xml:
Duy
nhất trong package
• config: Chứa các tệp
cấu hình.
• include: Chứa các

header/libraries.
• script: Chứa các tập
tin code python.
Hình 2.2: Cấu trúc của ROS package
• src: Chứa các tập tin
code C++.
• launch: Chứa các tập tin .launch được sử dụng để chạy nhiều node cùng một lúc.
• msg: Chứa các tệp .msg.
• srv: Chứa các tệp .srv.
• Action: chứa các tệp .action.

5


2.1.3. ROS COMPUTATION GRAPH LEVEL
Việc tính tốn trong ROS được thực hiện bằng cách sẻ dụng mạng của một quá
trình được gọi là các nút ROS (ROS nodes).
Mạng tính tốn này được gọi là biểu đồ tính tốn.
Một số khái niệm chính về biểu đồ tính tốn:
• Nodes: Q trình thực hiện tính tốn, được viết bởi người sử dụng ROS. Mỗi
node quy định một chức năng / quy trình thực hiện đơn giản vào cơng việc cuối cùng.
• Master: Cung cấp tên đã đăng ký và tra cứu tất cả các node khác.
• Parameter server: Một phần của master cho phép dữ liệu lưu ở vị trí trung tâm.
Tất cả các node có thể truy cập và chỉnh sửa.
• Messages: Các node giao tiếp với nhau bằng các tin nhắn, đó là các cấu trúc dữ
liệu. Các tin nhắn này được lưu trữ trong các tệp .msg.
• Topics: Message được vận chuyển qua các tuyến được gọi là topic.
• Service: Trong một số trường hợp, việc liên lạc qua các message đơn giản là
không đủ. Service (được lưu trong tệp .srv) là một kiểu tương tác yêu cầu / phản hổi
nhanh.

• Logging: Trong trường hợp cần lưu trữ dữ liệu, ROS cung cấp hệ thống ghi nhật
ký thông qua Bagfiles.
2.1.3.1. Nodes
ROS nodes là các q trình thực hiện tính toán được viết bởi người sử dụng ROS
(roscpp, rospy, v.v.).
Các node giao tiếp với nhau bằng các ROS topics, services và parameters.
Một package có thể có nhiều node, mỗi node xử lý một tính tốn/ chức năng.
Mỗi node có duy nhất một tên để nhận dạng chức năng của chúng trong hệ thống.
2.1.3.2. Messages
ROS messages là cách các node sử dụng để giao tiếp với nhau.
ROS messages là một loại dữ liệu có cấu trúc đơn giản bao gồm các kiểu trường
(kiểu dữ liệu nguyên thủy và mảng của kiểu dữ liệu nguyên thủy).
ROS messages là giao tiếp một chiều.
Node gửi message được gọi là publisher.
Node nhận message được gọi là subcriber.

6


ROS messages được lưu trữ trong các tệp .msg, các tệp được lưu trữ ở thư mục
msg của package.
Ví dụ về một nội dung trong tệp .msg (Lưu ý: header là một kiểu đặc biệt trong
ROS, chứa các thông tin về thời gian và tọa độ thường được sử dụng trong ROS):

Hình 2.3: Ví dụ file message
2.1.3.3. Topics
ROS topics được gọi là tuyến nơi mà các message được trao đổi.
Pub/Sub được tách riêng, có nghĩa là có thể có nhiều publisher và subcriber vào
cùng một topic.
Subcriber chỉ nhận được message khi kiểu dữ liệu trùng với kiểu dữ liệu của

publisher.
2.1.3.4. Services
ROS service là một kiểu của ROS message.
ROS service chứa trường yêu cầu và trường phản hồi, cách nhau bởi dấu “---",
có dạng tương tự như ROS message.
ROS service là giao tiếp hai chiều (yêu cầu/phản hồi).
Node gửi yêu cầu và chờ phản hồi được gọi là client.
Node nhận yêu cầu và phản hồi được gọi là service.
ROS service được lưu trữ trong các tệp .srv, các tệp được lưu trữ ở thư mục srv
của package.
Ví dụ về nội dung của tệp .srv:

Hình 2.4: Ví dụ file service
7


2.1.3.5. Bags
ROS bags (tệp .bags) được sử dụng và lưu trữ dữ liệu message từ topic và service.
ROS bag có thể đăng ký một hoặc nhiều topic và lưu trữ dữ liệu của tin nhắn
trong cùng một tệp khi nhận được.
Bag chủ yếu được sử dụng để lưu trữ dữ liệu.
2.1.3.6. Master
ROS master chính là điểm trung tâm, liên kết các tên duy nhất và ID với các thành
phần hoạt động của ROS trong hệ thống.
Khi một node được tạo, các thơng tin chi tiết của nó sẽ được đăng ký trên
ROS master.
Khi một node publish một topic, nó sẽ đưa các thông tin của topic cho
ROS master.
ROS master sẽ kiểm tra subcriber(s) của một topic và chia sẻ thông tin của
publisher đó cho chúng.

Khi các publisher/subcriber được kết nối, ROS master khơng có vai trị gì trong
giao tiếp giữa chúng.
2.1.4. Làm việc cùng ROS
Hầu hết các chức năng của ROS được truy cập thơng qua các dịng lệnh.
Phần này sẽ bao gồm một số lệnh thường được sử dụng/hữu ích khi sử dụng ROS.
Lưu ý: phải cài ROS với phiên bản đầy đủ và thiết lập không gian làm việc cần
thiết trước khi sử dụng.
2.1.4.1. Package
catkin_create_pkg <depend1> <depend2> …: Tạo
một package mới tại thư mục hiện tại với dependecies được đề cập.
catkin_make: Xây dựng toàn bộ package trong workspace.
rospack: Lấy thông tin của ROS package.
rosdep: Cài đặt tất cả dependency cho package
roscd: Thay đường dẫn thư mục hiện hành bằng đường dẫn của package (hoạt
động như cd thông thường).
8


roscp: Sao chép một tệp trong gói.
rosed: Chỉnh sửa một tệp (trình chỉnh sửa mặc định là vim, có thể thay đổi).
rosrun: Chạy một tệp thực thi bên trong package.
2.1.4.2. Node
rosnode info <node_name>: Lấy thơng tin về node có tên là node_name.
rosnode kill <node_name>: Buộc dừng node node có tên là node_name.
rosnode list: Liệt kê tất cả các node.
rosnode machine <machine_name>: Liệt kê các node đang chạy trên một
máy có tên là machine_name.
rosnode ping: Kiểm tra kết nối đến node.
rosnode cleanup: Loại bỏ các node đã đăng ký nhưng ko thể truy cập.
2.1.4.3. Message

rosmsg show <message>: Hiển thị mô tả của message.
rosmsg list: Liệt kê tất cả các messages.
rosmsg md5: Hiển thị mã md5sum của message (kiểm tra để xác nhận
publisher/subcriber đang trao đổi cùng một kiểu dữ liệu).
rosmsg packages : Liệt kê các messages được
chứa trong các package.
2.1.4.4. Topic
rostopic bw /topic: Hiển thị băng thông được sử dụng bởi topic.
rostopic echo /topic: Hiển thị nội dung của topic theo một định dạng
dễ đọc.
rostopic find /message_type: Tìm topic bằng cách sử dụng kiểu message
đã cho.
rostopic hz /topic: Hiển thị tần suất publish của topic.
rostopic info /topic: Hiển thị thông tin về topic đang hoạt động.
rostopic list: Hiển thị toàn bộ các topic đang hoạt động.

9


rostopic pub /topic message_type args: Publish một giá trị cho topic
với kiểu message_type.
rostopic type /topic: Hiển thị kiểu message của topic đã cho.
2.1.4.5. Service
rossrv: Dược sử dụng để cung cấp thông tin liên quan đến định nghĩa ROS
service (tệp .srv). Lệnh này tương tự như rosmsg và không được đề cập lại.
rosservice call /service args: Gọi service bằng cách sử dụng các
đối số.
rosservice find service_type: Tìm service với kiểu service đã cho.
rosservice info /services: Hiển thị thông tin service.
rosservice list: Hiển thị các services đang chạy trên hệ thống.

rosservice type /service: Hiển thị kiểu của service đã cho.
2.1.4.6. Parameter
rosparam list: Liệt kê tất cả các tham số hiện có.
rosparam set <value>: đặt giá trị cho tham số đã cho.
rosparam get : Lấy giá trị từ một tham số đã cho.
rosparam load <.yaml_file>: Nạp các tham số đến server từ tệp .yaml
rosparam dump <.yaml file>: Lưu các tham số hiện có vào tệp .yaml
rosparam delete : Xóa các tham số đã cho.
2.1.4.7. Một số lệnh khác
roscore: Khởi động ROS master (đây là lệnh cần thiết để chạy một ROS node).
rosbag record <topic_1> <topic_2> -o <bag_name>: Ghi lại dữ liệu
của topic đã cho vào một tệp .bag với tên đã cho.
rosbag play <bag_name>: Phát lại tệp bag đã cho.

10


2.2.

Tổng quan về bộ cảm biến IMU và LiDAR

2.2.1. Bộ cảm biến IMU
2.2.1.1. Giới thiệu chung
IMU (Inertial Measurement Unit) là một thiết bị đơn vị đo lường quán tính. Bản
thân nó được tích hợp từ bộ cảm biến gia tốc (Accelerometer) và bộ cảm biến con quay
hồi chuyển (Gyroscope) có chức năng cung cấp thơng tin về góc quay và độ nghiêng
của hệ thống. Một số cịn được tích hợp thêm bộ cảm biến từ trường (Magnetometer)
cung cấp thêm thông tin về hướng. Một thiết bị IMU phổ biến sẽ được tích hợp cả ba bộ
cảm biến trên, hoạt động bằng cách phát hiện sự thay đổi về: cao độ (Pitch), cuộn (Roll)
và ngáp (Yaw). Một thiết bị IMU phổ biến sẽ được tích hợp cả ba bộ cảm biến trên, hoạt

động bằng cách phát hiện sự thay đổi về: cao độ (Pitch), cuộn (Roll) và ngáp (Yaw).
Lịch sử của IMU bắt đầu vào những năm
1930, IMU được sử dụng trong điều hướng máy
bay và các thiết bị lớn. Vì nó hạn chế được chủ
yếu về kích thước, chi phí và cả tiêu thụ điện
năng, việc sử dụng IMU vào thời điểm đó bị hạn
chế để áp dụng số lượng lớn thiết bị. Do đó
khơng phù hợp với các thiết bị có kích thước nhỏ
và ứng dụng để phục vụ người dùng. Cho đến
gần đây, hệ cơ điện thu nhỏ chế tạp bằng cơng

Hình 2.5: Hình ảnh thiết bị IMU
đời đầu

nghệ siêu nhỏ (Micri-Electro-MechanicalSystems – MEMS) IMU được quảng bá rất hấp
dẫn về tính năng với chi phí thấp, nhỏ gọn và điện năng xử lý thấp. Vì thế nhu cầu sử
dụng của IMU ngày càng tăng cao.
-

Bộ cảm biến gia tốc (Accelerometer): Bộ cảm biến gia tốc đơn giản là một cảm

biến đo gia tốc (sự thay đổi vận tốc) của bản thân nó và sẽ gồm 3 trục XYZ ứng với
3 chiều không gian. Một cảm biến gia tốc có thể được sử dụng để đó trọng lực như
một lực hướng xuống khi đó sẽ bao gồm cả trọng lực. Cảm biến gia tốc có thể cung
cấp cho chúng ta về vận tốc tương đối và vị trí tương đối của thiết bị, nhưng với độ
chính xác khơng cao.
- Bộ cảm biến con quay hồi chuyển (Gyroscope): Trong khi cảm biến gia tốc có
thể đo được gia tốc tuyến tính, bộ cảm biến con quay hồi chuyển có thể đo được các
chuyển động xoắn hoặc chuyển động quay. Bộ cảm biến con quay hồi chuyển đo vận
tốc góc của 3 trục: cao độ (yaw – trục x), cuộn (roll – trục y), ngáp (yaw – trục z).

11


Một bộ cảm biến con quay hồi chuyển có thể được sử dụng đế xác định hướng đối
tượng trong không gian 3D. Mặc dù bộ cảm biến con quay hồi chuyển khơng có
khung tham chiếu ban đầu (như trọng lực), ta có thể kết hợp dữ liệu của nó với cảm
biến gia tốc để có được vị trí góc.
- Bộ cảm biến từ trường (Magnetometer): Bộ cảm biến từ trường, đúng như tên
gọi của nó, là bộ cảm biến dùng để đo từ trường. Bộ cảm biến từ trường có thể phát
hiện các dao động từ trường của Trái Đất. Thơng qua những biến động đó, cảm biến
sẽ tìm thấy vector định hướng về phía Bắc. Và khi kết hợp với bộ cảm biến gia tốc
và bộ cảm biến con quay hồi chuyển có thể xác định chuyển động, định hướng và
hướng.
Loại IMU cơ bản bao gồm 6-DOF (6 Degrees Of Freedom) bao gồm là 6 trục độc
lập (ba trục của accelerometer và baa trục của gyroscope).Thông thường mỗi cảm biến
có hai đến ba bậc tự do được xác định cho các trục x, y, và z, kết hợp cả hai cảm biến sẽ
có tổng cộng 4 đến 6 trục. Giá trị gia tốc thu được từ cảm biến gia tốc và vận tốc góc từ
cảm biến con quay hồi chuyển được giữ riêng. Các góc có thể đo được từ cả hai cảm
biến, do đó cả hai dữ liệu có thể hiệu chỉnh như hình để có thêm dữ liệu đầu ra chính
xác. Ưu điểm của của việc sử dụng loại IMU này là sẽ không bị cản trở bơi từ trường
bên ngồi xung quanh cảm biến khi nó hoạt động gần với các vật bằng sắt. Ngược lại,
phụ thuộc vào cảm biến gia tốc và cảm biến con quay hồi chuyển có thể khơng cung cấp
đủ độ chính xác bởi vì nhiễu và vấn đề trơi con quay hồi chuyển.

Hình 2.6: IMU dựa trên hai loại cảm biến
Loại IMU bao gồm 9-DOF (9 Degrees Of Freedom) bao gồm là 9 trục độc lập
(ba trục của accelerometer, ba trục của gyroscope và ba trục của magnetometer). Loại
IMU này bao gồm 3 loại cảm biến: cảm biến gia tốc, cảm biến con quay hồi chuyển và
cảm biến từ trường. Cảm biến từ trường ở đây được sử dụng để đo góc ngáp (yaw) xoay,
do đó nó có thể được hiệu chỉnh theo dữ liệu của con quay hồi chuyển để cải thiện vấn

đề trôi dạt. Loại cảm biến này tốt cho định hướng động, tính tốn ngắn hạn và dài hạn
khi có ít lỗi trơi xảy ra. Có một bất lợi của cảm biến từ trường, nếu IMU đang được sử
12


dụng ở môi trường được bao quanh bơi kim loại sắt từ, các phép đó có thể bị xáo trộn
và mất độ chính xác do ảnh hưởng của từ trường.
Tuy vậy vẫn không đủ đáp ứng cho những dự án hoặc các hệ thống phức tạp như
là điều khiển máy bay hoặc robot vì vậy chúng ta phải cần đến một số loại IMU phức
tạp hơn như IMU 10-DOF có thêm một áp suất kế (Barometer) dùng để đo độ cao hoặc
thậm chí IMU 11-DOF được tích hợp module GPS để xác định vị trí.

Hình 2.7: IMU dựa trên 3 loại cảm biến
Hiện nay bộ cảm biến IMU được sử dụng rất rộng rãi và được tích hợp trong vơ
vàng thiết bị tự động. Đặc biệt là các thiết bị trong các lĩnh vực Robot, Autonomous,
các thiết bị theo dõi sức khỏe (đếm bước chân)… Bộ cảm biến này kết hợp với một số
cảm biển như laser, camera, siêu âm tạo nên một hệ cảm biển giúp cho thiết bị có thể
thu thập thơng tin của mơi trường bên ngồi. Việc kết hợp nhiều loại cảm biến sẽ cho
phép thiết bị có thêm nhiều nguồn dữ liệu tin cậy từ đó đưa ra quyết định chính xác hơn.
2.2.1.2. Một số vấn đề khi sử dụng cảm biến IMU
Để mang lại một kết quả đáng tin cậy thì cả bộ cảm biến IMU cần phải được hiệu
chỉnh để loại bỏ nhiễu trước khi đưa vào sử dụng vì các giá trị đó lường của cảm biến
trả về thường lệch với thực tế do ảnh hưởng bởi nhiễu.
Một nhược điểm lớn của việc sử dụng IMU để điều hướng là chúng thường bị lỗi
tích lũy. Bởi vì hệ thống hướng dẫn liên tục tích hợp gia tốc theo thời gian để tính tốn
vận tốc và vị trí, bất kỳ lỗi đo lường nào, dù nhỏ, đều được tích lũy theo thời gian. Điều
này dẫn đến 'sự trôi dạt' (driff). Một sự khác biệt ngày càng tăng giữa nơi mà hệ thống
nghĩ rằng nó được đặt và vị trí thực tế. Do tích hợp, một lỗi không đổi trong gia tốc dẫn
đến sai số tuyến tính về vận tốc và tăng trưởng lỗi bậc hai ở vị trí. Một lỗi khơng đổi về
tốc độ thái độ (con quay hồi chuyển) dẫn đến sai số bậc hai về vận tốc và tăng trưởng

lỗi ở thuật tốn tính tốn vị trí.

13


×