dựng các gói tin dé thực hiện nhiệm vụ chạy tự động và né vật cản.Mục tiêu của dé tài bao gôm: e Hoàn thiện được một mô hình robot sử dụng 4 động cơ, có khả nang di chuyên đa hướng với b
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
LE CHÍ BAO
PHAN ANH KIET
KHOA LUAN TOT NGHIEP
XÂY DUNG ROBOT TU HANH QUET BAN DO
TRONG NHA VA TRANH VAT CAN
IMPLEMENT SLAM ROBOT FOR INDOOR MAP
CONSTRUCTION AND OBJECT AVOIDANCE
KY SU NGANH KY THUAT MAY TÍNH
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
LE CHI BAO - 16521629
PHAN ANH KIET - 16520628
KHOA LUAN TOT NGHIEP
XAY DUNG ROBOT TU HANH QUET BAN DO
TRONG NHA VA TRANH VAT CAN
IMPLEMENT SLAM ROBOT FOR INDOOR MAP
CONSTRUCTION AND OBJECT AVOIDANCE
KY SU NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN Thac si NGUYEN DUY XUAN BACH
TP HO CHÍ MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 64/QD-DHCNTT
ngày 26 tháng 01 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LOI CAM ON
Trong suốt quá trình thực hiện khóa luận tốt nghiệp, chúng em xin chân thành cảm
ơn giảng viên hướng dẫn và các thầy cô, bạn bè trong trường Đại học Công nghệ Thông tin và khoa Kĩ thuật Máy tính đã tạo điều kiện cho chúng em hoàn thành khóa luận tốt nghiệp của mình Những kiến thức và kinh nghiệm trong quá trình thực hiện
khóa luận sẽ giúp chúng em hoàn thiện hơn trong công việc hiện tại và môi trường
làm việc sau này Đặc biệt chúng em xin cảm ơn thầy ThS Phạm Minh Quân, thay
ThS Nguyễn Duy Xuân Bách đã luôn theo dõi và hướng dẫn chúng em trong suốt
thời gian hoàn thành khóa luận vừa qua.
Chúng em cũng xin cảm ơn quý thay cô trong khoa đã tận tình giảng day và trong bị
cho chúng em những kiến thức cần thiết, hỗ trợ chúng em rất nhiều trong việc hoàn thành khóa luận tốt nghiệp này.
Mặc dù chúng em đã có gắng hoàn thiện bài báo cáo khóa luận tốt nghiệp một cách tốt nhất, tuy nhiên sẽ không tránh được những thiếu sót, rat mong nhận được sự thông
cảm cũng như những chia sẻ và góp ý quý báu của quý thầy cô để giúp chúng em
hoàn thiện tốt hơn kĩ năng báo cáo trong tương lai.
Một lần nữa chúng em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 1 tháng 1 năm 2021
Đại điện nhóm
Lê Chí Bảo
Trang 5MỤC LỤC
Chương 1 TONG QUAN 2-ccc2trcectttreEErterEEriertrrirtrrrrrtrrrrrrrrrrrrrrerrrre 3
1.1 Tinh hình nghiên cứu trong TƯỚC sc5csccccekxeeEteerekkertrrrikrrrrkrrrerrree 3
1.1.1 Mô hình xe tự hành của Công ty FPT Software [I] - 3
1.1.2 Mô hình xe tự hành trong nhà dùng stereo camera - 4
1.2 Tinh hình nghiên cứu ở nước TIØOÀiI -c«-c«cc+++xerxeeretkererrtkrrerrereerree 5
1.2.1 Mô hình robot Waffle Pi và Burger weenie 5
8c nn 5
Chương 2 CƠ SỞ LÍ THUYẾT VÀ THỰC NGHIỆM sercecerce 8
2.1 Tổng quan về ROS ressssssssssssssssssssessesssusessssssessssssusssssssssssssssssssssssssssssssssassessesse 8
2.3 2D Navigation SfaCK sen HH HH HH Hàn Hành Hy 17
2.3.1 Tổng quan về Navigation stack -cseeceerreceerrcrerre 18
"E6 H93 0h 19
2.3.3 Cấu hình costmap icceecccerrrreeeeeertrrirerreerrrrrrrrerrrrrre 21
2.3.4 Cấu hình base_local_ pÏannneT ‹«e-cssccexeeriskriirrireiriree 23
2.4 Nguyên lý xác định khoảng cách đến vật thé từ cảm biến RPLiDAR A1 24
2.5 Thuật toán Dijkstra cho global DÏanTI€r c«-ss+ceexeeervesxerxerressree 25
Trang 62.6 Thuật toán DWA dé tránh vật cản cho local planner - 28
2.6.1 Không gian tìm kiếm -ccsseecetreceerrererrrrrerrrrete 29
3.1.2.3 Khối điều khiển: -ecccerrreeeerrrrererrrrrrrrrrrrrrrte 43
3.2 Lập trình bộ điều khiển PID -ccce+eccvetrrecevrrrreerrrrrrrrerrre 45
3.3 Xây dựng giải thuật chuyển động -ccccciirreeeverrrrrerervrrrrrrrererre 45
3.4 Tính toán giá tri QOIM€(Ty csscccsxetsrxrrrttettrtrrtrrrrrrkrtrrrrrrrrerrrrierrri 47 3.5 Tính toán giá tri tf (TTaInSfOTIm) -cs-cs<ccxteErveeExetkrrtrtitkrrtrirrrrrikriirrrrike 50 3.6 CT€ating a map «-cccse tt ninh HH HH 1111k 51
3.7 Autonomous NaVIðfIOH - s«c set HH Hàn nàng nhung 51
3.8 Kết quả thử nghiệm sau khi hoàn thiện robot -+-cccerrrccce+ 53
3.8.1 Phòng lab FPT E6.I -icecesrreecverrrrererrrrrrrrrrrrrrerrre 53
3.8.1.1 Kết quả dựng bản đỒ icceccccerrirerverrrrrrrrererrrrrrrsrerre 53
3.8.1.2 Quá trình điều hướng «ccs.eeeerreeetrrerrrrrrrrrrrrerre 53
3.8.1.3 KẾt quả so sánh -cecccrreecverrrrrrrrrrrrsrrrrrrrrrrrrrrrrrrrree 54
Trang 7Chương 4 KET LUẬN VÀ KIẾN NGHỊ -rreceetrrreverrrreerrrrrreerte 56
Trang 8DANH MỤC HÌNH
Hình 1.1: Xe tự hành của tập đoàn FPT [1] « cecexererserkerrrerrrrrrrrrrrrree 3 Hình 1.2: Mô hình robot dùng stereo camera [2] -.-: -e c-seccreesrxrxererresrrree 4
Hình 1.3: Mô hình robot Turtlebot3 Waffle Pi and BUTBeT -e-e<css 5
Hình 2.1: Cộng đồng phát triển ROS trên thé giới [4] -ce-reccee 9
Hình 2.2: Cấu trúc Package trong ROS -ccccceccccvvveererrrrrveerrrrrrrrrrrrrrrrrree 10
Hình 2.3: Cau trúc Stack trong ROS -.-c22rec2trrertrrererrtrrrrrirrrtrrrrerrre 10
Hình 2.4: Mô hình Server - Client trong ROS cc-.iekieiiiiike 11
Hình 2.5: ROS Computation OTraph -‹ s-cxc+xsckesrktkkrtkittrrtkirirrrrirrrrrrrrkee 12
Hình 2.6: Quan hệ giữa các node trong ROS -.-cccereriirrrrirrrrirrrrirrrirree 13 Hình 2.7: Lich sử các phiên bản của ROS [5] « c-cccscceekisekierikiirrke 15
Hình 2.8: Mô hình Navigation stack trong ROS [6] -c-ccceccsexeerseeree 18
Hình 2.9: Bản đồ costmap trong ROS [7] -ccceccceccccvveeeececvveseeeerrrvee 19
Hình 2.10: Giá tri chi phí ảnh hưởng đến hoạt động của robot [7] 20
Hình 2.11: Cảm biến RPLIDAR A T co5s-eecsteeeeerreeerrtererrererrrrrerrre 25
Hình 2.12: Sơ đồ nút và trong số trên mỗi cạnh trong đồ thị [8] 26
Hình 2.13: Hoạch định đường di dùng thuật toán Dijkstra [10] 28 Hình 2.14: Mô phỏng quỹ đạo với thuật toán DWA ccccccrceeekkieerriirke 28
Hình 2.15: Vận tốc cho phép Va trong DWA [11] .cc-cecccccceccececcceee 29 Hình 2.16: Vận tốc trong cửa sổ động Va trong DWA [11] 30
Hình 2.17: Heading của robot trong DWA [1 1]_ -«eecc-cxreeerreeee 31
Hình 3.1: Mặt cắt bên của khung xe -cccccvvvvccccecceeeeeserttrrrrrrrrrrrrrrrrrrrre 32
Hình 3.2: Mặt cắt trước của khung xe -rrrtttrrrrtrrrtrrrrrerrrrrrrrrrrrre 32
Hình 3.3: Mặt cắt trên của khung xe -+++++++tttrttrrresrererrrrerrrrrrrre 33
Hình 3.4: Bánh mecanum -s«++++++tkkktEEkkrHHHH HH HH 33
Hình 3.5: Động cơ DC Servo giảm tốc JGB37 -cc -cccrrrrkererrrrrrrrree 34
Hình 3.6: Mạch điều khiển động cơ DC motor driver XY-160D 34
Hình 3.7: Cảm biến MPU 6050 c2cttkkkkiiiiiiiiiiiiirririiriiiiiirriiiiiiiiiie 35
Trang 9Hình 3.8: Mạch PCB nguồn c -5522EExkkrirtttriiiiiriiiriiiirirrriiie 35
Hình 3.9: Sơ đồ khối điều khiển với Arduino Mega 2560 - 36
Hình 3.10: Máy tinh Jetson Namo -cs-ccxeccktsrrtEkirtkriktriirirrrree 37
Hình 3.11: Jetson Nano Developer KÏK -«ccrreerererrrrrrrriirrrrrrrrrrrrrrree 38 Hình 3.12: Tổng quan hệ thống ccccccccceeerrrrrrrrrrvrerrrrrrrrrrrrrrrrrrrrrrrrrrrrie 39
Hình 3.13: Bộ phím điều khiển robot [1 5] .ccecc e-cccccvcvveeeeerrrerrrre 43
Hình 3.14: Giao diện của Rviz trên ROS [16] , -.e <ccceererreeserrrrerree 43
Hình 3.15: Lưu đồ thuật toán trên Arduino Mega 2560 cccc.- 44
Hình 3.16: Giải thuật điều khiển PID -cc 22vvveeeccvvvveererrrvrvveerrrrrrree 45
Hình 3.17: Giản đồ xung tốc độ đáp ứng 10Rpm 2-+-css+.ccstree 45
Hình 3.18: Cấu hình robot với 4 bánh đa hướng [17] -.c. - 46
Hình 3.19: Sơ đồ giải thuật tính giá trị Odometry[ 17] .ccccecc:reeccccerrree 48
Hình 3.20: Kết quả kiểm tra vận tốc tuyến tính -.cccceccccvveseercccvves 49
Hình 3.21: Kết quả kiểm tra vận tốc gÓC -ccc cccveeeeeccvrxveeeerrrrreerrrrrrrree 50
Hình 3.23: Bản đồ hành lang tầng 6 nhà E -cccccc-eeccrrrrrveeeeeerrirrrrke 51 Hình 3.24 Tổng hợp toàn bộ node - topic cho việc Autonomous Navigation [18]
Trang 10DANH MUC BANG
Bảng đánh giá các mô hình tự hành -. -ec-esceterrrrrrkrrirrrrree 6
Bản 6 số từ môi trường c2-++ceceetrrevvvtrrervvrrrrrrrrrrrrrrrrrrrrrre 17
File cOSfapD_ COIHMOT_ DAFGTHS.VTHÍ,ú săn 21 File global_Costmap_PQrams YAM ú c«-cs«cccekcekteekeeeretktrtkirerikrrrkrrerrrrree 22 File Local_Costmap_pParam VAM vessecsseesssssessessecsessesssesseessesseeeseessesseesteeneeeseenaes 23
Thuật toán Dijkstra [9] Error! Bookmark not defined.
Thông số kỹ thuật Jetson Nano developer Kit -c-ce-c:s: 38
File node.cpp trong package rpÏiđ@r_ FOS -cccccccerereererreerrree 40
Packega lập trình lại s-c-scecrseeretrrrttrrrttrrrrrrrrrrrrrrrrrrrrrrrrrrrrrree 40
Package kế thvta ssssssssssssssssssssssssssssesssssssssssssesusssssssssussssssssessssssesssssesssesssesasssesssie 41Chi tiết các packages quan trong trong hệ thống -. - 41
DI, 8.221208/12.4.0/,.0000n085886 h8 46
File my_robOt_MeQ.inh sesssessesssessscssessesscessessssssesssesesssesseesesasesseeseeseesseeseesserseesaes 49
Kết quả thực nghi@i ccssessssssssssneesssssssssasssesssssnsessssossesessssesssssssssasssssssnsssessases 53
Kết quả so sánh với đề tài khác -cce-receerrrreverrrrerrrrrrrerre 54
Trang 11DANH MỤC TỪ VIET TAT
ROS Robot Operating System
LIDAR Light Detection And Rangging
Laser Light amplification by stimulated emission of radiation
DWA Dynamic Window Approach
SLAM Simultaneous Localization And Mapping
AMCL Adaptive Monte Carlo localization
tf Transform
PID Proportional Integral Derivative
UART Universal Asynchronous Receiver / Transmitter
DC Direct Current Motors
RPC Remote Procedure Call
PWM Pulse Width Modulation
ICSP In-Circuit Serial Programming
GPU Graphics Processing Unit
CPU Central Processing Unit
I2C Inter-Intergrated Circuit
URDF Unified Robot Description Format
USB Universal Serial Bus
DHQG Dai hoc Quéc gia
Trang 12dựng các gói tin dé thực hiện nhiệm vụ chạy tự động và né vật cản.
Mục tiêu của dé tài bao gôm:
e Hoàn thiện được một mô hình robot sử dụng 4 động cơ, có khả nang di
chuyên đa hướng với bánh mecanum.
e Tầm quét của cảm biến trong khoảng 20em — 500cm trong điều kiện phòng
học.
e©_ Thời gian tôi thiêu để quét không gian phòng học 50 m”là 10 phút
e_ Tốc độ di chuyên của robot là 10km/h trong điều kiện không vật cản và
5km/h trong điều kiện có vật cản
e Kích thước vật cản có thé phát hiện là 30x30x30cm
Trang 13MỞ ĐẦU
Hiện nay thế giới đang chạy theo xu hướng tự động hóa trên tất cả lĩnh vực Và côngnghệ xe tự lái được dự báo sẽ trở thành một trang thiết bị tiêu chuẩn của mọi chiếc xe
trong tương lai Hãng phân tích thị trường Garner dự đoán, tới năm 2023 sẽ có khoảng
3 triệu chiếc xe trang bị công nghệ tự lái lăn bánh trên đường Tới năm 2030, con sốnày có thé lên tới hơn 50% thị trường xe điện toàn cầu Chính vì thé cuộc đua nghiêncứu phát triển xe tự lái của các tập đoàn ô tô và công nghệ trên thế giới khá sôi độngnhư Google, Tesla, Toyota với mức đầu tư hàng chục tỷ USD hay mới đây nhật cóthé kế đến việc thành lập liên doanh phát triển nền tang 6 tô tự lái trị giá 4 tỷ USDcủa Hyundai Motor Group và Aptiv Plc ( năm 2019), hay thỏa thuật đầu tư vào công
ty Argo AI — một công ty khởi nghiệp về xe tự lái của hai ông lớn ngành sản xuất 6
tô là Ford và Volkswagen lên đến 7 tỷ USD
Ở một diễn biến khác trong nước, tập đoàn công nghệ hàng đầu của Việt Năm là FPTcũng đã đầu tư vào phát triển công nghệ cho xe tự lái từ năm 2016, đến nay đã đạt
được cấp độ 3/6 cấp độ dành cho xe tự lái hiện nay Và trong tương lai sẽ còn đượcđầu tư và phát triển hướng đến xây dựng thành công nén tảng dành cho xe tự hànhđạt 6/6 cap độ
Từ những số liệu trên, nhóm nhận thấy tiềm năng phát triển của mảng xe tự hành này
Tuy nhiên các xe tự hành trước đây thường chỉ dùng camera kết hợp trí tuệ nhân tạo
dé vận hành thường bị ảnh hưởng rat lớn của yếu tố thời tiết, ánh sáng và không hoạt
động hiểu quả nếu thời kiện môi trường thay đổi Nhận ra được yếu điểm đó của việcdùng camera trong xe tự hành, nhóm đã tìm hiểu và đề xuất dùng cảm biến LIDARtrong xe tự hành Từ đó, nhóm được thành lập và thực hiện đề tài: “Xây dựng robot
tự hành quét bản d6 trong nhà và tránh vật cản”
Trang 14Chương 1 TONG QUAN
1.1 Tinh hình nghiên cứu trong nước
1.1.1 Mô hình xe tự hành của Công ty FPT Software [1]
Sau nhiều năm làm việc với các hãng xe trên thế giới và rút ra nhiều kinhnghiệm, công ty đã quyết định sử dụng kinh nghiệm và sử dụng trí tuệ của FPT dédau tư vào dự án xe tự lái và phát triển FPT Automatic Driving Platform Cốt lõi củanên tảng là sử dụng công nghệ AI, Deep Learning, Behavior cloning, nghĩa là xe sẽ
học lái như con người đồng thời có thé nhận định vật cản và đưa ra quyết định lái
xe Tháng 4/2019, Hình 1.1 là chiếc xe tự lái đầu tiên của FPT đã được thử nghiệmtại Ecopack, với phần cứng của công ty Yamaha Phần mềm của xe phát triển bởi độingũ kỹ sư của FPT Tuy nhiên chiếc xe chỉ dừng lại ở cấp độ 3/6 của xe tự hành và
Hình 1.1: Xe tự hành của tập đoàn FPT [1]
Trang 151.1.2 Mô hình xe tự hành trong nhà dùng stereo camera
Đề tài thực hiện vào tháng 6/2018 của sinh viên Phan Minh Trí dưới sự hướng
dẫn của tiến sĩ Nguyễn Vĩnh Hảo thuộc trường Dai học Bách khoa Hồ Chí Minh —ĐHQG Hồ Chí Minh [2]
Đề tài hướng đến xây dựng mô hình xe tự hành trong nhà có khả năng tự hành và
tránh né vật cản dựa vào stereo camera Việc sử dung camera dé dung ban đồ và triểnkhai điều hướng trên bản đồ đã dựng khá tốt Thông số sai số cho phép là robot sẽđến đích trong phạm vi đường tròn bán kính 20cm và góc lệch là 0.5 radian Tuy
nhiên, vì đặc tính của phương pháp là từ hai ảnh của camera cho ra ảnh độ sâu thì
môi trường phải có nhiều đặc trưng (vi dụ như đặc trưng góc cạnh) dé có thé ra chínhxác hơn; bên cạnh đó, vì đây là xử lý ảnh nên chất lượng ảnh cũng như độ sáng củamôi trường cũng ảnh hưởng đến chất lượng của của ảnh độ sâu
Hình 1.2 là mô hình hoàn thiện của robot tự hành trong nhà sử dụng cảm biến
Stereo Camera Kích thước khung xe là 35x35x45cm Mô hình sử dụng 2 động co
DC để hoạt động
Trang 161.2 Tình hình nghiên cứu ở nước ngoài
Hình 1.3: Mô hình robot Turtlebot3 Waffle Pi and Burger
Hình 1.3 là những mô hình đã được thương mai hóa trên thế giới của hãng
ROBOTIS đến từ Hàn Quốc [3] Với sản phâm này người dùng chỉ cần sử dụng linh
kiện và lập trình theo hướng dẫn của nhà sản xuất thì đã có thể có một mô hình robothoàn thiện có kha năng tự di chuyển trong không gian nhỏ
1.3 Kết luận
Có rât nhiêu công nghệ và mô hình xe tự hành trong nước và ngoài nước như
đã dé cập ở trên, van còn rat nhiều mô hình robot tự hành với những công nghệ khác nhau.
Các mô hình xe tự hành trước đây đa số sử dụng công nghệ xử lý ảnh kết hợp
trí tuệ nhân tạo và máy học dé tránh né vật cản và tìm đường ổi, tuy nhiên những xe
tự hành nay bi ảnh hưởng của yếu tố môi trường rất lớn như ánh sáng, thời tiết,
Hiện nay việc áp dụng công nghệ quét vào trong xe tự hành là hướng đi mới cho xe
tự hành, đó cũng là lý do nhóm quyết định đề xuất hướng tiếp cận công nghệ quét
vào robot tự hành.
So sánh những đề tài:
Trang 17Bảng 1.1: Bảng đánh giá các mô hình tự hành
Mô hình
Turtlebot3 Đề tài sử Mục tiêu đề
Burger [3] dụng Stereo tài nhóm
Camera [2] thực hiện
Tiêu chí
Ảnh hướng | Ít chịu tác động | Chịu ảnh Mô hình
của môi của yêu tố môi | hưởng nhiều không bị phụtrường trường của yếu tổ ánh | thuộc vào môi
sáng trường.
Khả năng xác | Vật cản kích Vat can kích Vat can kich
định vật thể | thước thước thước
xung quanh | 20x20x20cm 20x20x30cm | 30x30x30cm
Chi phí Chi phí cao Chi phí cao Chi phí hợp lý
Xây dựng ban | Bản đồ đặc Ban đồ thiếu | Bản đồ đặc
do so hóa trưng góc cạnh
TỐ ràng.
đặc trưng góc cạnh.
trưng góc cạnh rõ rang.
Sai so cho
phép
phạm vi 20cm, góc lệch là 0.5
radian.
Sai số trong
phạm vi 10cm, góc
lệch là 0.1 radian.
Từ bảng đánh giá Bảng 1.1 nhóm quyết định nghiên cứu, thiết kế và xây dựng
một robot sử dụng cảm biến LiDAR dé quét phạm vi không gian nhỏ của môi trường
trong nhà, từ đó số hóa thành bản đồ 2D Sau khi xây dựng được bản đồ số hóa 2D,robot có thé thực hiện di chuyên tự động trong không gian vừa được số hóa và thực
Trang 18hiện tránh né vật cản Đề tài có tên là “Xây dựng robot tự hành quét ban đồ trong nhà
và tránh né vật cản.”
Trang 19Chương 2 CƠ SỞ LÍ THUYET VÀ THUC NGHIEM
2.1 Tổng quan về ROS
2.1.1 ROS là gì ?
Robot Operating System — ROS là hệ điều hành mã nguồn mở dành cho robot,
là một framework được dùng rất rộng rãi trong lĩnh vực robotic với nhiều ưu điểm
Nó tạo ra một nền tảng phần mềm có thể hoạt động trên rất nhiều robot khác nhau màkhông cần sự thay đổi quá nhiều trong chương trình phần mềm
ROS được bat dau với ý tưởng tạo ra sự thuận tiện là có thé chia sé dé dang và
có thể được sử dụng lại trên những phần cứng robot khác nhau mà không cần phảixây dựng lại từ đầu Việc xây dựng lại từ đầu cho một nền tảng robot riêng biệt sẽtốn rất nhiều thời gian và công sức; bên cạnh đó, việc ứng dụng lại những thành quảcủa việc nghiên cứu trước đó dé xây dựng những thuật toán cao hơn cũng gặp ratnhiều khó khăn
ROS cung cấp, hỗ trợ các dịch vụ (services) như một hệ điều hành như phần
cứng trừu tượng (hardware abtraction), kiểm soát các thiết bị cấp thấp (low-level
device control), thực thi (implementation) các chức năng phô biến, tin nhắn (message)
qua lại giữa các quá trình, và quản lý gói Ngoài ra, nó cũng cung cấp nhiều công cụ
và thư viện cho việc tham khảo, biên dịch, viết và chạy chương trình trên nhiều máy
đữ liệu trên Parameter Server.
ROS không phải là một framework thời gian thực, nhưng thông qua nó ta có
thể viết chương trình thời gian thực
Trang 20Hình 2.1 thé hiện sự phân bố của cộng đồng phát triển ROS trên thế giới VìROS là một hệ điều hành mã nguồn mở nên thu hút sự quan tâm của cộng đồng rấtlớn, đồng nghĩa với việc các công cụ, thư viện sẽ được xây dựng và phát triển phongphú Hiện nay, mô hình robot đã và đang được xây dựng trên hệ điều hành này với
nhiều ứng dụng có tính thực tiễn cao
2.1.2 Mô hình ROS
Mô hình ROS gồm có ba tang: 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 chủ yếu là các nguồn tài nguyên ROS được thực thi trên bộ nhớlưu trữ hệ thống, bao gồm:
Packages: là đơn vị chính dé tổ chức phần mềm trên ROS Một package có thé
chứa các nodes (ROS runtime processes), các thư viện đặc thù của ROS, các file cài
đặt hoặc bất cứ file nào cho việc tô chức Cấu trúc của một package được mô tả ở
Hình 2.2.
Trang 21Mục đích của package là để tạo ra tập hợp chương trình có kích thước nhỏnhất dé có thé dé dàng sử dụng lại.
Hình 2.2: Cấu trúc Package trong ROS
Metapackages: là một package chuyên biệt, dùng để phục vụ cho việc thể hiệnmối quan hệ một nhóm các package khác với nhau Metapackage thường được dùng
như nơi dé giữ các tương thích ngược cho việc chuyên đổi sang rosbuild Stacks
Package Manifests: là một bang mô tả về một package như tên, version, mô
ta, thông tin license, Manifests được quản lý bởi một file tên là manifests.xml.
Stacks: khi chúng ta kết hợp các package với nhau với một vài chức năng thì
được gọi là Stack (Hình 2.3) Trong ROS, có rất nhiều stack với công dụng khác
nhau Tương tự Package, nơi chứa thông tin về stack gọi là Stack Manifests
10
Trang 22Mục tiêu của việc dùng Stack là để đơn giản hóa cho quá trình chia sẻ chương
trình ứng dụng.
Message types: là mô tả của một thông điệp được gửi qua lại g1ữ các quá trình,
được lưu trữ dưới dạng my_package/msg/MyMessageType.msg Message định nghĩa
cấu trúc dữ liệu cho các thông điệp được gửi đi Trong ROS, có rất nhiều loại message
tiêu chuẩn phục vụ cho quá trình giao tiếp giữa các node với nhau Ngoài ra, ta cũng
có thể tự định nghĩa lại một kiểu message theo nhu cầu sử dụng của chúng ta
Service types: là mô tả một service, được lưu trữ dưới dạng
my_package/-msg/MyServiceType.srv Service định nghĩa cấu trúc dữ liệu request và response
giữa các node trong ROS (Hình 2.4) Dé gọi một service, ta cần phải sử dụng tên của
Service cùng với tên của package chứa service đó.
Response
Hình 2.4: Mô hình Server - Client 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: nodes, Master, Parameter Server, messages, services , topics, va
bags, tat cả các thành phan này đều cung cấp dữ liệu cho Graph bằng những phương
thức khác nhau (Hình 2.5).
11
Trang 23Messages
Server k
Level
Hinh 2.5: ROS Computation Graph
Nodes: là đơn vi 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 chỉ tiết và chuyên biệt, một
hệ thong điều khién robot thường sẽ bao gồm nhiều nodes
Master: Các ROS Master cung cấp tên đăng ký và tra cứu đến phần còn lạicủ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: Parameter Server cho phép dữ liệu được lưu trữ bởi các
từ khóa trong một vị trí trung tâm Nó là một phần của Master
Với các biên này, nó có thê được câu hình các node trong khi nó đang hoạt
động hoặc dé thay đôi hoat động của node
Messages: Các node giao tiép với nhau thông qua các message Một message
chỉ đơ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à mang (array) với kiểu chuân
12
Trang 24đêu được ho trợ Messages có thê bao gôm các cau trúc và các mang 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 dang: publish (đưa tin) va 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 đữ 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 topickhá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.
Ros
Ề Master Saxe
Wj ` ^^ ` Information
“ớt A su GGING S » “eS about publishers
“ Public to 3 sen eke > `
Node Ros message Ros topic / Ros message Node
Hinh 2.6: Quan hé gitra cac node trong ROS
Services: Mô hình truyền thông theo mau publish/subcribe như trình bay ở
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/response (yêu cầu/đáp ứng), kiểu tươngtác này thường gặp trong các hệ thống phân phối
13
Trang 25Bags: là một định dạng dé lưu và phát lại dữ liệu từ các ROS messages Bags
là một cơ chế quan trọng dé lưu trữ dữ liệu, chăng hạn như đữ liệu cảm biến, những
dữ liệu này là cần thi ét dé phát triển và thử nghiệm các thuật toán
Hình 2.6 trên cho ta cái nhìn tổng quan về mối quan hệ giữa các node bên
trong ROS, node nao publish dữ liệu cho topic nào va node nào sé subscribe topic
nao.
2.1.2.3 Tang ROS community
Các khái niệm về ROS Community Level là các nguồn tài nguyên của ROS
được cộng đồng người dùng trao đôi với nhau về phần mềm và kiến thức Các nguồn
tài nguyên đó là:
Distributions: là tổng hợp các phiên bản của stack mà chúng ta có thê cài đặt
ROS Distributions có vai trò tương tự như Linux Distributions Hình 2.7 là danh sách
các phiên bản ROS cho đến hiện tại được sử dụng và hỗ trợ
14
Trang 26ROS Lunar Loggerhead May 23rd, 2017
ROS Jade Turtle May 23rd, 2015 3) A May, 2017
Hình 2.7: Lich sử các phiên ban của ROS [5]
Respositories: là nguồn tài nguyên dựa trên cộng đồng mang lưới các tô chứckhác nhau phát triển và phát hành những mô hình riêng của họ
The ROS Wiki: gồm nhiều tài liệu về ROS Bat cứ ai cũng có thé chia sẻ tàiliệu, cung cấp các bản cập nhật, viết các bài hướng dẫn bằng tài khoản mà họ đã
đăng ký.
2.1.3 Kết luận cho việc sử dụng ROS
Trước các hệ điều hành robot, mọi nhà thiết kế robot và nhà nghiên cứu robot
sẽ dành thời gian đáng ké dé thiết kế phần mềm nhúng trong robot, cũng như chính
phần cứng Điều này đòi hỏi kỹ năng về kỹ thuật cơ khí, điện tử và lập trình nhúng
Thông thường, các chương trình được thiết kế theo cách này gần giống với lập trìnhnhúng, tương tự như điện tử, so với robot theo nghĩa nghiêm ngặt nhất, như ngày nay
15
Trang 27chúng ta có thé gặp nó trong chế tạo robot dịch vụ Việc sử dụng lại các chương trình
đáng kê, vi chúng được liên kết chặt chẽ với phần cứng cơ bản
2.2 Tổng quan về SLAM
SLAM là một phương pháp dé xây dựng và cập nhật bản đồ ở những nơi chưabiết trước đồng thời xác định được vị trí của chủ thé Những thuật toán về SLAM
thường được sử dụng trong các lĩnh vực định vi, vẽ bản đồ, tính toàn khoảng cách và
định hướng, ngoài ra SLAM còn được áp dụng vao thực tế ao (virtual reality) và thực
tế tăng cường (augmented reality) Đề có thể thực hiện SLAM chúng ta cần có nhữngthiết bị ngoại vị như (camera, sona, radar, lidar) dé nhận thông tin từ bên ngoài Các
kỹ thuật thống kê được sử dụng để tính gần đúng các phương trình SLAM bao gồm
bộ lọc Kalman và bộ lọc Particle (hay còn gọi là phương pháp Monte Carlo) Chúng
cung cấp ước tính của hàm xác suất cho tư thế của robot và cho các thông số của bản
đồ Các phương pháp tính gần đúng một cách bảo toàn mô hình trên băng cách sửdụng giao điểm phương sai có thê tránh phụ thuộc vào các giả định thống kê độc lập
dé giảm độ phức tạp của thuật toán cho các ứng dụng quy mô lớn Các phương phápxấp xỉ khác đạt được hiệu quả tính toán được cải thiện bằng cách sử dụng các vùnggiới hạn đơn giản Các kỹ thuật tập hợp thành phần chủ yếu dựa trên sự lan truyềnkhoảng giới hạn Họ cung cấp một bộ bao gồm tư thế của rô bốt và một tập hợp gầnđúng của bản đồ Điều chỉnh và ước tính sau thử nghiệm là một kỹ thuật phổ biếnkhác cho SLAM sử dụng đữ liệu hình ảnh, cùng ước tính các tư thế và vị trí mốc,tăng độ chính xác của bản đồ và được sử dụng trong các hệ thống SLAM thương mại
hóa như ARCore của Google, thay thế dự án thực tế tăng cường trước đó 'Tango' Kỹthuật này tính toán về các tư thế của robot và bản đồ cung cấp dữ liệu cảm biến, thay
vì cô găng ước tính toàn bộ xác suất Các thuật toán SLAM mới vẫn là một lĩnh vựcnghiên cứu mới, và thường được yêu cầu và tạo ra giả định khác nhau về các loại bản
đô, cảm biên và mô hình như chi tiét khác nhau.
16
Trang 28Bảng 2.1 mô tả kết quả của việc sử dụng thuật toán xây dựng và cập nhật bản đồ
với hai package hỗ trợ trong ROS là hector_slam và slam_gmapping Hector_slam cho ta độ rõ nét và ít nhiễu hơn so với slam_gmapping.
2.3 2D Navigation stack
2D Navigation stack dùng dé lấy các thông tin, dữ liệu từ odometry, cảm biến
(sensor), điểm mục tiêu (goal pose) và xuất ra tín hiệu vận tốc gửi xuống robot Việc
sử dụng Navigation stack trên một robot bất kỳ thì khá là phức tạp Điều kiện tiênquyết để sử dụng Navigation stack là robot phải được chạy trên ROS, phải có mộttransform tree, và publish dữ liệu của cảm biến theo đúng kiêu Message trong ROS.Thứ hai, Navigation stack cần được cấu hình về hình dạng và đặc tính của robot dé
có thé hoạt động ở một cấp độ cao hơn
Mặc dù Navigation stack được thiết kế sao cho dùng trong mục đích chung nhất
có thể, nhưng vẫn có một số yêu câu bắt buộc về phần cứng như sau:
17
Trang 29e© NO được thiết kế dành cho cả mô hình robot lái bằng hiệu tốc độ (differential
drive) va mô hình robot có bánh xe đa hướng (holonomic wheeled robots) Nó
chỉ việc gửi trực tiếp giá trị vận tốc xuống cho bộ phận điều khiến di chuyêncủa robot dé đạt được các giá tri của robot mong muốn như vận tốc theo trục
x, vận tốc theo trụ y và vận tốc xoay
e Navigation stack cần phải được lắp một cảm biến laser scan được gắn lên
robot Laser scan nay dùng để xây dựng bản đồ (mapping), định vị
(localization) và phát hiện vật cản.
e No được phát triển trên những robot có hình vuông vì thé dé được hiệu năng
tốt nhất thì hình đạng robot nên là hình vuông hoặc hình tròn Navigation stackcũng làm việc được trên robot có hình dạng và kích thước bất kỳ nhưng sẽ khó
khăn với những robot có kích thước lớn khi làm việc trong những không gian hẹp.
2.3.1 Tổng quan về Navigation stack
geometry TH8OEF0efSiaripad Navigation Stack Setup
sensor transforms internal sensor sources
titfMessage nav_msgs/Path recovery_behaviors sensor_msgs/LaserScan _
optional provided node
platform specific node
Hinh 2.8: M6 hinh Navigation stack trong ROS [6]
Hình 2.8 trên cho ta thấy được cái nhìn tổng quan về cách cài đặt cũng nhưnhững thành phan có trong Navigation stack Những thành phan bên trong move_base(màu trang) là những thành phần bắt buộc phải có Những thành phần như amcl,map_ server (màu xám) là những thành phan tùy chọn Và những thành phan còn lại(màu xanh) là những thành phần phải có tùy thuộc vào robot mà ta thiết kế
18
Trang 302.3.2 Costmap 2D
Costmap 2D là một package dé triển khai bản đồ chi phí (costmap) từ việc lay
dữ liệu của cảm biến từ môi trường, xây dựng một lưới các nơi bị chiếm chỗ và tăngvùng chi phí trong ban đồ chi phí 2D dựa trên lưới các nơi bị chiếm chỗ và bán kính
tăng chi phí do người dùng định nghĩa.
Costmap 2D dùng dé chứa thông tin các vật cản cũng như những nơi mà robot
không thể tới được Costmap sử dụng đữ liệu của các cảm biến từ bản đồ đã được xây
.
Hình 2.9: Bản đồ costmap trong ROS [7]
Các phương pháp cơ bản sử dụng dé ghi dữ liệu lên costmap được cấu hình
đầy đủ, mỗi bit chức năng nằm trên một lớp khác nhau Ví dụ, bản đồ tĩnh (bản đồ đãđược dựng trước đó) được năm trên một lớp, và các vật cản được năm trên một lớp
khác Lớp chứa vật cản lưu trữ thông tin các vật thể theo ba hướng nhằm cho vấn đề
xử lý các vật cản trong bản đồ thông minh hơn
Costmap tự động đăng ký nhận dữ liệu từ các topic của cảm biến thông qua
ROS và cập nhật các thông tin cho chính costmap này một cách thích hợp Mỗi cảm
biến được sử dụng dé đánh dấu các vật cản hoặc loại bỏ các vật cản trong costmap.Nếu các vật thê được lưu trữ thông tin ở dạng ba chiều thì được chuyền thành haichiều khi đặt vào costmap
19
Trang 31cell cost
[int]
“lethal" or "W-space" obstacle
e.g cost_lethal=254 range of costs meaning
definitely in collision
"inscribed" or *C-space" obstacle
e.g cost_inscribed=253 range of costs meaning
possibly in collision
“circumscribed” obstacle (depends on orientation)
2.9 cost_possibly_circumscribed=128
range of costs meaning
definitely not in collision
also the range where (most) user
lowest non-freespace preferences should be expressed
Hình 2.10: Giá tri chi phí ảnh hưởng đến hoạt động của robot [7]
Hình 2.10 trên chỉ cho chúng ta thay được giá trị chi phí ảnh hưởng đến hoạt
động của robot như thé nào
e Cost_lethal là giá trị của một cell chứ vật can Nếu trọng tâm của robot đi vào
vùng này thì chắc chắn robot sẽ bị va chạm
© Cost_inscribed là giá tri của một cell từ vật cản đến bán kính nội tiếp của robot
Nếu tâm của robot nằm trong vùng này thì robot chắc chắn sẽ chị va chạm vào
vật cản.
e Cost_possibly_circumscribed là giá trị của chi phí tương tự như cost_inscribed
nhưng đó là giá trị từ vật cản đến bán kính ngoại tiếp của robot Nếu tâm của
robot đi vào vùng này thì khả năng robot va chạm vật cản phụ thuộc vào hướng
đi của robot.
© Cost_freespace có giá trị bang 0, thé hiện rang không có vật cản nơi này; robot
có thê di chuyền tự do trong vùng này
© Cosí_unknow là những cell chưa có thông thin về giá trị của chỉ phí
20
Trang 322.3.3 Cấu hình costmap
Dé bat đầu cau hình, chúng ta cần biết mỗi costmap được dùng dé làm gì
Robot sẽ di chuyển trong map với hai định hướng đường đi là toàn cục (global) và
cục bộ (local): định hướng đường đi toàn cục (global navigation) được dùng dé tạođường đi cho mục tiêu trong bản đồ hoặc đường đi có khoảng cách xa; định hướng
đường đi cục bộ (local navigation) được dùng dé tạo đường đi trong khoảng cách gần
và dé tránh vật cản khi robot di chuyền
Các module này sử dụng costmap dé giữ thông tin về ban đồ Định hướng
đường di toàn cục thì dùng costmap toàn cục (global costmap) và costmap cục bộ
(local costmap) dùng cho định hướng cục bộ Mỗi costmap sẽ có những thông sốriêng của nó và cũng có những thông số dùng chung Chúng được cau hình dựa vào
các file: costmap_common_params.yami, global_costmap_param.yam, local_costmap_params.yaml.
Bang 2.2: File costmap_common_params.yaml
obstacle_range: 2.5 raytrace_range: 3.0 footprint: [[-0.2, -0.2],[ -0.2, 0.2],[ 0.2, 0.2],[ 0.2, -0.2]]
inflation_radius: 0.3
observation_sources: laser_scan_sensor laser_scan_sensor: {sensor_frame: laser_base_link, data_type:
LaserScan, topic: /base_scan/scan, marking: true, clearing: true}
Bang 2.2 là một đoạn chương trình trên năm trong file
costmap_common_params.yaml dùng để câu hình các biến dùng chung cho cả
local_costmap và global_costmap.
Thuộc tinh obstacle_range và được dùng dé chỉ khoảng cách tối da ma cảmbiến có thê đọc và sinh ra thông tin mới về môi trường trong costmap Nếu robot phát
21
Trang 33hiện ra vật cản có khoảng cách nhỏ hơn obstacle_range thì nó sẽ đặt một vật cản vào
costmap Nếu robot di chuyền, nó có thể xóa costmap và cập nhật freespace Lưu ý
rằng chúng ta chỉ có thê cập nhật các giá trị được trả về từ thông tin laser trên bề mặt
vật cản mà không thể nhận biết được toàn bộ vật cản Nhưng với những thông tinnày, ta đã có thê xây dựng được bản đồ
Thuộc tinh footprint dùng dé chỉ cho Navigation stack nhận biết được hìnhthái của robot Các thông số này dùng dé giữ khoảng cách giữa vật cản và robot dé
không xảy ra sự va chạm hoặc robot có thé di chuyên qua những nơi có khoảng cách
update_frequency: 1.0
static_map: true
Bang 2.3 là một đoạn chương trình chứa các thông tin được khai báo trong file
global_costmap_params.yaml.
Thuộc tinh global_frame và robot_base_frame định nghĩa các frame toàn cục
và frame găn với Mobile base.
Thuộc tính update_frequency dùng dé khai báo tần số cập nhật cho costmap,
ở đây giá trị là IHz.
22
Trang 34Thuộc tính static_map dé dùng khai báo có hay không dùng ban đồ đã dựng
trước do.
Bang 2.4: File local_costmap_params.yaml local_costmap:
global_frame: /map robot_base_frame: /base_footprint update_frequency: 1.0
publish_frequency: 2.0 static_map: true
rolling window: false width: 10.0
height: 10.0 resolution: 0.1
Bang 2.4 là một đoạn chương trình chứa các thông tin được khai báo trong file local_costmap_params.yaml.
Các thuộc tính giobal frame, robot base_frame, update_frequency và
static_map giéng với file global_costnap_pararns.yaml
Thuộc tính publish_frequency dé xác định tần số cập nhật thông tin
Thuộc tính rolling_window dùng dé giữ costmap nằm ở tâm của robot khi di
chuyên.
Các thuộc tinh width, height và resolution dé cau hình khoảng cách và độ phângiải của costmap Các thông số này có đơn vị là mét
2.3.4 Cấu hình base_local_planner
Câu hình này dùng đê khai báo các thông sô khi tạo ra các giá trị của vận tôc gửi
xuống cho robot di chuyền
23
Trang 35Bang 2.5: File base_local_planner_params.yaml TrajectoryPlannerROS:
max_vel_x: 1 min_vel_x: 0.5
max_rotational_vel: 1.0 min_in_place_rotational_vel: 0.4
acc_lim_th: 3.2 acc_lim_x: 2.5 acc_lim_y: 2.5
holonomic_robot: false
Bang 2.5 la một đoạn chương trình trong file
base_local_planner_params.yaml dùng dé thiết lập vận tốc tối đa/tối thiểu và gia tốccủa robot mà chúng ta cần thiết lập dé phù hợp với phần cứng thiết kế
Thuộc tính holonomic_robot là biến khai báo xem chúng ta có xây dựng robot có
cấu trúc di chuyền dựa trên phần cứng có mô hình holonomic hay không Nếu chúng
ta xây dựng robot không dựa trên nền tang này thì khai báo là false
2.4 Nguyên lý xác định khoảng cách đến vật thé từ cảm biến RPLiIDAR
Al.
Thông số kỹ thuật cảm biến RPLIDAR A1(Hinh 2.11):
Khoảng cách quét tối đa là 12 mét
Nguồn sử dụng là 5V
Tan số lay mẫu từ 2-10Hz
24