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

Khóa luận tốt nghiệp Kỹ thuật máy tính: Xây dựng robot tự hành quét bản đồ trong nhà và tránh vật cản

70 0 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Nội dung

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 3

THONG 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 4

LOI 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 5

MỤ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 6

2.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 7

Chương 4 KET LUẬN VÀ KIẾN NGHỊ -rreceetrrreverrrreerrrrrreerte 56

Trang 8

DANH 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 9

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

DANH 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 11

DANH 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 12

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á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 13

MỞ ĐẦ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 14

Chươ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 15

1.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 16

1.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 17

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

hiệ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 19

Chươ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 20

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

Mụ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 22

Mụ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 23

Messages

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 25

Bags: 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 26

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

chú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 28

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

e© 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 30

2.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 31

cell 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 32

2.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 33

hiệ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 34

Thuộ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 35

Bang 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

Ngày đăng: 02/10/2024, 03:28

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w