Với hệ thống Lidar, robot sử dung Rplidar AI từ thương hiệu SLAMTEC được pháttriển dé sử dụng vào các ứng dụng phát hiện vật can, lập ban đồ bằng tia laser, hỗ trợ Đề Robot hoàn thiện và
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN HOANG PHUONG
VÕ ANH TUẦN
KHÓA LUẬN TÓT NGHIỆP
ROBOT TRÁNH VẬT CÁN SỨ DỤNG CÔNG NGHỆ
LIDAR
OBJECT AVOIDANCE LIDAR ROBOT
KỸ SƯ KỸ THUẬT MÁY TÍNH
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
OBJECT AVOIDANCE LIDAR ROBOT
KỸ SƯ NGÀNH KỸ THUẬT MÁY TÍNH
GIẢNG VIÊN HƯỚNG DẪN THẠC SĨ PHAN ĐÌNH DUY
PHO GIAO SƯ TIEN SĨ VŨ ĐỨC LUNG
TP HO CHÍ MINH, 2021
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng bảo vệ luận văn tốt nghiệp được thành lập theo quyết định vào ngày
"——— eeeen een eneee bởi hiệu trưởng trường Dai hoc Công nghệ Thông tin.
Trang 4LOI CAM ON
KHOA KĨ THUAT MAY TÍNH TRUONG DAI HQC CONG NGHE THONG TIN- DHQG TP HO CHi MINH
Đề hoàn thành khóa luận tốt nghiệp này, chúng em xin chân thành cảm ơn các thay
cô trường Đại học Công nghệ Thông tin-Dai học Quốc gia Thành phố Hồ Chí Minh
nói chung và các thầy cô giáo khoa Kỹ thuật máy tính nói riêng đã cho chúng em.
kiến thức và kinh nghiệm quý báu trong 4,5 năm qua.
Xin gửi lời cảm ơn chân thành nhất đến Thạc sĩ Phan Đình Duy, Phó giáo sư Tiến
sĩ Vũ Đức Lung, những người đã dành thời gian và kinh nghiệm quý báu của mình
đã tận tình hướng dẫn chúng em hoàn thành khóa luận tốt nghiệp Xin chân thành
cảm ơn sự giúp đỡ của bạn bè đã giúp chúng tôi tìm kiếm và thu thập thông tin trong quá trình thực hiện luận văn Một lần nữa xin cảm ơn mọi người đã dành thời gian và
tâm sức đề hỗ trợ chúng tôi hoàn thành khóa luận tốt nghiệp Kính mong quý thầy cô
và các bạn bỏ qua, tha thứ trong quá trình thực hiện luận văn chắc chắn có những sai
Trang 5MỤC LỤC
Chương 1 TONG QUAN DE TÀI 2.st.rettttetrErrrerrrrrtrerrrrre
1.1 Lý do thực hiện khóa luận -.-cccccceckrkrtrtrtrtiiiiiiiiiiiiiiiiiiiiirrrkr
1.2 Mục tiêu khóa luận c.-+veeeeeeeirEEtiiirirriiiiiiiiirriiririiiiserrie
1.3 Phương pháp thực hiện cvceeerertiiiiirrriiiiiiiiiririiiiirisri
1.3.1 Tim hiểu lý thuyết:
1.3.2 Van dụng thực ~Ô 1.3.2.1 Dữ liệu đầu vào:
1.3.2.2 Quá trình xử lý: eeerrririiririrririiiiiiiiiriiriiiiiirrrie
1.3.2.3 Dữ liệu đầu ra:
Chương 2 CƠ SỞ LÝ THUYẾT 2+ e2ttrztttrEtttrrrtrrtrrrrrrre 2.1 Tổng quan về ROS sisstretteriirrtrertrrtrirrrrrtrrrrrrrrrrrre
2.1.1 ROS 1A gi Pecccssstssetccsssssesesssessssssnsensssssessevessossseesseseesssnsseeneseessesnsassesesesseeseesesee 2.1.2 Chức năng của ROS cày
2.1.4 Mô hình ROS eeeeririiiririrriiiiiiiiriririiirrrree
2.1.4.1 Tầng ROS FEilesystem -eerererrrrrrrrrrrrrrrrree 2.1.4.2 Tầng ROS Computation graph ce-eeererersrrr
2.1.4.3 Tang ROS community -srtereererererrrrerererrrre
2.1.5 Két luận cho việc sử dung ROS -ecceerriiriiriirriree
2.2 Laser Imaging, Detection And 2.2.1 Simultaneous Localization And Mapping(SLAM)
Ranging(LIDAR) -2.2.2 GM appiing vassscscssssssssesssessssssssavsesssesssssssssnesssessssssssaeesseesesssssseeseeseesesssssseeeenenseessy
13 13 13
22 24
25
26 27
28
Trang 62.4.1 Nvidia Jetson Nano e-c-cccerrrrrirrritkirtiriiirirerirrrree 37
2.4.1 RPLidar AIM8 ii 38
2.4.3 Mạch nguỒn -ecssrecerrieererrrertrrrrrrrirrrrrrrrerre 422.4.4 Mạch thứ cấp e -eecsrreeerrieeerrirerrrrerrrirrrrrreerre 43
3.1.2.1 Phan mềm trên máy tính cá nhân -+-s2:cc+t 493.1.2.2 Phần mềm trên Arduino Mega -s-.+-estrccesrrccerrre 53
3.2 Tính toán Odometry, thuật toán Dijkstra và Dynamic Window Approach.
54 3.2.1 _ Tính toán Odome(ry -e c-<-ceeersrkseikkrrkkrtikirriiiiririerie 54
3.2.2 _ Thuật toán Dijkstra ceccceecrieerieekiitkriitriiriirirrrrririee 58
Trang 73.2.3 _ Thuật toán Dynamic Window Approach oes 59
3.2.3.1 Không gian tìm kiếm -2 +ccsteeverreretrrrrrrrrrrrrrrrerre 603.2.3.2 TOi 5 61
Chương 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ ccccriirrceeeevvvvvrrrrrrrree 63
le 6 cố số 63
4.1.1 Quy trình cài đặt ĂĂccekikiieiikiiiirrree 63
4.1.1.1 Cài đặt ROS ccccccrreeeeerirerrrrrrirrrrrrrrrtrrrrrrrrrrrrrerrre 63
4.1.1.2 Cài đặt my_ robot metapackage và my_ robot_ base 63
4.1.1.3 Thiết lập môi trường ROS cho máy tính cá nhân và Jetson Nano
63
4.1.1.4 Thứ tự các lệnh để chạy SLAM và Navigation 64
4.2 Đánh giá map 2Ì) css-ccsxccrrxrtrrkerrrrkrtrrietrrrkrtrrirrrrkrrrrierrrrrrrrrkerrrrerrir 65
4.3 Đánh giá Navigation Oal -e ccscccrrererrrtrrirtrriirtrrirrrrirrrrrrrrierrrrree 66
4.3.1 Thực nghiêm không vật cản « -estskseekrikkrierirrirriee 67
4.3.2 Thực nghiệm có vật Cản -«-5s+ccs+scereerrrrrsrrerrrrrrrrrrrrrreee 68
Chương 5 KET LUẬN VÀ KIẾN NGHỊ, -s2.ecetreectrrrerrrrerrrrreerre 70
5.1 Két qua dat ẽ 705.2 Ưu điểm-Nhược điểm khóa luận -:::ccececvEttiiiieeesvevvvvvrrrrrrrie 705.3 Hướng phát triển và công việc tiếp theo -cecccccerrrreceevrrrrrrree 71
Trang 81.1: Sơ đồ thiết kế tổng quan của rObOt ccce-cccvvveeecvvvvvserrerrrvee 14
1.2: Sơ đồ hoạt động Của TObOI -+ccccresrrirtrirtrrirtiiriiiiiririiirriee 16
2.1: Hệ điều hành ROS -cc2cveeerrrkrkriirrttrrriiirrrtriiiirrrriirirrrrree 17 2.2: Các robot sử dụng hệ điều hành ROS, burger và waffle 19
2.3: Cấu trúc Package trong ROS ccc-eccrrrriiiiiirrrrrriiiiiirrrree 20
2.4: Cấu trúc Stack trong ROS -cc-cccccrreeerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrree 21
2.5: Mô hình Server - Client trong ROS cecceeekreerierrrisrrerrrrrrer 21 2.6: ROS Computation Grapph - «sec 22 2.7: Quan hệ giữa các node trong ROS -csiieiiiiie 24 2.8: Lich sử các phiên bản của ROS [6] -c-ecceeecceexeeeerseersee 25 2.9: Hình ảnh minh họa LIDAR cccccsccvserxeerrterrtrrtrssrrrsrsrrrrrrsrree 26
2.10: Bản đồ 2D được xây dựng bằng phương pháp SLAM 28 2.11: Bản đồ 2D được xây dựng bằng phương pháp GMapping 28
2.12: Camera KÏT€CE - sec Hit 29
2.13: Cảm biến HC-SR04 c cc 22222 HH 29
2.14: Mô hình Navigation stack trong ROS [7] -.«e c-ecceeecseexsee 31
2.15: Bản đồ costmap trong ROS .cccc -esccrrrkkkerrrrrrrrriirrrree 31
2.16: Giá trị chi phí ảnh hưởng đến hoạt động của robot [4] 32
2.17: Nvidia Jetson Nano ssssssssssssssssssssessesssssssssssssssssessecsacsecsscsessacssessessessassuesasseseasess 38
2.18: Thông số hoạt động RPLidar A1M8 -.ccccccccccveceerccccvee 39
2.19: RPLidar A1M8 -. c-ccc+ccrrrrrrrrrrirrrrrrrrrrrrirrrrririrrrrrrrrrre 39
2.20: Khung 3D trên phần mềm SolidWork - ccccccc-ssccccveccee 41
2.21: Khung cắt mica được vẽ bằng AutoCAD -cccccccccccrre 41
2.22: Mạch nguồn trên Altium Design ccc-c-ccccvveerecevvveeerrerrrree 42
2.23: Mạch cầu H XY-160D c -+cccxxeeritrrrrtrrrrtttrrrrrirrrrrrirrrrrrrrrrree 43
2.24: Arduino Mega 2560 -cccHHHHHH HH 43
r2 9000010100077 44
Trang 9Hình 2.26: Động cơ JGB 37 EncOer -« csssccxererxsrrrxerrrrrtrrrertrrrrrrrerrrreree 44
Hình 3.1: Hình ảnh bố trí trọng tâm rODOL cccee+ccccvveereerrrvveererrrrvee 46
Hình 3.2: Robot Waffle Pi, -ceehHHọnHHHHHHHH HH Hàng 47
Hình 3.3: Sơ đồ nguyên lý mạch thứ cấp -ccecceeserrrrrrrriierrrrrrrrriie 48 Hình 3.4: Sơ đồ nguyên lý mạch nguồn cc vvcee+eccvvveerrerrrrveeerrrrrrree 48
Hình 3.5: Sơ đồ input và output toàn hệ thống -c ccceccrrrerrre 49
Hình 3.6: Sơ đồ kiết nối các Node và Topic khi hệ thống Navigation hoạt động 52
Hình 3.7: Lưu đồ thuật toán trên Arduino Mega -+ccecerrreccerrrree 53
Hình 3.8: Qua một khoảng thời gian rất nhỏ, chuyên động robot có thé gần bằng
một cung tròn [ Ï 3] -+++esc+xs+rx++ret+tsrrtrrrtrrstrtrrrtrrrrrrrrrrrrrrrrirrrrrrrrrrrrrerrreee 55
Hình 3.9: Hai đường cung tròn tạo bởi bánh trái và phải [13] 56
Hình 3.10: Sơ đồ nút và trọng số trên mỗi cạnh trong đồ thị [9] 58
Hình 3.11: Hoạch định đường di dùng thuật toán Dijkstra 59
Hình 3.12: Vận tốc cho phép Va trong DWA -cccecccveeteerveeierrreesrrrrreeree 60 Hình 3.13: Vận tốc trong cửa sổ động Vd trong DWA c -ccce 61
Hình 3.14: Heading của robot trong DWA -c-cckickkiiieiiiriie 61
Hình 4.1: Trình tự thực thi khóa luận -csccecsccsxeerseesreersrtsresrsrrsrssrrrrsrree 64 Hình 4.2: Map 2D căn hỘ s ccsxcsrktrtrkketrrtirtrriirtrriirrrrrrrirrierrrrrrrrrirrrrrerie 65
Hình 4.3: Map 2D phòng lab được vẽ từ hệ thống -cc ec-ccceex 66
Hình 4.4: Robot đang được Estimate và chạy Navigation Stack 68
Hình 4.5: Trạng thái RÑ@COV€TV ccsscrrerrrketrrrirtrrrrrrrrrrrrirrrrrrrrierrrrirrrrierrrreree 69
Trang 10File cOsSff1đD_ COMMOH_ DATGHS.VÏ, Series 34
File giobal_ costmap_ DATGITS.VTHÏ, e-scccereexesrrererrrrrrrrirrrrrrirrrrrrrrre 35
File local_ COSfINđD_ DATGTHS.VHÏ, c«ccvesckexteektttrttketkirkrrrkrrrkrerrrrree 36
File Dase_local_planner_Params yr cecc«cceeceexeekeeerrrkrrekrrerrrrrkee 37
Các packages dé sử dụng robot -ccse+eeeverrrrervvrrrrervrrrrreerrre 49
Cac packages được kế thừa lại để hiện thực hệ thống 50
Chi tiết các packages quan trọng trong hệ thống - 50Các lệnh dé sử dụng khóa luận -c<ccxesreeksekirtrrkirrrierrie 64Bảng kết quả dữ liệu lây từ terminal khi chạy xong navigation 66
Bảng thực nghiệm với môi trường đường Ít vật cản - 67
Bảng thực nghiêm với môi trường nhiều vật cản -s 68
Trang 11DANH MỤC TỪ VIET TAT
ROS Robot Operating System
LiDAR Light Detection And Ranging
Laser Light amplification by stimulated emission of radiation DWA Dynamic Window Approach
SLAM Simultaneous Localization And Mapping
AMCL Adaptive Monte Carlo Localization
TF Transform
IMU Inertial Measurement Units
Trang 12TÓM TẮT KHÓA LUẬN
Khóa luận “Robot Tránh Vật Can Sử Dụng Công Nghệ LIDAR” ứng dụng Lidar và
Navigation Stack dé thiết kết nên Robot có khả năng tránh vật cản và đi đến nơi chỉđiểm trên bản đồ Ung dụng các thuật toán tìm đường đi dé robot có thé di chuyển
đên nơi chi định chỉ với các thao tác đơn giản nhât.
Với hệ thống Lidar, robot sử dung Rplidar AI từ thương hiệu SLAMTEC được pháttriển dé sử dụng vào các ứng dụng phát hiện vật can, lập ban đồ bằng tia laser, hỗ trợ
Đề Robot hoàn thiện và hoạt động tốt các hệ thống riêng lẽ phải được kết hợp va đồng
bộ trên một hệ điều hành quy nhất Khi đó, ROS là một lựa chọn rất phù hợp với hệthống ROS là một hệ thống phần mềm giúp phát triển Robot với các thư viện và công
cụ được hỗ trợ dé truyền dit liệu giữa các chương trình, giữa Robot và máy tính nhờvào kiến trúc các gói trên hệ thống của Robot Hệ thong “Robot Tránh Vat Can SửDung Công Nghệ LIDAR” sẽ tập trung chủ yếu vào các gói đành cho Rplidar và các
gói phục vụ SLAM, định vi và hoạch định đường di cho Robot.
Cuối cùng, dé hoàn thiện hệ thống Navigation Stack Robot sẽ được chia làm ba phan.Phan thứ nhất là Nvidia Jetson Nano Developer Kit, trung tâm truyền nhận dữ liệu từmáy tính cá nhân (ROS Master) và tầng nền nơi cũng cấp thông tin của Robot Phần
thứ hai là máy tính cá nhân nơi thực thi các thuật toán định vị và hoạch định đường
đi Phần cuối cũng là tầng nền với Arduino Mega nhầm nhận dữ liệu từ các cảm biếnIMU và Encoder và tính toán trang thái của Robot, đồng thời điều khiển hai động cơ
DC dé Robot có thé di chuyên Ba phan chính sẽ được liên kết chặc chẻ với nhau trênmột hệ thống là Robot Operating System (ROS)
12
Trang 13Chương 1 TONG QUAN DE TÀI
1.1 Lý do thực hiện khóa luận
Những năm gần đây tự động hóa và robotic phát triển rất nhanh và mạnh mẽ, conngười dần hướng đến những công cụ tự động trong nhiều lĩnh vực như nông nghiệp,
công nghiệp, dịch vụ, v.v Đặc biệt là Robot tự động được ứng dụng rộng rãi từ các
công việc quy mô lớn như thám hiểm vũ trụ[1], đến các công việc trong kho chứa
hàng, nhà xưỡng [2] hay trong căn hộ [3] v.v Trong đó Robot tự động hoạch định
đường đi là một dạng robot rất quan trọng được ứng dụng rộng rãi Hơn thế nữa với
cộng đồng người dùng, nghiên cứu và pháp trién Robot trên ROS lớn mạnh như ngàynay, chúng ta đã dé dàng tiếp cận và xây dựng cho mình nhưng con Robot từ dongiản đến phức tạp yêu cầu nhưng kiến thức chuyên sâu về kỹ thuật và động lực học
Trên thế giới các công trình nghiên cứu về Robot tự động hoạch định đường di(Navigation Robot) [4],[5] đã được thực hiện và cải tiến rất nhiều Tuy nhiên tìnhhình phát triển trong nước vẫn còn hạn chế Đặc biệt mới đây một số công trình Robotphục vụ nơi công cộng nhằm hạn chế sự tiếp xúc người với người, do dịch bệnhCovid-19 diễn biến phức tạp đã xuất hiện, nhưng phan lớn vẫn chưa 6n định và đápứng tốt Nên chúng em chọn nghiên cứu xây dựng Robot với khả năng diệt khuẩn vănphòng với đèn UV áp dụng kỹ thuật tự động tìm đường đi trên bản đồ dé đơn giản
các thao tác điêu khiên, từ đó tôi ưu việc thực hiện diệt khuân trong các văn phòng.
1.2 Mục tiêu khóa luận
Xây dựng robot theo định hướng navigation cho phép robot có thể hoạch định quỹ
đạo đường đi dựa trên bản đồ đã được vẽ trước bằng Lidar Robot sẽ được thực hiện
vẽ bản đồ bằng cách điều khién từ máy tính cá nhân Thuật toán SLAM sẽ được thựcthi dé có thé vẽ được ban dé của một khu vực, sau khi hoàn thành bản đồ sẽ được lưu
lại trong máy tính cá nhân phục vụ cho công tác navigation Người dùng sẽ có thực
hiện thao tác chỉ điểm trên bang đồ đã vẽ dé robot tự động di chuyền đến vị trí mong
muôn.
13
Trang 14Bên cạnh đó, robot sẽ tùy chọn tích hợp thêm các bộ phận dén UV 3W thích hợp cho
việc diệt khuẩn và các khung đề đồ thuận tiện cho việc vận chuyên các đồ dùng, trang
thiết bị trong môi trường yêu cầu khắc khe về việc giữ khoảng cách
Cai thiện thuật toán và thử nghiệm dé đưa ra các thông số so sánh về thời gian thựcthi và độ chính xác của Robot chúng ta đối với các robot khác trên thế giới
1.3 Phương pháp thực hiện
Dé xây dựng một robot với chức năng navigation, khóa luận sẽ xây dựng một robotbằng khung mica có hai động cơ Đây là mô hình xe dễ tính toán vận tốc cũng như
góc quay hỗ trợ cho việc định vị và hoạch định đường đi chính xác Ngoài ra sử dụng
bánh xích sẽ giúp cho robot di chuyên ôn định hơn với bề mặt đường gồ gé Songsong đó dé robot hoạt động, bộ nguồn sẽ được thiết kế với pin lipo 3 cell và bộ ha áp20A, giúp cũng cấp một nguồn điện phù hợp và ồn định cho toàn hệ thống
defson Nano Arduino Mega
DC_Encoder DC_Encoder Wifi (ROS server)
Trang 15Tìm hiểu các kiến thức về một hệ thong robot navigation Bắt đầu với việc tim hiéu
về SLAM dé vẽ ban đồ và lưu ban đồ, tim hiều về các thanh phan cần thiết cho một
hệ thống navigation như Odometry, Joint-State, TF Tiếp đến là các đầu vào cho thuậttoán định vi AMCL và hoạch định đường di Ngoài ra các kiến thực về dé sử dụngROS và làm việc trên môi trường Linux cũng là một nhân tố không thể thiếu trong
quá trình thực hiện khóa luận.
1.3.2 Vận dụng thực tế:
1.3.2.1 Dữ liệu đầu vào:
Dé có thể thực hiện chức năng navigation thi ban đồ là đầu vào không thé thiếu do
đó nhờ vào tin hiệu từ Rplidar Al gửi đến Jetson Nano ta sẽ thực hiện công việc vẽbản đồ bằng các thuật toán SLAM sau đó lưu bản đồ lại bang map_ server Dé vẽ bản
đồ ta cần một trình điều khiển robot trên máy tinh cá nhân, giúp điều khiến robot đihết diện tích phòng lần đâu tiên Tiếp đến, những đâu vào cần thiết cho một robot
navigation sẽ bao gồm Odometry (Vị trí và vật tốc ước tính của robot trong không
gian tự do), JointState(Bao gồm các thông số về vị trí các thành chuyển động củaRobot), TF( Sự thay đôi của Robot trong các khoản thời gian) Những dữ liệu này sẽđược tính toán nhờ vào Encoder và IMU (MPU6050) dé phục vu cho quá trình xử lý
của các thuật toán khác.
tiếp sẽ đến chức năng navigation, trên máy tính cá nhân (ROS Master) sẽ chạy hai
thuật toán định vị AMCL và hoạch định đường đi (Move_ Base) Song song đó Jetson
Nano sẽ gửi những dữ liệu Odometry, JointState, TF cũng như Scan (dữ liệu từ
Rplidar A1) đến ROS Master thông qua WIFI Tầng dưới cũng là Arduino Mega sẽ
thực hiện tính toán Odometry, JointState, TF dữa trên tín hiệu từ Encoder và IMU.
15
Trang 161.3.2.3 Dữ liệu đầu ra:
Dau ra sẽ là dit liệu điều khiển từ ROS Master thông qua Jetson Nano được chuyên
đến Arduino Mega dé điều khién Robot di chuyền theo thuật toán hoạch định đường
đi đã được thiết lập ở ROS Master Đồng thời ở máy tính cá nhân (ROS Master) sẽhiển thị bản đồ và Robot phục vụ cho việc quan sát và chỉ định địa điểm cho Robot
di chuyền đến
Personal Computer with ROS
Odometry, TF
Dữ liệu điều khién (Velocity)
Gmapping(Vé ban do)
map_server(lưu map)
Adaptive Monte Carlo Localization (dinh vi robot trén
ban do)
Path_planning(Hoach định đường di, tránh vật can)
Jetson Nano with ROS
Điều khién động cơ
Tinh toàn vi tri, trạng thai của
IMU 6050(I2C) Encoder fiboqÐilonicut; TF)
Odometry, TF UART(rosserial)
Hinh 1.2: So dé hoat d6ng cua robot
16
Trang 17Chương2 CƠ SỞ LÝ THUYET
2.1 Tổng quan về ROS
2.1.1 ROSlàgì?
ROS (Robot Operating System) là một hệ điều hành mã nguồn mở cho rô bốt Nócung cấp các dịch vụ từ một hệ điều hành, bao gồm phần cứng được trừu tượng hóa,kiểm soát thiết bị hạ tang, triển khai chức năng thường được sử dụng, thông báo giữacác quy trình và quản lý gói Nó cũng cung cấp các công cụ và thư viện để xây dựng,viết và chạy trên nhiều máy tính nhúng khác nhau ROS là hệ điều hành tương tự các
hệ điều hành robot khác, chăng hạn như Player, YARP, Orocos, CARMEN, Orca,
MOOS va Microsoft Robotics Studio.
ROS chạy trên đồ thị thời gian là một mạng lưới quy trình peer-to-peer (có kha năngđược phân phối trên các máy) được kết nối bằng cách sử dụng cơ sở hạ tầng truyềnthông của ROS ROS triển khai một số giao tiếp khác nhau, bao gồm giao tiếp kiểuRPC đồng bộ qua các dịch vụ, truyền dữ liệu không đồng bộ theo các chủ đề và lưutrữ dữ liệu trên Máy chủ tham sô
Hình 2.1: Hệ điều hành ROS
17
Trang 182.1.2 Chức năng của ROS
Rất nhiều người hỏi, "ROS và các hệ điều hành robot khác nhau như thế nào?" Đó
là một câu hỏi khó trả lời vì mục tiêu của ROS không phải là một hệ điều hành cónhiều tính năng nhất Thay vào đó, mục tiêu chính của ROS là hỗ trợ tái sử dụng mã
nguồn trong nghiên cứu và phát triển robot ROS là một hệ điều hành phân tán của
các quy trình (hay còn gọi là Node) cho phép các tệp thực thi được thiết kế riêng vàkết hợp lỏng lẻo trong thời gian chạy Các quy trình này có thé được nhóm lại thànhcác Packages và Stacks, có thể dễ dàng chia sẻ rộng rãi ROS cũng hỗ trợ một hệthống liên kết các lưu trữ mã nguồn cho phép người dùng có thé chia sẻ
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ànhthời gian đáng kê dé thiết kế phần mềm nhúng trong robot, cũng như chính phan 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ình nhúng, tương tựnhư điện tử, so với robot theo định nghĩa thông thường, như ngày nay chúng ta có thể
bắt gặp trong chế tạo robot dịch vụ Việc sử dụng lại các chương trình có hạn chế
đáng kể, vì chúng được liên kết chặt chẽ với nhau bằng phan cứng hạ tang.Y tưởngchính của ROS là tránh liên tục đi lại các vết xe đồ và cung cấp các chức năng đượctiêu chuẩn hóa dé thực hiện trừu tượng hóa phần cứng, giống như một hệ điều hành
thông thường cho máy tính.
Một lợi ích khác của các hệ điều hành robot như ROS là kết hợp kiến thức từ các banngành khác nhau Trên thực tế, thiết kế và lập trình robot có nghĩa là:
° Quản lý phan cứng bằng cách viết trình điều khiển
° Quản lý bộ nhớ và các quy trình
° Quản lý đồng thời, song song và hợp nhất dữ liệu
° Cung cấp các thuật toán lý luận trừu tượng, sử dụng trí tuệ nhân tạo
18
Trang 19Robotics đòi hỏi các bộ kỹ năng rất khác nhau, thường vượt quá phạm vi kiến thức
của một cá nhân ban ngành bât kì.
: Waffle @ Burger
-ss
Hình 2.2: Các robot sử dung hệ điều hành ROS, burger va waffle
2.1.3 Môi trường
ROS chỉ chạy trên các nền tảng Unix Các phần mềm dành cho ROS chủ yếu kiểm
tra trên Ubuntu va MAC OS X, mặc dù cộng đồng đã phát triển thêm dé hỗ trợ choFedora, Gentoo, Arch Linux và các nền tảng Linux khác
2.1.4 Mô hình ROS
Mô hình ROS gồm có ba tang: Filesystem, Computation Graph, và Community Bêncạnh đó, ROS định nghĩa hai kiểu đặt tên (Names): Package Resource Names và
Graph Resource Names.
2.1.4.1 Tang 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:
19
Trang 20Packages: 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.
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é dang sử dụng lại
Metapackages: là một package chuyên biệt, dùng dé phục vụ cho việc thé hiện mố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 bảng mô tả về một package như tên, version, mô tả, thông
tin license, Manifests được quản lý bởi một file tên là manifests.xml.
20
Trang 21Stacks: 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ì đượcgọi là Stack 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.
Mục tiêu của việc dùng Stack là dé đơ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 giữ 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 messagetiê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 cau trúc dữ liệu request và response giữa
các node trong ROS 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
21
Trang 222.1.4.2 Tầng ROS Computation graph
“Computation Graph”, tạm gọi là lược đồ tính toán, là một mang peer-to-peer của
ROS trong đó các dữ liệu được xử lý với nhau Computation Graph cơ bản gồmcác thành phần: các nút (nodes), Master, Parameter Server, messages, services ,topics, va bags, tat cả các thành phan này đều cung cấp dit liệu cho Graph bằng những
Hình 2.6: ROS Computation Graph
Nodes: là don 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ệthống đ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ại củaComputation 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
22
Trang 23Vớ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à mảng (array) với kiểu chuẩn
đều được hỗ trợ Messages có thể bao gồm các cấu trúc và các mảng lồng nhau (giốngnhư kiểu structs trong ngôn ngữ C)
Topics: Messages được định tuyến thông qua một hệ thống trao đổi (transport
system), trong đó phân loại các thông điệp thành 2 dạng: publish (đưa tin) và subcribe
(đăng ký nhận thông tin) Một node gửi di một message bằng việc đưa thông tin tớimột topic (chủ đề) Tên của topic được dùng dé quy định nội dung cua message Mộtnode liên quan đến loại dữ liệu như thế nào sẽ đăng ký nhận tin từ topic tương ứng.Một topic có thể có nhiều đối tượng đưa tin (publishers) cũng như nhiều đối tượngđăng ký nhận tin (subcribers); và mỗi một node cũng có thé truyền tin nhiều 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.
Services: Mô hình truyền thông theo mẫu publish/subcribe như trình bày ở trên làmột mô hình rất linh hoạt, tuy vậy, đặc điểm của nó là thông tin được truyền đa đốitượng, một chiều (many-to-many, one-way) đôi khi lại không phù hợp với các trường
hợp cần tương tác theo kiểu request/reply (yêu cầu/đáp ứng), kiểu tương tác này
thường gặp trong các hệ thống phân phối
Bags: là một định dạng đề lưu và phát lại đữ 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ệunày là cần thiết dé phát trién và thử nghiệm các thuật toán
23
Trang 24/ — — —.
⁄ fred/depthvimage_rect_color lec fredidepthimage_to_laserscan >
4 ———————_
“
Hình 2.7: Quan hệ giữa các node trong ROS
2.1.4.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à tong 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.
Respositories: là nguồn tài nguyên dựa trên cộng đồng mạng lưới các tổ chức khá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ài liệu,cung cấp các bản cập nhật, viết các bài hướng dan, bằng tài khoản mà họ đã đăng
ký.
24
Trang 25Distro Release date Poster Tuturtle, turtle in tutorial EOL date
ROS Lunar Loggerhead May 23rd, 2077
2.1.5 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 phan 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ình nhú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 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é, vì
chúng được liên kết chặt chẽ với phần cứng cơ bản
25
Trang 262.2 Laser Imaging, Detection And Ranging(LIDAR)
LIDAR là một phương pháp thu thập dữ liệu về khoảng cách của một vật thé với cambiến nhờ vào việc chiếu sáng vật thé đó bang tia Lazer va tính toán dựa vào các tiaphản xạ lại cảm biến Trên thế giới LIDAR thường được ứng dụng vào những hệthống lớn về địa tin học, lâm nghiệp, khảo cổ học, nông nghiệp để xây dựng bản đồ,vật thể ba chiều
Robot nhờ vào sự chính xác về khoảng cách mà LIDAR mang lại
LIDAR có thé phát ra tối đa 200.000 xung laser trong mỗi giây Một bộ lidar cơ bảnbao gồm một máy phát laser, một máy scan, một bộ thu nhận GPS được tùy biến Khi
một chùm laser được chiều vào một điềm trên mặt đất, chùm sáng này sẽ bị phản xạ
lại Một cảm biến sẽ thu nhận thông tin của chùm phản xạ để đo khoảng cách dựa
theo thời gian di chuyên của xung laser Kết hợp với dit liệu về vị tri và phương hướng
từ hệ thong GPS cũng như bộ do quan tính, bộ quét góc, dữ liệu sé được đưa ra thành
một tập hợp các điểm, gọi là "point cloud" Mỗi point cloud sẽ có tọa độ xác định
trong không gian ba chiều (bao gồm kinh độ, vĩ độ và cao độ) tương ứng với vị trí
của nó trên bề mặt Trái Đất Các điểm này sau đó được đem đi dựng thành mô hình
26
Trang 272.2.1 Simultaneous Localization And Mapping(SLAM)
SLAM là một phương pháp dé xây dựng va cập nhật ban đồ ở những nơi chưa biếttrướ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 vị, vẽ bản đồ, tính toàn khoảng cách và địnhhướng, ngoài ra SLAM còn được áp dụng vào thực tế ảo(virtual reality) và thực tế
tăng cường (augmented reality) Dé có thé thực hiện SLAM chúng ta cần có nhữngthiết bị ngoại vi như (camera, sona, radar, lidar) để nhận thông tin từ bên ngoài
Các kỹ thuật thống kê được sử dụng dé tính gần đúng các phương trình SLAM baogồm bộ loc Kalman và bộ loc 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ươngpháp xấp xi khác đạt được hiệu quả tính toán được cải thiện bang cách sử dung các
vùng giớ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ền khoả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ềuchỉnh và ước tính sau thử nghiệm (MAP), là một kỹ thuật phô biến khác cho SLAM
sử dụng dữ 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' MAP tính toán vềcác tư thế của robot và ban đồ cung cấp dữ liệu cảm biến, thay vì cố gắng ước tínhtoàn bộ xác suất
Các thuật toán SLAM mới vẫn là một lĩnh vực nghiê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.
27
Trang 28ROS Time: |1402148262.96 ROS Elapsed: 31428 e: 140214826300 | Wall Elapsed: 314438
Hình 2.10: Ban đồ 2D được xây dựng bằng phương pháp SLAM
2.2.2 GMapping
Đây là một package của ROS đành cho OpenSlam’s Gmapping Gmapping cung cấpthông tin laser SLAM, vốn là node của ROS được gọi là slam_gmapping Chúng ta
có thé tạo ra bản đồ 2-D (gần giống với bản thiết kế mặt cắt sản nhà) được tạo ra từ
dir liệu laser va vi trí của robot.
Hình 2.11: Bản đồ 2D được xây dựng bằng phương pháp GMapping
28
Trang 292.2.3 Cac công nghệ khác
Camera Kinect RGB-D được cấu thành từ camera bình thường kèm với bộ thu phát
hồng ngoại Camera cung cấp các chỉ tiết RGB cho từng phân cảnh được quay cùng
với chiều sâu của từng pixel Có 2 phương pháp tính cho chiều sâu của từng pixel ,
Structured Light (SL) và Time-of-Flight(TOF), trong đó TOF đã được áp dụng lên
LIDAR Nhược điểm duy nhất của Kinect chính là sự linh hoạt của cảm biến khi cóyêu cầu quét bao quát 360 độ cũng như điều kiện ánh sáng tối
Cảm biến siêu âm sử dung 2 đầu thu phát siêu âm cho ra khoảng cách được tính
toán theo định lý Pythagoras Cảm biến thường được hay sử dụng là HC-SR04 với
giá thánh rẻ, độ chính xác ở 4m có sai số khoảng 3mm ở điều kiện lý tưởng Tuy
nhiên, cũng giống như camera Kinect, nhược điểm của cảm biến siêu âm nằm ở
việc không đáp ứng được yêu cầu quét 360 độ nếu không có các phần cơ khí khác
hỗ trợ.
Hình 2.13: Cảm biến HC-SRO4
29
Trang 30có 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 bat buộc về phân cứng như sau:
e Nó đượ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 đề đạ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 này dùng để xây dựng bản đồ (mapping), định vị
(localization) và phát hiện vật cản.
e_ Nó đượ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 dạng robot nên là hình vuông hoặc hình tròn Navigation stack
cũ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
30
Trang 312.3.1 Tổng quan về Navigation Stack
ame!
sensor transforms —+
odometry source —
“At ti/tfMessaqe
optional provided node
platform specific node
Hinh 2.14: M6 hinh Navigation stack trong ROS [7]
Hình trên cho ta thấy được cái nhìn tong quan về cách cài đặt cũng như những thànhphần có trong Navigation stack Những thành phần bên trong move_base (màu trắng)
là những thành phan bắt buộc phải có Những thành phan 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 phan phải có tùy thuộc vào robot mà ta thiết kế
2.3.2 Costmap 2D
Costmap 2D là một package dé triển khai bản đồ chi phi (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ăng vùng
chi phí trong bản đồ 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.
v3
Hình 2.15: Bản đồ costmap trong ROS
31
Trang 32Costmap 2D dùng đề 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 dữ liệu của các cảm biến từ bản đồ đã được xây dựng
trước đó và cập nhật thông tin của vật cản vào costmap.
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 day đủ,
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 đồ đã đượcdự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 để đá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 hai chiều khi đặt
Vào costmap.
cell cost
{int}
“lethal” or "W-space" obstacle
e.g cost_lethale254 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)
°.g 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
cost=1
freespace
cost=0
circumscribed inflation distance from
radius radius closest W-space
obstacle cell
———_—_—_—_————., — [double]
buffer zone created by costmap_2d around obstacles, in order to make the robot prefer paths that keep some minimum clearance (this is a sort of default user preference)
inscribed
exact (now-pixelized) footprint
Hinh 2.16: Gia tri chi phi anh huong dén hoat động cua robot [4]
32
Trang 33Hình trên chỉ cho chúng ta thay được giá trị chi phí ảnh hưởng đến hoạt động củarobot như thé nào.
e Cost_lethal là giá trị của một cell chứ vật cản Nếu trọng tâm của robot di vào
vùng này thì chắc chắn robot sẽ bị va chạm
e Cost_inscribed là giá trị 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 thi robot chắc chan 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á tri 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.
e Cost_freespace có giá trị băng 0, thê hiện răng không có vật cản nơi này;
robot có thể di chuyên tự do trong vùng này
Cost_unknow là những cell chưa có thông thin về giá trị của chi phí
2.3.3 Cấu hình costmap
Dé bắt đầu cấu 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 di
cho mục tiêu trong bản đồ hoặc đường đi có khoảng cách xa; định hướng đường đicục bộ (local navigation) được dùng dé tạo đường di trong khoảng cách gần va détránh vật cản khi robot di chuyền
Các module nay sử dung costmap dé giữ thông tin về bản đồ Định hướng đường đi
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 cấu hình dựa vào các file:
costmap_common_ params.yaml, global_costmap_params-.yaml,
local_costmap_ params.yaml.
33
Trang 34laser_scan_sensor: {sensor_frame: laser_base_link, data_type:
LaserScan, topic: /base_scan/scan, marking: true, clearing: true}
Doan chương trình trên năm trong file costmap_common_params.yaml dùng đề cầuhình các biến dùng chung cho cả local_costmap và global_costmap Thuộc tínhobstacle_range và được ding dé chỉ khoảng cách tôi đa ma cảm biến có thé đọc vàsinh ra thông tin mới về môi trường trong costmap Nếu robot phát 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ếurobot 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 tin nà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ình thái củarobot 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 hẹp
Thuộc tính inflation_radius là thông số dé giữ khoảng cách nhỏ nhất giữa tâm của
robot và vật cản.
Thuộc tính faser_scan_ sensor dùng đê khai báo các thông tin về loại cảm biên được
dùng (ở đây là dùng laser scan) và được dùng dé thêm/xóa vật cản trong costmap
34
Trang 35Bang 2.2: File global_costmap_params.yaml
Thuộc tinh global_frame va robot_base_frame định nghĩa các frame toàn cục va
frame gắn với Mobile base
Thuộc tính update_frequency dùng dé khai báo tan số cập nhật cho costmap, ở đây
giá trị là 1Hz.
Thuộc tính static_map dé dùng khai báo có hay không dùng ban đồ đã dựng trước
đó.
35
Trang 36Các thuộc tinh global_frame, robot_base_frame, update_frequency va static_map
giống với file global_costmap_params.yaml
Thuộc tinh 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 nam ở tâm của robot khi di chuyển
Các thuộc tinh width, height và resolution dé câu hình khoảng cách và độ phân giả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á tri của vận toc gửi
xuống cho robot di chuyền
36