Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh ix LỜI CẢM ƠN Lời đầu tiên em xin g i l i cử ờ ảm ơn chân thành đến thầy Hoàng Đình Khôi đã tận tình chỉ dẫn, giúp đỡ và định hướng cho em trong suốt
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM
QUÁN CÀ PHÊ
GIẢN VIÊN HƯỚNG DẪN: HOÀNG ĐÌNH KHÔI
SINH VIÊN TH ỰC HIỆN:
Trang 2BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM
QUÁN CÀ PHÊ
GIẢN VIÊN HƯỚNG DẪN: HOÀNG ĐÌNH KHÔI
SINH VIÊN TH ỰC HIỆN:
Trang 3Luận văn tốt nghiệp Nguyễn Ngọc Lĩnh
i
1 H ọ và tên sinh viên/ nhóm sinh viên được giao đề tài :
ROBOT TỰ ĐỘNG G I MÓN VÀ PHỌ ỤC VỤ TRONG QUÁN CÀ PHÊ
3 Nhiệm vụ (Nộ i dung và s ố liệu ban đầu) :
✓ Tìm hi u t ng quan v xe t hành, hể ổ ề ự ệ điều hành Ubuntu và Robot Operating System (ROS)
✓ Lựa chọn các thiết bị cho xe t hành ự
✓ Thiết kế 3D v robot cho xe b ng ph n m m Solid Work ỏ ằ ầ ề
✓ Lập trình điều khiển bằng tay cho xe
✓ Tiến hành định vị và điều hướng cho xe
✓ Thiết kế giao diện điều khi n b ng Matlab ể ằ
4 K ết qu d ả ự kiế n (tóm t ắt kế t qu ả d ự kiến đạt được) :
✓ Xe có thể t ự chạy đến đích mà không cần con người tác động
✓ Nắm được các khái niệm, cách lập trình v i ROSớ
✓ Thiết kế đượ ỏc v cho robot bằng phần mềm Solid Work
✓ Nắm vững nguyên lý hoạt động của xe tự hành
✓ Giao tiếp và u khi n thông qua giao diđiề ể ện người – máy
Giảng viên hướng dẫn
Trang 4Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Nhóm sinh viên đã hoàn thành đầy đủ các nhiệm vụ và mục tiêu đặt ra ban đầu của đồ án Ph n c ng và mầ ứ ạch điều khiển được thi công hoàn thi n và v n hành t t Các ệ ậ ốgiải thuật điều khi n xe t ể ự hành đã được nhóm SV nghiên cứu và áp dụng lên đề tài của mình một cách tương đối hoàn ch nh Robot có th v n hành và di chuy n m t cách t ỉ ể ậ ể ộ ựđộng đồng thời có khả năng tránh vậ ản tĩnh và động trên đường đi Nhóm SV cũng t c
đã lên kế hoạch triển khai hệ thống robot thử nghiệm trong môi trường quán cafe thực Tuy nhiên do lý do khách quan (d ch Covid 19) nên kị ế hoạch này không thể triển khai được như dự kiến
Save to a Studylist
Trang 5Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
iii
CHƯƠNG 1 TỔNG QUAN 1
1.1 Giới thi u vệ ề Robot di chuyể ựn t hành (autonomous driving) 1
1.1.1 Khả năng nhận th c (Perception) 1 ứ 1.1.2 L p bậ ản đồ (Mapping)[2] và định v robot (Localizication) 2 ị 1.1.3 Điều khi n chuyể ển động (Motion planning) 3
1.1.4 Mục tiêu đề tài 4
1.1.5 Đối tượng, ph m vi nghiên c u 4 ạ ứ 1.1.6 Các bước th c thiự ện đề tài 4
1.2 Giới thi u v Robot Operating System (ROS) 5 ệ ề 1.2.1 Cấp độ ệ thố h ng t p tin (ROS file System level) 6 ệ 1.2.2 Cấp độ đồ thị tính toán (ROS Computation Graph Level) 8
1.2.3 Cấp độ ộng đồ c ng 10
CHƯƠNG 2 MÔ HÌNH ĐỘNG HỌC XE ROBOT 11
2.1 Mô hình động h c 11 ọ CHƯƠNG 3 ĐỊNH VỊ VÀ ĐIỀU HƯỚNG (NAVION STACK) 12
3.1 Chuyển đổi cấu hình 12
3.2 Thông tin cảm biến (Sensor information) 15
3.3 Thông tin về trạng thái robot (Odometry information) 15
3.4 T o l p bạ ậ ản đồ và định v robot trong bị ản đồ (SLAM[4]) 18
3.4.1 Bộ ọc hạ l t 18
3.4.2 Thu t toán AMCL 20 ậ 3.4.3 Thu t toán Gmapping 22 ậ 3.5 Bản đồ chi phí (Cost Map) 25
3.6 Chuyển động (Move Base) 26
3.6.1 Phương Pháp Teb local planner 27
CHƯƠNG 4: THIẾT KẾ ROBOT TỰ HÀNH HOẠT ĐỘNG TRONG QUÁN CÀ PHÊ 33
4.1 Thiế ật l p robot t ng 33 ự độ 4.1.1 Bộ điều khi n trung tâm 34 ể 4.1.2 Cảm biến 35
Trang 6Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh 4.1.3 Các thành ph n khác 35 ầ
4.1.4 Thiết kế ỏ ộ v h p cho robot 36
4.2 L p Trình tích h p hậ ợ ệ thống 40
4.2.1 Thiết lập serial node giao ti p v i Mobile base 40 ế ớ 4.2.2 Thiết lập bộ điều khi n b ng tay cho robot 41 ể ằ 4.2.3 Xây dựng bản đồ (mapping) 42
4.2.4 Điều hướng trên bản đồ đã dựng (navigation) 44
4.3 Thiết kế giao di n cho robot 47 ệ 4.3.1 Gi i thi u vớ ệ ề phần m m Matlab 47 ề 4.3.2 Giao diện và phương thức truyền nh n 50 ậ CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM 56
5.1 Dữ liệ ừu t sensor laser Rplidar A1 56
5.2 Quá Trình xây d ng bự ản đồ 56
5.3 Đinh vị robot trên bản đồ 58
5.4 Điều hướng robot tự động 58
5.5 Giao di n máy tính trung tâm và robot 60 ệ CHƯƠNG 6: TỔNG KẾT NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN 62
6.1 T ng kổ ết đề tài 62 6.2 Hướng phát tri n 62 ể TÀI LIỆU THAM KH O 64 Ả PHỤ L C 65 Ụ
Trang 7Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
v
Hình 1.1: T ng quan hổ ệ thống robot tự động di chuy n 1ể
Hình 1.2 Ví d: ụ v t o l p bề ạ ậ ản đồ ủ c a robot (2D, 3D) 3
Hình 1.3: T o lạ ập đường đi cho robot tiế ới đíchn t 3
Hình 1.4: Minh họa các n i dung trong filesystem level 6ộ Hình 1.5: C u trúc package 7ấ Hình 1.6: Folder ví d v không gian làm vi c cụ ề ệ ủa hệ thống xe t hành 8ự Hình 1.7: Các node nói chuy n vệ ới nhau thông qua Topic 10
Hình 2.1: H ệ thống cơ học và h ệ thống điều khi n c a mô hình xe omniể ủ ……… …… 11
Hình 3.1: T ng quan v navigation stack [3]ổ ề ……….…………12
Hình 3.2 Ví d: ụ minh họa cho robot 13
Hình 3.3: C u trúc cây biấ ến đổi khung tọa độ ủa robot tự c hành, và s biự ến đổi giữa các khung tọa đ Tộ ọa độ ố g c của h ệ thống sẽ được đặt ở khung tọa độ “base_link” Xyz, rpy là các nhánh biến đổi 14
Hình 3.4: C u trúc cây chuyấ ển đổi giữa robot và map được tạo 14
Hình 3.5 Ví d: ụ về xác định v trí robot trong tị ọa độ "odometry" 16
Hình 3.6: Bộ mã hóa đo quãng đường bánh xe di chuyển được (Cấu trúc encoder và đĩa encoder) 17
Hình 3.7: Bản đồ lưới thu được từ gói gmapping 18
Hình 3.8 Ví d: ụ minh họa 19
Hình 3.9 Ví d: ụ v các hoề ạt động tính toán v trí cị ủa xe 19
Hình 3.10: Hàm mật độ xác suất vị trí của xe ( phân ph i Gauss ),xe có th các v trí ố ể ở ị trong phân ph i xác suố ất 20
Hình 3.11: Ví dụ v robot trong mề ột bản đồ ồm 4 bức tườ g ng (bên phải là khở ại t o ngẫu nhiên vị trí tượng trưng) 21
Hình 3.12: Khu vực co th ể có vị trí robot sau khi lược bỏ các h t có thông tin laser sai ạ và khởi tạ ạo l i các h t trong các khu vạ ực này 21
Hình 3.13: Di chuyển robot đồng thời di chuyển tất cả các hạt 22 Hình 3.14: Qua nhi u l n c p nh p thì mề ầ ậ ậ ật độ ạt sẽ ậ h t p trung t i m t khu v c 22ạ ộ ự
Trang 8Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Hình 3.15: Mô tả ề v qu o di chuy n c a robot khi có bỹ đạ ể ủ ản đồ chi phí Vì có bản đồ chi phí nên robot sẽ tránh ti p xúc g n v i các vế ầ ớ ật cản, giúp nó di chuy n an toàn và ta ể
có thể d dàng tính toán 25ễ Hình 3.16 Ví d: ụ v cost map trong ROS 26ề Hình 3.17 Ví d: ụ về đường di chuyển và quĩ đạo chuyển động của robot (Đường xanh
lá là đường đi toàn cục, đường màu đỏ là quỹ đạo cục b ) 26ộ
Hình 3.18: Đường dẫn toàn cục của robot (thuật toán Dijkstra, A*) 27
Hình 4.1: mô hình cơ khí phần khung robot tự hành……… ……… 33
Hình 4.2: Mô hình xe robot s dử ụng bánh xe đa hướng 34
Hình 4.3: Bộ điều khi n trung tâm 34ể Hình 4.4: Cảm biến laser Rplidar A1 35
Hình 4.5: Phần m m Solidworks 2019 36ề Hình 4.6: Phần khung robot 38
Hình 4.7: Nắp đậy (mặt bên) phần khung robot 38
Hình 4.8: Hộp đựng pin (ngu n) 39ồ Hình 4.9: Ngăn chia tầng giữa tầng ch a pin và tứ ầng đặt PC mini 39
Hình 4.10: Tầng trên cùng nơi đặt laser và phần không gian đặt th c u ng 39ứ ố Hình 4.11: Phần nắp đậy laser 40
Hình 4.12: Mô hình hoàn thi n ph n v ệ ầ ỏ được thiết kế cho robot 40
Hình 4.13: Sơ đồ điều khi n robot b ng PS2 41ể ằ Hình 4.14: Sơ đồ khối các bước dựng bản đồ 42
Hình 4.15: Sơ đồ làm việc của Rpdidar A1 42
Hình 4.16: Tín hiệu của cảm biến Rplidar A1 43
Hình 4.17: Robot di chuy n bể ằng tay trong môi trường thực tế 43
Hình 4.18 Hình : ảnh bản đồ sau khi d ng 44ự Hình 4.19: Lưu đồ ả gi i quyết bài toán điều hướng robot 44
Hình 4.20 Hình : ảnh robot đang được định vị trên bản đồ 45
Hình 4.21: V ị trí ban đâu và vị trí robot đến 46 Hình 4.22: Giải thu t Trajectory Rollout/Dynamic Window Approach [10] 47ậ Hình 4.23: Phần m m matlab 47ề Hình 4.24: Giao di n matlab Gui 48ệ Hình 4.25: Một số thuộc tính c a bủ ảng thi t k giao di n 50ế ế ệ
Trang 9Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
vii
Hình 4.26: Giao diện setting 51
Hình 4.27: Giao diện Robotic Control System 52
Hình 4.28: Lưu đồ và phương thức truyền nh n 54ậ Hình 5.1: K t qu tín hiế ả ệu laser Rplidar A1 thu được………56
Hình 5.2: Không gian thực tế để ự d ng bản đồ 57
Hình 5.3: Kết quả ản đồ được dự b ng 57
Hình 5.4: Bản đồ được dựng trong môi trường có nhi u v t c n 58ề ậ ả Hình 5.5: Robot được định v 58ị Hình 5.6: Global planner hoạch định đường đi cho robot 59
Hình 5.7: Robot đi theo đường đi đã hoạch định 59
Hình 5.8: Robot phát hi n vệ ật cản và hoạch định lại đường đi mới 59
Hình 5.9 Giao di: ện giao ti p gi a máy tính trung ế ữ tâm và robot 61
Hình 5.10: Màn hình điều khiển robot từ máy tính trung tâm 61
Trang 10Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Bảng 1: B ng thông s c u trúc m t messager cho cả ố ấ ộ ảm biến 15
Bảng 2: B ng thông s c u trúc odommetry cả ố ấ ủa robot 18
Bảng 3: B ng thông sả ố robot 34
Bảng 4: B ng các thành ph n khác cả ầ ủa robot 36
Bảng 5: Ki u truy n dể ề ữ liệu c a cmd_vel 40ủ Bảng 6: Khởi tạo serial node 41
Trang 11Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
ix
LỜI CẢM ƠN
Lời đầu tiên em xin g i l i cử ờ ảm ơn chân thành đến thầy Hoàng Đình Khôi đã tận tình chỉ dẫn, giúp đỡ và định hướng cho em trong suốt quá trình làm đồ án và luận văn, tạo điều kiện thuận lợi để em hoàn thành đề tài này
Em cũng xin chân thành cảm ơn đến trường Đại Học Công Nghiệp TP.HCM và đặc biệt là quý thầy cô trong khoa Điện, bộ môn Điều Khiển và Tự Động Hóa đã trang
bị cho em các kiến thức nề ản t ng, bổ ích trong kho ng th i gian hả ờ ọc tập tại trường
Do chưa có nhiều kinh nghiệm làm để tài cũng như những hạn chế về kiến thức, trong bài ti u lu n ch c ch n s không tránh kh i nh ng thi u sót R t mong nhể ậ ắ ắ ẽ ỏ ữ ế ấ ận được
sự nh n xét, ý kiậ ến đóng góp, phê bình từ phía Thầy để bài ti u luể ận được hoàn thiện hơn
Lời cu i cùng, em xin chúc quý Th y, Cô th t nhi u s c kh e, luôn giố ầ ậ ề ứ ỏ ữ được ngọn l a nhi t huy t vử ệ ế ới nghề để tiếp t c truyụ ền đạt ki n th c cho các th h sinh viên ế ứ ế ệ
sau này
Chúng em xin chân thành cảm ơn!
n Sinh viên thực hiệ
n Ng
n Xuân Hoài Nguyễ
Nguyễn Văn Bỉ
TP.Hồ Chí Minh, 21 tháng 11 năm 2021
Trang 12Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
LỜI MỞ ĐẦU
Xu hướng của thế giới hiện nay là cuộc cách mạng công nghệ về robot, AI Các robot thông minh ngày càng ra đời nhiêu hơn và robot tự hành (autonomoust robot) là một trong nh ng lo i robot không thữ ạ ể thiếu trong nhiều lĩnh vực(vận chuy n hàng hóa, ểdịch v ,.v.v ) Ngày nay robot t hành ngày càng ph ụ ự ổ biến hơn và càng thông minh hơn
để có th gi i quy t và thay th ể ả ế ế con người làm nhi u vi c (robot x p hàng vào kho, robot ề ệ ếlau nhà, s p xắ ếp đồ ậ v t, quân sự, khám phá môi trường con người khó ti p c n v.) ế ậRobot t hành là m t công ngh ự ộ ệ phứ ạc t p và tích h p nhi u công ngh ợ ề ệ con như kỹ thuật điện, cơ khí, giao thông vận tải, công nghệ thông tin, v.v Một trong những công nghệ cốt lõi c a robot t hành là các thuủ ự ật toán điều khiển thông minh để nó có th tể ự đưa ra các quyết định hoạt động hoặc quyết định di chuyển phù hợp mà không cần hoặc ít cần đến con người Những thuật toán này giúp cho robot vận hành linh hoạt hơn trong các môi trường, linh hoạt khi có những tha đổi về bản đồ, vật cản,.v.v Từ đó đưa ra các robot có nh ng hành vi, di chuy n thông minh và tinh t ữ ể ế hơn Nhiều phần mềm, chương trình và các gói công c nghiên c u v ụ để ứ ề robot được s d ng r ng r i, Robot Operating ử ụ ộ ảSystem (ROS) là m t h ộ ệ điều hành mã ngu n m ồ ở được các nhà nghiên c u v Robot s ứ ề ửdụng r t nhi u Nó cung c p cho chúng ta r t nhi u ph n m m, công cấ ề ấ ấ ề ầ ề ụ, workshop v ềrobot đã được các nhà nghiên cứu xuất bản và phát triển mà tốn rất nhiều thời gian đểviết l i, t ạ ừ đó giúp việc nghiên c u thu n l i và m ch lứ ậ ợ ạ ạc hơn Các phần mềm mô ph ng ỏđược tích h p trên ROS có l i ích rất l n trong việc nghiên cứu và phát triển Nhằm ợ ợ ớtừng bước tiếp cận và nghiên cứu trong ngành công nghệ robot tự hành, và những lợi ích c a ROS Em xin ch n ủ ọ đề tài: “robot tự động g i món và ph c v trong quán cà ọ ụ ụphê” Mục tiêu là xây dựng thành công mô hình robot phục vụ trong quán cà phê hoạt
động m t cách hiệu quả thông qua các hệ điều hành ROS, Ubuntu, cũng như các giải ộthuật điều khi n robot và một số ph n mể ầ ềm như solidwork, matlab, Arduino IDE,
Trang 13Luận văn tốt nghiệp Nguyễn Ngọc Lĩnh
1
CHƯƠNG 1 TỔNG QUAN
1.1 Giới thi u v Robot di chuy n t hành (autonomous driving) ệ ề ể ự
Hình 1 1 T ng quan h ổ ệ thố ng robot t ự độ ng di chuy n ểMột robot thông minh hi n nay có th tệ ể ự động di chuy n trong mể ột môi trường nhất định là một hệ thống phức tạp bao gồm cả phần cứng và phần mềm bao gồm hai phần: Khả năng nhận thức được môi trường xung quanh (Perception) thông qua các
thiết b nh n di n và các thu t toán x lý tín hiị ậ ệ ậ ử ệu thu được, và th hai là t các dứ ừ ữ ệu lithu thập được nó có th t di chuy n mể ự ể ột cách khéo léo đến vị trí mong muốn đồng thời tránh các v t cậ ản thông qua các thu t toán l p trình chuyậ ậ ển động (Motion planing ẵn ) scho robot mà không cần đến bất kì tác động nào của con người M i vỗ ấn đề được nêu trên đều đã được nghiên cứu và phát triển từ lâu và có rất nhiều cách thức tiếp cận mỗi vấn đề khác nhau để tạo nên một robot tự hành
1.1.1 Khả năng nhận th c (Perception) ứ
Robot t hành thông qua các thi t b c m biự ế ị ả ến môi trường (sensing) mà nó đang hoạt động như: Cảm biến âm thanh, ánh sáng, laser, … Hoặc các loại camera Thông qua các thi t b c m bi n, các dế ị ả ế ữ liệu về môi trường được g i v bử ề ộ não trung tâm đểtính toán và dùng trong các tác vụ khác nhau Tùy thu c vào robot và ng d ng c a nó, ộ ứ ụ ủcác dữ u vliệ ề môi trường sẽ được thu về đơn giản hay phứ ạp theo mc t ỗi lo i c m biạ ả ến khác nhau Đối với các loại robot đơn giản như di chuyển theo đường màu sắc hoặc di
Trang 14Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh chuyển ng u nhiên khi bẫ ị ặn chuych ển động, chúng ch c n các c m bi n v màu sỉ ầ ả ế ề ắc hoặc c m bi n khi g p v t cả ế ặ ậ ản Tuy nhiên đa số các robot thông minh hi n nay vi c nhệ ệ ận thức môi trường rất rõ ràng thông qua nhiều thuật toán xử lí tín hiệu và các cảm biến thường là các loại cảm biến laser kho ng cách, ho c ngay c ả ặ ảcamera.
1.1.2 Lập bản đồ (Mapping)[2] và định vị robot (Localizication)
Đối v i các lo i robot t hành thông qua b n , sau khi Robot thu th p thông tin ớ ạ ự ả đồ ậthông qua các thi t b c m bi n, nh n di n T các dế ị ả ế ậ ệ ừ ữ liệu thu thập được thông qua các thuật toán t o l p bạ ậ ản đồ chúng ta có thể thu được bản đồ toàn c c cụ ủa môi trường mà các thi t b c m biế ị ả ến thu được Vấn đề trong việc xây d ng bự ản đồ ớ ữ liệ v i d u thu thập được là làm thế nào để lưu trữ dữ liệu và dùng nó để thể hiện một bản đồ hữu ích về không gian bị chiếm d ng và không gian có th s dụ ể ử ụng cũng như về độ chính xác đại diện cho môi trường hoạt động Tùy thu c vào mộ ỗi ứng d ng khác nhau, robot c n phụ ầ ải nắm bắt rõ hay đơn giản những thông tin môi trường xung quanh nó Dựa vào đó, nhiều thuật toán ra đời giúp việc tạo lập bản đồ từ đơn giản cho tới chi tiết ra đời ( 2D, 3D) Dạng bản đồ thường được s d ng nhi u là dử ụ ề ạng lưới (ví d hình 2) vì khụ ả năng tính toán ứng d ng r ng rãi và linh ho t, ít t n không gian b nh máy tính, giúp các thuụ ộ ạ ố ộ ớ ật toán hoạt động trơn tru hơn
Việc định vị robot là việc xác định xem robot đang ở đâu trên bản đồ, vị trí và hình dáng c a nó so vủ ới môi trường xung quanh Mỗi môi trường mà robot hoạt động thường s ẽ được đặt h tệ ọa độ gốc để l y làm m c trong vi c tính toán v trí robot d dàng ấ ố ệ ị ễhơn
Việc t o l p bạ ậ ản đồ thường đi song song với việc định v v trí c a robot trong ị ị ủbản đồ, vì đây là hai khía cạnh phụ thuộc vào nhau, vấn đề này có tên là SLAM (xem thêm các thu t toán ậ ở OpenSlam) Để xây d ng m t bự ộ ản đồ ủa môi trườ c ng robot phải
tự biết vị trí của nó, để ết được vị bi trí của nó tiếp theo robot c n ph i có mầ ả ột bản đồ đã được tính toán Ngoài ra việc định v v trí có th ị ị ể đạt được thông qua GPS ho c các thuặ ật toán định v khác (AMCL, MCL, …) ị
Trang 15Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
3
Hình 1 2 Ví d v t o l p b ụ ề ạ ậ ản đồ của robot (2D, 3D)
1.1.3 Điều khi n chuyể ển động (Motion planning)
Sau khi robot đã có được các thông tin c n bi t vầ ế ề môi trường mà nó hoạt động, tiếp đến ta cần có các thuật toán điều khiển di chuyển để robot có thể di chuyển đến vị trí mong muốn trên bản đồ hoặc th c hiự ện các nhiệm v mong muụ ốn giải quy t các vế ấn
đề Dùng các thuật toán điều khi n, ta có th ể ể điều khi n chuyể ển động c a robot di chuyủ ển theo ý muốn Thông thường trong các robot t hành thông minh, mự ột đường đi toàn cục
sẽ được đưa ra để hướng tới vị trí cu i cùng (path planningố [8]) qua các thu t toán khậ ởi tạo đường đi như A*, Dijkstra[7], v v Và thông qua các thuật toán điều khi n chuyể ển động, robot s ẽ được điều khiển bám theo đường đi đã được đưa ra Lập k ho ch chuy n ế ạ ểđộng phụ thu c nhiều vào mô hình chuyộ ển động của robot hơn là lập kế hoạch đường
đi Mỗi d ng robot khác nhau s có các mô hình toán h c khác nhau t ạ ẽ ọ ừ đó thông qua các thuật toán điều khiển như PID, hoặc các thuật toán điều khiển thông minh như mờ, LQR, neuron v v để điều khiển các tín hiệu như vận tốc hoặc bánh lái của xe
Hình 1 3 T o l ạ ập đường đi cho robot tiế ới đích n t
Trang 16Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Một h ệ thống robot lớn thường s ẽ được chia ra làm hai tầng điều khi n khác nhau ểMột là t ng tính toán cầ ấp cao thường s hoẽ ạt động để tính toán các thu t toán ph c tậ ứ ạp trên (t o lạ ập bản đồ, data process, giao diện người máy, điều khiển thông minh) và tầng điều khiển cấp thấp thường hoạt động trên các bo mạch nhúng để điều khiển các cơ cấu máy móc, cấu trúc điện tử cơ học của robot (motor, servo)
Để xây dựng một hệ thống hoàn thiện thì đây là một đề tài khá rộng và cần có những chuyên gia có ki n th c, kinh nghiế ứ ệm để có th phát tri n m t hể ể ộ ệ thống ổn định, hoạt động trôi ch y trên nhiả ều điều kiện môi trường khác nhau Trong lu n án này chúng ậ
ta sẽ tiến hành thi t k và xây d ng mế ế ự ộ robot hot ạt động ổn định trong thực tế
1.1.4 Mục tiêu đề tài
• Tìm hiểu cách để ạ t o ra m t robot t hành và cộ ự ấu trúc để thực hi n robot ệ
tự hành, có được hiểu biết về mô hình động học của robot dưới dạng xe bốn bánh v i bánh omni và ROS ớ
• Thiết l p chuyậ ển động của robot dưới d ng xe bạ ốn bánh trong chương trình mô ph ng trên n n t ng ROS, s d ng các thu t toán robot t hành ỏ ề ả ử ụ ậ ự
và nắm bắt cơ bản các thuật toán
• Xây dựng được m t robot giao coffee hoàn ch nh t vi c xây d ng b n ộ ỉ ừ ệ ự ả
đồ, hoạch định đường đi ngắn nhất, đi theo quỹ đạo đã hoạch định đồng thời phát hiện và tránh các vật cản trên đường đi
1.1.5 Đối tư ng, phạm vi nghiên cứu ợ
• Nền t ng Robot Operating system (ROS)ả [1]
• Các ph n m m và các nầ ề ội dung thuộc về ROS
• Mô hình động h c cọ ủa robot xe bốn bánh v i bánh lái omni ớ
• Các thu t toán t o l p bậ ạ ậ ản đồ và định v song song (SLAM), thu t toán ị ậđiều khiển chuyển động (TEB[11])
• Phần m m matlab ề
• Phần m m solidword ề
1.1.6 Các bước thực thiện đề tài
• Tìm hiểu về ROS và cơ cấu động học của xe b n bánh omni ố
• Thiết k hình m u xe omni và ng h c trong ph n m m thi t k và t o ế ẫ độ ọ ầ ề ế ế ạrobot thực tế
Trang 17Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
5
• Tìm hi u các thuể ật toán để ạ t o nên m t robot xe t hành trong m t môi ộ ự ộtrường chưa biết trước và triển khai các gói phần mềm trong mô hình
• Viết giao diện robot kế ố ới hệ thống máy tính trung t n i v tâm
• Điều ch nh hi u s các thông s tỉ ệ ố ố ối ưu để đạt được quỹ đạo di chuy n tể ối
ưu
1.2 Giới thiệu v Robot Operating System (ROSề )
Các thuật toán robot tự trị đa số là các thu t toán phậ ức tạp và yêu c u mầ ức độ ử x
lý tính toán cao và c n m t h ầ ộ ệ thống ph n mầ ềm và ph n c ng m nh m x lý chúng ầ ứ ạ ẽ để ử
Vì th các robot tế ự trị thường có ph n lõi x lý cầ ử ấp cao thường là m t máy tính có h ộ ệđiều hành và ROS[1] là một nền tảng phần mềm mạnh mẽ giúp kết nối các cơ cấu hoạt động vật lý và các thu t toán Nó hoậ ạt động trên hệ điều hành linux, mã ngu n m và là ồ ởmột b khung ph n m m trung gian s d ng cho vi c nghiên c u và phát tri n robot ộ ầ ề ử ụ ệ ứ ểROS được tạo ra để kết h p các ph n m m robot v i nhau, là mợ ầ ề ớ ột môi trường chung cho các nhà nghiên c u phát tri n m t ph n m m, chứ ể ộ ầ ề ức năng cho robot và xuất hành trên ROS Các ph n m m, chầ ề ức năng này sẽ có thể được s d ng trên các ng d ng robot ử ụ ứ ụnếu các robot ấy có cài đặt ROS Nó được thi t kế ế để các nhóm phát tri n robot cể ộng tác và xây dựng d a trên công vi c c a nhau ự ệ ủ
Bên c nh tạ ất cả các công c và gói mà ROS cung c p, m t trong nhụ ấ ộ ững tính năng quan tr ng nh t c a ROS là khọ ấ ủ ả năng trừu tượng hóa m t s khía cộ ố ạnh cơ bản và c p ấthấp c a phát tri n ph n m m ROS cung c p mủ ể ầ ề ấ ột hệ thống giao ti p giế ữa các quy trình
có th d dàng s d ng ể ễ ử ụ để thực hi n m t h ệ ộ ệ thống phân tán v i nhi u quy trình S d ng ớ ề ử ụkhung giao tiếp đã triển khai, hệ thống d a trên m t biự ộ ểu đồ ống như kiế gi n trúc Bao gồm các node ch u trách nhi m x lý và các node này có th nh n, g i và ghép kênh ị ệ ử ể ậ ửthông tin c m bi n và cáả ế c cơ cấu ch p hành, l p k ho ch, tr ng thái và các thông báo ấ ậ ế ạ ạkhác
ROS cho phép nhi u ngôn ng lề ữ ập trình đượ ử ục s d ng trong s phát tri n c a h ự ể ủ ệthống Python, C++ hiện đang là các ngôn ngữ phổ biến nhất Một hệ thống dựa trên ROS được chia làm ba cấp độ khái niệm : the filesystem level, the computation graph level, và the comunity level
Cấp đầu tiên là cấp Hệ thống tệp tin (Filesystem) Trong cấp độ này, một nhóm các khái niệm đượ ử ụng để giảc s d i thích cách m t hộ ệ thống trong ROS hoạt động, cấu trúc thư mục và s lượng tệố p tối thi u mà nó cể ần để hoạt động
Trang 18Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Cấp th hai là mứ ức Đồ thị tính toán (Computer Graph) nơi xảy ra giao tiếp giữa các quy trình và hệ thống Trong ph n này, chúng ta sầ ẽ thấ ấ ảy t t c các khái niệm và cơ chế mà ROS có để thiết lập h ệ thống, x lý t t c các quy trình tính toán và giao ti p vử ấ ả ế ới nhiều hơn một máy tính, v.v
Cấp th ba là c p Cứ ấ ộng đồng (Community), bao g m m t t p h p các công c và ồ ộ ậ ợ ụkhái niệm để chia s ki n th c, thu t toán và mã gi a các nhà phát tri n Mẻ ế ứ ậ ữ ể ức độ này có tầm quan tr ng lọ ớn; như vớ ầi h u h t các d án ph n m m mã ngu n mế ự ầ ề ồ ở, vi c có mệ ột cộng đồng lớn mạnh không chỉ giúp cải thiện khả năng của những người mới đến hiểu
sự ph c t p c a ph n mứ ạ ủ ầ ềm cũng như giải quy t các vế ấn đề ph bi n nh t, mà nó còn là ổ ế ấđộng lực chính thúc đẩy sự phát triển của nó
1.2.1 Cấp độ h ệ thố ng t p tin (ROS file System level)ệ
Hình 1 4 Minh h a các n i dung trong filesystem level ọ ộ
Mục tiêu chính của Hệ thống t p ROS là t p trung hóa quá trình xây d ng cệ ậ ự ủa một dự án đồng th i cung cờ ấp đủ tính linh ho t và công cạ ụ để phân c p các ph thuấ ụ ộc của nó Khi m t dộ ự án đượ ạo và phát tri n, chúng ta cc t ể ần phải chia nhỏ và đóng gói thành các tệp và thư mục để có thể d dàng qu n lí d ễ ả ựán của chúng ta tốt hơn Nó giúp việc quan sát ti n trình và ki m tra, phát tri n h ế ể ể ệ thống d ễ dàng và nhanh chóng Tương
tự như hệ điều hành, chương trình ROS được chia thành các thư mục và các thư mục này có các t p mô t các chệ ả ức năng của chúng:
Workspace: là folder đầu tiên khởi tạo và chứa các gói (packages), tất cả mọi
thứ v d án robot Ta có thề ự ể dùng catkin_make được cung c p bấ ởi ROS để biên dịch cho các source file python ho c C++ Giúp qu n lí d án dặ ả ự ễ dàng và rõ ràng hơn Tạo
Trang 19Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Metapackage manifests: Tệp kê khai siêu gói (package.xml) tương tự như một
gói thông thường, nhưng có thẻ xuất trong XML Nó cũng có những hạn chế nhất định trong cấu trúc c a nó ủ
Message (msg) types: Mô t thông báo là thông tin mà m t quy trình gả ộ ửi đến các quy trình khác ROS có r t nhi u lo i mô t thông báo tiêu chuấ ề ạ ả ẩn như geometry_msgs, nav_msgs Chúng ta có th t tể ự ạo các định dạng message riêng và lưu trong các folder
cá nhân my_package / my_msgs / MyServiceType.msg
Trang 20Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Service (srv) types: Các mô t d ch vả ị ụ, được lưu trữ du i d ng my_package / ớ ạsrv/MyServiceType.srv, xác định cấu trúc dữ liệu các d ch vị ụ yêu cầu và phản h i cho ồcác d ch vị ụ được cung c p bấ ởi m i quá trình trong ROS.ỗ
Hình 1 6 Folder ví d v không gian làm vi c c a h ụ ề ệ ủ ệ thống xe t hành ự
1.2.2 Cấ p độ thị tính toán (ROS Computation Graph Level) đồ
Cấp đồ thị tính toán là nơi ROS xử lý dữ liệu và tạo ra một mạng lưới hệ thống nơi tất cả quá trình được kết nối Đây là cấp quan trọng nhất trong ROS vì nó là nơi các hoạt động, cơ chế ủa robot đượ c c tính toán và tạo ra Các yếu tố cơ bản của mức đồ thị tính toán c a ROS là nodes, messages, topics, services, bags, Master, and Parameter ủServer B t kì node nào trong hấ ệ thống cũng đều có th truy c p mể ậ ạng này, tương tác
với các nút khác
Nodes: Nơi các quá trình tính toán được thực hiện Thông thường, một hệ thống
sẽ có nhi u node khác nhau và hoàn thành m i chề ỗ ức năng của hệ thống(ví d robot t ụ ựtrị sẽ gồm cảm biến (sensor), tạo bản đồ (mapping), điều khiển (control), ) Các quá trình tính toán được khởi tạo trên các nodes sau đó kết nối với nhau để tạo ra một hệ
thống hoàn hảo Việc chia nhỏ các node để ực hi n các chth ệ ức năng là cần thi t và giúp ếquản lý h ệ thống robot d ễ dàng và rõ ràng hơn
The master: The master (roscore) qu n lí t t c các node, cung cả ấ ả ấp tên đăng kí
và dịch vụ tra cứ ất cả các nodes còn lạu t i trong m ng, t t c các node cạ ấ ả ần master để có
thể k t n i và làm vi c v i nhau Trong các h ế ố ệ ớ ệ ống phân tán, các node có th trên các th ểmáy tính khác nhau Luôn luôn có m t tab ch y master ộ ạ (roscore) thì các chương trình ROS mới họat động được
Trang 21Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
9
Parameter Server: Parameter Server cho phép chúng ta lưu trữ các parameter
toàn c c c a toàn h ụ ủ ệ thống như là thông số cấu hình các đặc tính c a robot Chúng ta có ủthể lưu chúng dưới file dạng yaml và sử dụng chung cho toàn bộ hệ thống
Messages: Các node giao ti p v i nhau qua messages M t message ch a d ế ớ ộ ứ ữ liệu cung c p thông tin cho các node khác ROS có nhi u lo i messages riêng và bấ ề ạ ạn cũng
có thể t phát tri n lo i riêng cự ể ạ ủa bạn
Topics: Messages được định tuyến thông qua hệ thống vận chuyển, trong đó được phân loại thành publish và subscribe Các node không thể trao đổi trực tiếp các messages với nhau mà phải thông qua các topics Topics được xem như là tiêu đề ủa ccác messages ch a dứ ữ liệu mà ta đã truyền đi Tên các topics phải độ ậc l p và không trùng với nhau
Services: Mô hình publish/subscribe thì r t linh ho t trong vi c giao tiấ ạ ệ ếp nhưng đặc điểm là truyền được đa đối tượng và một chiều Nhưng đôi khi lại không thích hợp cho vi c truy n theo dệ ề ạng request/reply, thường được dùng trong ki u h ể ệ thống phân b ổ
Do đó, việc truyền nhận theo dạng request/reply được dùng thông qua services Service được định nghĩa một cặp cấu trúc dữ liệu: một cho request và một cho reply Một node cung c p m t service thông qua m t thu c tính name, và m t client s d ng service b ng ấ ộ ộ ộ ộ ử ụ ằviệc g i mử ột request message và đợi ph n h i Là mả ồ ột cách khác để truyền t i các ảmessage chứa dữ liệu giữa các node
Bags: Là một định dạng để lưu và phát lạ ữ liệi d u trong quá trình hoạt động của
hệ thống
Trang 22Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Hình 1 7 Các node nói chuy n v i nhau thông qua Topic ệ ớ
1.2.3 Cấp độ cộng đồng
Cấp độ ộng đồ c ng ROS[1] bao gồm các bản phân phối ROS, kho lưu trữ, ROS Wiki và Câu tr lả ời ROS, cho phép các nhà nghiên c u, nhứ ững người có s thích và các ởngành trao đổi phần mềm, ý tưởng và ki n thế ức để phát tri n cể ộng đồng người máy trên toàn thế giới
Các b n phân phả ối ROS tương tự như vai trò của các b n phân ph i Linux H là ả ố ọmột b ộ sưu tập các ngăn xếp ROS đã được phiên bản hóa, cho phép người dùng s d ng ử ụcác phiên b n khác nhau c a các khung ph n m m ROS Ngay c khi ROS ti p tả ủ ầ ề ả ế ục được cập nhật, người dùng vẫn có th duy trì d án cể ự ủa họ ớ v i các phiên bản cũ hơn, ổn định hơn và có thể dễ dàng chuyển đổi giữa các phiên bản tại bất cứ lúc nào
ROS không duy trì một kho lưu trữ duy nhất cho các gói ROS; đúng hơn là ROS khuyến khích người dùng và nhà phát triển lưu trữ kho lưu trữ của riêng họ cho các gói
mà họ đã sử ụ d ng ho c t o ROS chặ ạ ỉ đơn giản cung c p m t ch m c c a các gói, cho ấ ộ ỉ ụ ủphép các nhà phát tri n duy trì quy n s h u và ki m soát ph n m m c a h Các nhà ể ề ở ữ ể ầ ề ủ ọphát triển sau đó có thể sử dụng ROS Wiki để quảng cáo và tạo các hướng dẫn để chứng minh vi c s d ng và chệ ử ụ ức năng của các gói ROS Wiki là diễn đàn cung cấp tài liệu thông tin v ề ROS, nơi các nhà nghiên cứu và nhà phát triển đóng góp tài liệu, c p nhậ ật, liên kết đến kho c a hủ ọ, và hướng d n cho b t k ph n m m ngu n m nào mà hẫ ấ ỳ ầ ề ồ ở ọ đã sản xu t ROS Answer là mấ ột trang web hướng t i cớ ộng đồng để giúp tr l i các câu hả ờ ỏi liên quan đến ROS mà người dùng có thể có
Trang 23Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
ưu điểm vượt trội như: khả năng thay đổi vị trí và định hướng hoạt động, độ chính xác cao…, bởi vì chúng có kh ả năng di chuyển và quay đồng th i hoờ ặc độ ậc l p, vì v y robot ậ
di động đa hướng đã thu hút được nhi u s ề ự chú ý hơn Trong kỹ thuật điều khi n chuyể ển động c a OMR, vủ ấn đề bám qu ỹ đạo và tác động nhanh là r t c n thi t Có nhiấ ầ ế ều phương pháp điều khiển robot nhưng có rất ít công trình nghiên cứu dung điều khiển trượt cho robot đa hướng
Hình 2 1 H ệ thống cơ họ c và hệ th ống điều khiển của mô hình xe omni
S khác bi t giự ệ ữa robot Omni và robot Ackerman là mô hình động h c c a mọ ủ ỗi loại xe, nên t ừ đó mỗi loại robot được ứng d ng vào th c t m t cách khác nhau ụ ự ế ộ Ở loại robot Ackerman là lo i robot có c u trúc c a nh ng loạ ấ ủ ữ ại oto đang sử dụng hi n nay, nên ệkhi s d ng nh ng khu v c ch t hử ụ ở ữ ự ậ ẹp và đòi hỏi tính linh động cao thì khó áp d ng vào ụđúng mục địch, bên cạnh đó những robot Omni lại có tính linh động cao, dễ dàng di chuyển trong môi trường chật hẹp, nhiều vật cản Bên cạch đó, robot omni hoạt động mỗi bánh độc lập và cấu tạo của bánh xe không cho phép robot hoạt động ở tốc độ cao như robot Ackerman Từ những đặc điểm n i b t c a loổ ậ ủ ại robot Omni nên nhóm đã chọn loại robot này để nghiên cứu và phát tri n tài ể đề
Trang 24Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
STACK)
Hình 3 1 T ng quan v navigation stack [3] ổ ề
Để m t robot có th t di chuy n trong mộ ể ự ể ột môi trường nhất định, ta c n phầ ải đáp ứng đủ các y u t ế ố đã được nêu ở mục 1.1 Và navigation stack [3] có thể được xem như
là tên g i c a toàn b quá trình mà m t robot tọ ủ ộ ộ ự điều hướng di chuyển Sơ đồ trên cho thấy t ng quan v c u hình này thông qua các node có th kh i t o thông qua vi t mã ổ ề ấ ể ở ạ ếlệnh thông qua ROS Các điều ki n tiên quy t cệ ế ủa ngăn xếp điều hướng, cùng với hướng dẫn v cách th c hi n t ng yêu cề ự ệ ừ ầu, được cung c p trong các phấ ần bên dưới M i thành ỗphần là mỗi node thực hiện m i chỗ ức năng và g i các dữ liệử u thông qua các topics
3.1 Chuyển đổi cấu hình
Mỗi b ph n trong m t h ộ ậ ộ ệ thống đều mang m t khung tộ ọa độ Nhi u gói ROS[1] ềyêu c u cây biầ ến đổi ( tree transform ) của robot được xuất b n bả ằng thư viện ph n mầ ềm
tf Ở m c trứ ừu tượng, cây biến đổi xác định các hi u s v c d ch và quay gi a các ệ ố ề ả ị ữkhung tọa độ khác nhau c a m i b ph n ho c m i thành ph n trong h ủ ỗ ộ ậ ặ ỗ ầ ệ thống robot hay giữa robot với môi trư ng xung quanh ờ
Để làm rõ điều này, chúng ta s xem xét m t ví d v mẽ ộ ụ ề ột robot đơn giản v i m t ớ ộphần đế và một laser đặt trên đứng trước một bức tường Chúng ta sẽ đặt cho mỗi bộ phận c a robot m t h tủ ộ ệ ọa độ Oxyz có tên là “base_link” và “base_laser” và gố ọa độc tnằm ở điểm chính giữa của mỗi bộ ph n ậ
Trang 25Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
13
Hình 3 2 Ví d minh h a cho robot ụ ọKhi đó, giả sử ta có được dữ liệu khoảng cách thu được từ laser và được thể hiện thông qua tọa độ “base_laser” là (0.3, 0.0, 0.0) thể ệ hi n cho kho ng cách tả ừ laser đến bức tường là 0.3 met theo phương x Giả sử ta muốn robot hoạt động trong môi trường thông qua phần thân robot, đầu tiên ta c n phầ ải đặ ệ ọa độ g c ct h t ố ủa là “base_link” Sau
đó chúng ta cần phải xác định mối quan hệ giữa hai hệ tọa độ “base_link” và
“base_laser” Ta có dữ liệ ằu r ng tia laser gắn trên đế robot cao hơn phần tâm điểm của
nó 0.2m theo phương z và lệch về phía trước theo phương x 0.1m Ta có d = (x: -0.1m, y: 0.0m, z: -0.2m) được xem như là độ ệch tị l nh ti n c a hai khung tế ủ ọa độ này Để ến biđổi một điểm trong hệ tọa độ “base_laser” sang hệ ọ t a đ “base_link” chúng ta phải áp ộdụng m t biộ ến đổi tịnh tiến trên điểm đó pbase_link = pbase_laser + d và có được k t qu (0.2, ế ả0.0, -0.2)
Trong các ng d ng robot lứ ụ ớn hơn, robot và hệ thống s có nhi u khung tẽ ề ọa độhơn, các biến đổi giữa các hệ tọa độ ẽ phức t s ạp hơn và thường là các ma trận biến đổi Affine bao gồm cả phép t nh tiị ến và phép xoay (x’y’z’ = Amatrix * xyz)
Trang 26Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Hình 3 3 C u trúc cây bi ấ ến đổi khung tọa độ của robot t hành, và s ự ự bi ến đổ i gi ữ a các khung tọa độ Tọa
độ gốc của h thống sẽ được đặt ở khung tọ ệ a đ “base_link” Xyz, rpy là các nhánh biến đổi ộ
Hình 3 4 C u trúc cây chuy ấ ển đổ i gi ữa robot và map được tạo
Việc vi t các chuyế ển đổi gi a các khung tữ ọa độ được th c hi n thông qua công ự ệ
cụ tf (viết bằng source file) Ngoài ra, file URDF cũng tạo ra m t khung tộ ọa độ và duy trì các m i quan h gi a các b ph n v i nhau mà không c n phố ệ ữ ộ ậ ớ ầ ải định nghĩa lại thông
qua tf
Công cụ tf sẽ ử g i các thông tin chuyển đổi này thông qua topics “/tf” và thông thường có thể hiển thị hoặc theo dõi thông qua Rviz
Trang 27Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
15
3.2 Thông tin cảm bi n (Sensor information) ế
Mọi robot t di chuy n c n ph i bi t m i th vự ể ầ ả ế ọ ứ ề môi trường xung quanh nó Để
có thể s d ng các gói t o l p bử ụ ạ ậ ản đồ, thông tin c m bi n là thả ế ứ đầu tiên phải được xác nhận
Trong hệ thống mô ph ng c a chúng ta ch s d ng c m bi n Laser v khoỏ ủ ỉ ử ụ ả ế ề ảng cách gi a các v t c n và chính nó Ta có th mô ph ng c m bi n này trong Gazebo và ữ ậ ả ể ỏ ả ếlaser sử d ng là Rplidar model A1 ụ
Các d ữ liệu được đưa truyền qua các node thông qua messages đã được định dạng
trước là sensor_msgs/LaserScan hoặc sensor_msgs/PointCloud
Vì ta ch s d ng laser nên ta ch s d ng message ỉ ử ụ ỉ ử ụ sensor_msgs/LaserScan
Những dữ liệu c m bi n này sả ế ẽ được thu th p và truy n tậ ề ới các node khác để thực hiện tính toán thông qua các sensor topics (thông thường tên topic là “scan”) Cấu trúc của một mess
sensor_msgs/LaserScan
# Laser scans angles are measured counter clockwise, with 0 facing forward
# (along the x-axis) of the device frame
#
Header header
float32 angle_min # start angle of the scan [rad]
float32 angle_max # end angle of the scan [rad]
float32 angle_increment # angular distance between measurements [rad]
float32 time_increment # time between measurements [seconds]
float32 scan_time # time between scans [seconds]
float32 range_min # minimum range value [m]
float32 range_max # maximum range value [m]
float32[] ranges # range data [m] (Note: values < range_min or > range_max should be discarded) float32[] intensities # intensity data [device-specific units]
Bảng 1 B ng thông s c u trúc m ả ố ấ ột messager cho c m bi n ả ế
3.3 Thông tin về trạng thái robot (Odometry information)
Trong robot h c, thông tin vọ ề trạng thái c a robot là thông tin v vủ ề ị trí ước tính của robot (x , y , ) t i m t tht t t ạ ộ ời điểm cụ thể sau khi di chuyển liên quan đến vị trí bắt đầu của nó Ví d v i robot xe b n bánh tụ ớ ố ự hành, thông thường chúng ta sẽ đặt m t khung ộtọa độ 2D Oxy tên là “odometry” tại nơi robot sẽ ắt đầ b u thực hiện di chuyển Sau đó dựa vào thông tin v n t c cậ ố ủa robot để ước tính được vị trí c a robot trong khung tủ ọa độ
“odometry” này Xem hình 3.5, robot bắt đầu tại một ví trí c ụ thể trong môi trường Tại
Trang 28Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
vị trí bắt đầu này, đặt hệ tọa độ “odometry” có gốc tại trung tâm c a robot Gi s robot ủ ả ử
di chuyển theo phương thẳng x v i v n t c 0,2 m/s và di chuy n tớ ậ ố ể rong vòng 10s, khi đó robot s k t thúc quãng di chuy n t i v trí x b ng 2 (k t qu b ng v n t c nhân th i gian ẽ ế ể ạ ị ằ ế ả ằ ậ ố ờ
di chuy n) ể
Hình 3 5 Ví d v ụ ề xác định v trí robot trong t ị ọa độ "odometry"
Thông thường trong robot th c tự ế, việc tính toán th i gian di chuy n c a robot s ờ ể ủ ẽđược tính b ng b ằ ộ đếm th i gian c a b x ờ ủ ộ ử lý như máy tính nhúng hoặc bo m ch nhúng, ạviệc tính toán quãng đường đã di chuyển của robot có thể dựa vào bộ mã hóa (encoder) được đặt ở bánh xe của chúng Để triển khai bộ mã hóa này, một thiết kế phổ biến là một đèn LED đi-ôt phát sáng và cảm biến ánh sáng khi bánh xe di chuyển, và một đĩa
mã hóa được g n song song Khi bánh xe di chuy n m i lắ ể ỗ ần ánh sáng đi qua lỗ c m biả ến
sẽ p nh n thông tin ánh sáng và g i tín hi u s v b x lí Chu vi c a bánh xe là 2 r, tiế ậ ử ệ ố ề ộ ử ủ 𝜋với r là bán kính bánh xe, v i m i l n xoay hoàn toàn 1 chu kì hình tròn, ta có quãng ớ ỗ ầđường c a bánh xe là n2𝜋r Số lỗ ủ trên đĩa mã hóa sẽ tương ứng với độ phân giải của bộ
mã hóa Ví dụ như hình 3.6.b với ỗ trên đĩa mã hóa, quãng đường đi đượ8 l c c a bánh ủ
xe robot là n2𝜋r/8 Ngoài ra tốc độ còn có th tính bể ằng các đặc tính của động cơ
Trang 29Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
17
Hình 3 6 B ộ mã hóa đo quãng đườ ng bánh xe di chuy ển đượ c (C ấu trúc encoder và đĩa encoder) Đối v i ph n m m mô ph ng ta có th dùng cớ ầ ề ỏ ể ấu trúc động h c cọ ủa robot (chương 2) tính thông tin v ng thái c a robot để ề trạ ủ
Việc xác định thông tin odometry thường bị nhầm lẫn với việc định vị robot Trong các vấn đề định vị robot, thường một bản đồ ủa môi trường “map” bao gồ c m tất
cả các v t c n và khu v c chiậ ả ự ếm đóng sẽ được tính toán, yêu c u và thông qua các thuầ ật toán ta s ẽ định v robot trên bị ản đồ mà nó đã tính toán trước đó, vấn đề này thường được gọi là SLAM Thông tin odometry thông thường đượ ử ụng trong vic s d ệc định v v trí ị ịrobot này, nó thường được kết hợp với thông tin laser để tính toán
Ta có thể dùng Services để ấ l y các thông tin tr ng thái robot t ph n m m mô ạ ừ ầ ềphỏng, và xu t b n thông tin này b ng dấ ả ằ ữ liệu dưới định d ng messages ạ
nav_msgs/Odometry.msg qua các topic /tf /odom Cấu trúc c a message : ủ
Trang 30Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
float64 w
float64[36] covariance
geometry_msgs/TwistWithCovariance twist
geometry_msgs/Twist twist
geometry_msgs/Vector3 linear float64 x loat64 y float64 z
geometry_msgs/Vector3 angular float64 x float64 y float64 z
float64[36] covariance
Bảng 2 B ng thông s c ả ố ấu trúc odommetry của robot
3.4 T ạo l p bậ ản đồ và định v ị robot trong bản đồ (SLAM[4])
Hình 3 7 Bản đồ ới thu đượ lư c từ gói gmapping
Dữ liệu c m biả ến được thu thập đượ ẽ đượ ử ụng để ạ ậc s c s d t o l p bản đồ ữ h u ích cho vi c di chuy n c a robot Có nhi u thu t toán t o l p bệ ể ủ ề ậ ạ ậ ản đồ tuy nhiên các thuật toán hi u qu hi n ệ ả ệ nay thường đi chung với định v v trí c a robot trong chính bị ị ủ ản đồ
đã được tạo vấn đề này thường được gọi là SLAM (tạo lập bản đồ đồng thời định vị vị trí robot) Để robot xây dựng được bản đồ, robot cần ước tính vị trí chính xác của nó và
đểcó được điều đó, robot cần phải có m t bộ ản đồ nhất quán Nếu chúng ta có thông tin
về bản đồ trước đó, ta có thể thực hiện định v robot trên bị ản đồ này riêng l qua các ẻthuật toán khác Trong luận văn này, chúng ta sẽ ử ụ s d ng thuật toán Gmapping để ạo tlập bản đồ và AMCL để định vị vị trí cho robot
3.4.1 B l ộ ọc hạ t
Để hiểu rõ về các thuật toán trên, chúng ta cần phải biết về bộ lọc hạt (Practice Filter) đặc biệt là kalman filter Bộ lọc hạt (Practice Filter) là một thuật toán ước lượng tối ưu Nó được dung trong việc ước lượng trạng thái của một hệ thống khi trạng thái này không th ể đo lường, tính toán tr c ti p Ví d v i m t chi c xe di chuyự ế ụ ớ ộ ế ển trên đường
và ta cần xác định v trí cị ủa nó trong một quảng đường cho trước
Trang 31Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
19
Hình 3 8 Ví d minh h a ụ ọChúng ta có thể tính toán được v trí cị ủa nó như cách tính thông tin odometry là tính dựa vào quãng đường mà nó di chuyển được thông qua v n tậ ốc đo đạc được từ các thiết b c m bi n bánh xe cùng vị ả ế ới đó có thể ế ợ k t h p v i vi c tính toán thông qua GPS ớ ệ
để xác định v trí của nó trên mặt phẳng Các viị ệc tính toán này thường được xem là
động lực học của xe Mặc khác, ta cũng có thể tính toán ước lượng vị trí của xe thông qua mô hình toán h c ng h c cọ độ ọ ủa xe (như chương 2), cả hai cách tính toán này đều có sai s ố ảnh hưởng t i v trí c a robot Vi c s d ng GPS ho c tính toán thông tin odometry ớ ị ủ ệ ử ụ ặthường sẽ có nhiễu và việc tính toán thông qua mô hình toán ch xem như là việc ước ỉtính vị trí vì b ỏ qua các tác động lực như lực quán tính, ma sát v.v
Hình 3 9 Ví d v các ho ụ ề ạt độ ng tính toán v trí c ị ủa xeThuật toán b l c h t cho phép chúng ta k t hộ ọ ạ ế ợp hai mô hình này để ước tính v ịtrí gần như chính xác của xe trên quãng đường Vì việc tính toán chính xác vị trí của xe
là không có thật nên bài toán này đưa về bài toán xác su t, v i xác su t v trí c a xe tấ ớ ấ ị ủ ại một điểm được dựa vào hàm mật độ p(y).Vị trí của xe t i m t thạ ộ ời điểm được phân b ốtheo m t nhóm xác su t phân b chuộ ấ ố ẩn Gauss (như hình), với mỗi đường cong mật độxác suất hình chuông sẽ tương ứng với mỗi xác suất vị trí tính toán được của xe, đường
cong xanh tương ứng với xác suất vị trí tính được thông qua mô hình toán p(y^), đường
Trang 32Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh cong cam tương ứng với xác suất vị trí tính được thông qua đo đạc, động lực học p(yk)
và màu xám tương ứng với xác suất v trí tị ối ưu Mỗ ịi v trí c a xe trong khu v c mủ ự ật độ xác suất được g i là h t (v trí xe), thu t toán b l c họ ạ ị ậ ộ ọ ạt sẽ lượ ỏt b các h t (v trí xe) có ạ ịxác suất thấp chính xác c p nh p ch n l c cho tậ ậ ọ ọ ới khi đạt được hạt (vị trí xe) tối ưu
Hình 3 10 Hàm m ật độ xác su t v trí c a xe ( phân ph i Gauss ),xe có th các v trí trong phân ph i xác ấ ị ủ ố ể ở ị ố
suất
Thuật toán b lộ ọc Kalman được mô tả thông qua hai bước tính toán bao g m : ồ
Ước tính lần u và cập nhập việc ưđầ ớc tính dựa vào ước tính trước đó
Ước tính lần đầu (Piori estimate):
𝑦𝑘= 𝐴𝑦∗𝑘−1+ 𝐵𝑢𝑘
𝑃𝑘−= 𝐴𝑦𝑘−1∗ 𝐴𝑡+ 𝑄 Đây xem như là việc tính toán không chắc chắn dựa trên mô hình toán học, với
𝑃𝑘−là phương sai của hàm mật độ xác su t Viấ ệc tính toán này thông qua đầu vào c a v ủ ịtrí tối ưu trước đó 𝑦𝑘−1∗ và phương sai trước đó
Và thông qua vi c k t h p gi a việ ế ợ ữ ệc ước tính lần đầu và ước tính t ng l c hừ độ ự ọc của xe Ta sẽ cập nhập thông tin (Update) tính toán 𝐾𝑘 và phương sai 𝑃𝑘 c a xác suủ ất
vị trí tối ưu 𝑦𝑘∗, từ đó tính được vị trí tối ưu 𝑦𝑘∗ dựa vào tính toán xác suấ ớt l n nh ất
𝐾𝑘= 𝑃𝑘
−𝐶𝑇
𝐶𝑃𝑘−𝐶𝑇+ 𝑅
𝑃𝑘= (𝐼 − 𝐾𝑘𝐶)𝑃𝑘−
Vị trí tối ưu của xe tiếp theo : 𝑦𝑘∗= 𝑦 + 𝐾𝑘 𝑘× (𝑦𝑘− 𝐶 × 𝑦𝑘)
Av c ứ thế ta sẽ l i dùng vị trí và phương sai vừa tính toán y*k và Pk để tính toán ạtiếp cho việc Ước tính lần đầu ti p theo ế 𝑃𝑘+1 − và 𝑦𝑘+1
3.4.2 Thu t toán AMCL ậ
Quay tr lở ại bài toán định v v trí c a robot trong m t bị ị ủ ộ ản đồ đã có sẵn (có th ểbằng phát họa tay), b lộ ọc Kalman thường được dùng để ế ợp thông tin thu đượ ừ k t h c t
Trang 33Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
21
cảm biến khoảng cách (Laser) để ước tính lần đầu và thông tin odometry thu được s ẽdùng để cập nhập bộ lọc Đầu tiên chúng ta sẽ khởi tạo các vị trí ngẫu nhiên của robot trong bản đồ (giống như việc xe hơi có thể nằm đâu đó trong đoạn đường đã cho)
Hình 3 11: Ví d v robot trong m t b ụ ề ộ ản đồ ồm 4 bức tường (bên phải là kh i t o ng u nhiên v trí g ở ạ ẫ ị tượ ng
trưng) Dựa vào thông tin laser thu được (màu đỏ) ta có thể lọc đi các vị trí ngẫu nhiên
đã tạ không có cùng thông tin mà nó thu được (như vịo trí ngẫu nhiên 1 s b ẽ ị lược bỏ vì
vị trí 2 thu được thông tin g n giầ ống v i thông tin robot) và xem xét các v trí không ớ ịphạm l i s có xác ỗ ẽ suất chính xác hơn, các vị trí này s ẽ đượ ổc t ng h p l i thành m t mợ ạ ộ ật
độ xác suất và ta sẽ lại kh i tạo một số lượng các hạt ngẫu nhiên trên chính các v trí ở ịnày
Hình 3 12 : Khu v c co th có v ự ể ị trí robot sau khi lược bỏ các hạt có thông tin laser sai và khởi t o l i các ạ ạ
hạt trong các khu v c này ựTiếp đó, ta sẽ di chuyển robot đồng thời di chuy n t t c các h t v trí ng u nhiên ể ấ ả ạ ị ẫ
đã tạo trước đó để có thể thu thập được thông tin về odometry của robot, từ đây ta lại dung thông tin laser để ậ c p nh p l i các vậ ạ ị trí thu được thông tin laser giống nhau như trên và lọc p các h t không trùng tiế ạ
Trang 34Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Hình 3 13: Di chuyển robot đồng thời di chuy n t ể ấ ả t c các hạt
Và c lứ ặp đi lặ ạp l i vi c này cho t i khi mệ ớ ật độ xác su t tấ ập trung l i mạ ột điểm
đó chính là vị trí tối ưu nhất của robot sau khi qua b lọc kalman, đây được gọi là thuật ộtoán Monte Carlo Localizication (MCL)
Hình 3 14 Qua nhi u l n c p nh p thì m ề ầ ậ ậ ật độ ạ ẽ ậ h t s t p trung t i m t khu v c ạ ộ ự
3.4.3 Thu t toán Gmapping ậ
Tiếp theo ta s nói v bài toán t o l p bẽ ề ạ ậ ản đồ thông qua thu t toán Gmapping ậThuật toán này s giúp chúng ta t o nên m t bẽ ạ ộ ản đồ luới chiếm đóng từ thông tin cảm biến kho ng cách laser và là m t thu t toán b lả ộ ậ ộ ọc h t Rao- ackwellized hi u quạ Bl ệ ả Thuật toán cung cấp hai cách để tăng hiệu năng của vi c t o l p bệ ạ ậ ản đồ là: Đưa ra một phân phối đề xuất xem xét độ chính xác c a các c m biủ ả ến đo lường robot và cho phép
vẽ các hạt với độ chính xác cao, theo sau là kỹ thuật lấy m u tẫ hích ng, giúp duy trì sứ ố lượng l n hạt và giớ ảm nguy cơ cạn kiệ ạt t h
Ý tưởng chính của thuật toán bộ lọc Rao-Blackwellized cho bài toán SLAM là ước tính một xác suất hậu kì p(𝑥1:𝑡, 𝑚 𝑧|1:𝑡, 𝑢 ) về quĩ đị0:𝑡 a tiềm năng 𝑥1:𝑡 d a trên các ựthông số đo đạc theo mi n th i gian kí hi u là ề ờ ệ 𝑧1:𝑡và tín hi u thông tin odometry ệ 𝑢 0:𝑡
và dùng xác su t hấ ậu kì này để tính toán m t xác su t h u kì cu i cùng v bộ ấ ậ ố ề ản đồ và qu ỹđạo
Trang 35Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
23
p(𝑥1:𝑡, 𝑚 𝑧| 1:𝑡, 𝑢 ) = 𝑝0:𝑡 (𝑚|𝑥1:𝑡, 𝑧1:𝑡)𝑝(𝑥1:𝑡|𝑧1:𝑡, 𝑢 ) 0:𝑡
Để ước tính xác suất hậu nghiệm 𝑝(𝑥 |𝑧1:𝑡 1:𝑡, 𝑢 ) trên các qu0:1 ỹ đạo tiềm năng, thuật toán t o l p bạ ậ ản đồ Rao-Blackwellized s d ng m t b l c hử ụ ộ ộ ọ ạt trong đó mộ ản t b
đồ lẻ được liên kết v i m i mẫu Mớ ọ ỗi map được xây dựng dựa trên tín hiệu cảm biến
𝑧1:𝑡 và quĩ đạ 𝑥 tượng trưng cho mỗ ạt tương ứo 1:𝑡 i h ng Một trong những thuật toán bộ lọc h t ph bi n nh t là b l c Sampling Importance Resampling (SIR) Thu t toán b ạ ổ ế ấ ộ ọ ậ ộlọc Rao-Blackwellized SIR cho t o l p bạ ậ ản đồ ừng bướ t c x lý các tín hi u quan sát ử ệ(cảm bi n) và thông tin odometry n u chúng có s n Vi c này có th hoàn thành b i viế ế ẵ ệ ể ở ệc cập nhập m t tộ ập mẫu đại diện cho xác suất và quĩ đạo c a robot Thu t toán này bao ủ ậgồm bốn bước:
Lấy m u: Nh ng hẫ ữ ạt đượ ạc t o kế tiếp {𝑥𝑡} đạt được t nh ng hừ ữ ạt được tạo hiện tại {𝑥𝑖𝑡−1} b ng cách l y m u t phân phằ ấ ẫ ừ ối đề xu t ấ 𝜋(𝑥𝑡|𝑧1−𝑡, 𝑢 ) 0:𝑡
Trọng s quan tr ng: M t tr ng s cá nhân quan trố ọ ộ ọ ố ọng được giao cho t ng hừ ạt,
đạt đư c từ ợ
𝑤𝑖= 𝑝(𝑥𝑡|𝑧1−𝑡, 𝑢 )0:𝑡𝜋(𝑥 |𝑧𝑡 1−𝑡, 𝑢 )0:𝑡trọng số 𝑤𝑖 giải thích rằng phân phối đề xu t nói chung không b ng phân phấ 𝜋 ằ ối thực của các trạng thái kế tiếp
Lấy m u l i: Các h t có tr ng sẫ ạ ạ ọ ố 𝑤𝑖 thấp được thay thế bằng các hạt mẫu có trọng s ố cao hơn Bước này là c n thi t vì ch có m t s ầ ế ỉ ộ ố lượng hạt hữu h n mạ ới đượ ửc s dụng để ước tính xấp x mỉ ột phân phối liên tục Hơn nữa, l y m u l i cho phép áp d ng ấ ẫ ạ ụmột bộ l c họ ạt trong trường hợp phân phôí thật khác với phân phối đề xu ất
Ước tính bản đồ: V i m i m u dáng ớ ỗ ẫ 𝑥𝑡, m t bộ ản đồ ước tính tương ứng 𝑚𝑡 được tính dựa trên quĩ đạo và s quan sát (cự ảm biến) trong quá kh d a theo ứ ự 𝑝(𝑚|𝑥1:𝑡, 𝑧1:𝑡) Phân phối đề xu t ấ 𝜋 được tính toán trong bướ ấc l y m u ph i x p x v i phân ẫ ả ấ ỉ ớphối thật 𝑝(𝑥1:𝑡|𝑧1:𝑡, 𝑢 ) và có th0:𝑡 ể được ch n tùy ý Theo Doucet l a chọ ự ọn tối ưu của phân phối đề xu t ấ 𝜋 đố ới phương sai củi v a tr ng s h t và theo gi nh Markov là ọ ố ạ ả đị
p(𝑥 |𝑚𝑡 𝑡−1𝑖 , 𝑥𝑡−1𝑖 , 𝑧𝑡, 𝑢 ) = 𝑡 𝑝(𝑧𝑡 |𝑚𝑡−1𝑖 , 𝑧𝑡)𝑝(𝑥 |𝑥𝑡 𝑡−1𝑖 ,𝑢 𝑡 )
∫ 𝑝(𝑧𝑡 |𝑚𝑡−1 𝑖 , 𝑥′)𝑝(𝑥′ |𝑥𝑡−1𝑖 , 𝑢𝑡)𝑑𝑥 ′Trong hệ thống thu t toán này, ta s x p xậ ẽ ấ ỉ 𝑝(𝑥 |𝑥𝑡 𝑡−1𝑖 , 𝑢𝑡) b i k trong mở ột khoảng 𝐿𝑖 dựa trên
𝐿𝑖= [𝑥|𝑝(𝑧 |𝑚𝑡 𝑡−1𝑖 , 𝑥)] > 𝜀
Trang 36Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Với công thức này ta có
p(𝑥 |𝑚𝑡 𝑡−1𝑖 , 𝑥𝑡−1𝑖 , 𝑧𝑡, 𝑢 ) ≈ 𝑡 𝑝(𝑧𝑡|𝑚𝑡−1𝑖 , 𝑥𝑡)
∫ 𝑝(𝑥 ′ |𝑥𝑡−1𝑖 , 𝑢𝑡)𝑑𝑥 ′ 𝒙′∈ 𝑳𝒊
Sau đó, ước tính x p x c c b phân ph i này xung quanh hàm kh ấ ỉ ụ ộ ố ả năng lớn nhất
bở Gauss
p(𝑥 |𝑚𝑡 𝑡−1𝑖 , 𝑥𝑡−1𝑖 , 𝑧𝑡, 𝑢𝑡) ≃ 𝑁(𝜇𝑖, ∑ )𝑖 Với s x p xự ấ ỉ này, ta được m t dộ ạng đóng phù hợp để ấ l y m u V i m i h t hai ẫ ớ ỗ ạtham s có thố ể được xác định b i sở ự đánh giá bởi hàm khả năng cho mộ ật t p h p các ợđiểm { } được lấy m u xung quanh s ẫ ự tướng ứng c c b l n nhụ ộ ớ ất được tim b i quá trình ởquét đối xứng
𝑗=1 (𝑧𝑡|𝑚𝑡−1𝑖 , 𝑥𝑗) là m t chu n hóa Vi c tính hai giá tr trên ộ ẩ ệ ịcũng như quá trình quét đối xưng được thực hi n v i m i h t Giá tr {ệ ớ ỗ ạ ị 𝑥𝑗} được chọn đểbao ph m t khu v c phủ ộ ự ụ thuộc vào độ không ch c chắ ắn khi đọc giá tr odometry cuị ối cùng và mật độ phụ thuộc vào độ phân giải của bản đồ luới Trọng s quan tr ng có th ố ọ ểtính gần đúng bằng công thức :
𝑤𝑡= 𝑤𝑡−1𝑖 𝑝(𝑧𝑡, 𝑚𝑡−1𝑖 , 𝑢𝑡) = 𝑤𝑡𝑘ƞ Một khía c nh khác có ạ ảnh hưởng lớn tới hi u su t c a b lệ ấ ủ ộ ọc hạt là bướ ấy c lmẫu l i Trong quá trình l y m u Trong quá trình l y m u l i, các h t vạ ấ ẫ ấ ẫ ạ ạ ới tr ng sọ ố 𝑤𝑡nhỏ s b thay th b i các h t có tr ng sẽ ị ế ở ạ ọ ố 𝑤𝑡 l n M t m t vi c l y m u là c n thi t vì ớ ộ ặ ệ ấ ẫ ầ ếchỉ có m t số lượng h u h n h t có th s d ng Mộ ữ ạ ạ ể ử ụ ặt khác, bước lấy m u l i có th xóa ẫ ạ ể
đi các hạt mẫu tốt, gây sự suy giảm h t Một cách lấy hạt hiệu quả ạ đó là
𝑁𝑒𝑓𝑓= 1
∑𝑁 (𝑤𝑖)2 𝑖=1Giá tr ịnày giúp đánh giá xem tập hợp h t hi n tạ ệ ại đại diện cho xác su t h u kì tấ ậ ốt như thế nào Nếu các mẫu đượ ấy từ xác suất hậu kì thực sự, thì trọng số quan trọng c l
𝑤𝑡 c a các m u s b ng nhau S gủ ẫ ẽ ằ ự ần đúng càng xấu thì phương sai của các tr ng s ọ ốcàng l n Vì ớ 𝑁𝑒𝑓𝑓 có thể được coi là thước đo độ phân tán cảu các tr ng s quan tr ng, ọ ố ọnên nó là thước đo hữu ích để đánh giá xem tập hợp hạt hậu kì thự ực s như thế nào
Trang 37Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
25
3.5 Bản đồ chi phí (Cost Map)
Hình 3 15 Mô t v qu ả ề ỹ đạ o di chuy n c a robot khi có b ể ủ ản đồ chi phí Vì có bản đồ chi phí nên robot s ẽ tránh ti p xúc g ế ần v i các v ớ ậ ả t c n, giúp nó di chuy n an toàn và ta có ể thể ễ d dàng tính toán Bản đồ chi phí thông thường giúp th i phòng các giá tr c m bi n v v t c n giúp ổ ị ả ế ề ậ ảviệc qu n lí chuyả ển động của robot mượt mà hơn và là cần thiết trong việc bảo vệ robot
an toàn, tránh các v t c n Gói ậ ả costmap_2d sử ụ d ng s d ng d u c m bi n và thông ử ụ ữ liệ ả ếtin t bừ ản đồ tĩnh thu đượ ừ trước để lưu trữ ữ liệc t d u và c p nh p thông tin v môi ậ ậ ềtrường và những vật cản xung quanh robot Gói costmap_2d cung c p dữ liệu thông tin ấdưới d ng 2D(x, y) v thông tin chiạ ề ếm đóng dạng lưới c a các v t củ ậ ản Nó đăng kí thông tin t các chừ ủ đề ả c m biến để ự ậ t c p nh p các thông tin này trên bậ ản đồ tĩnh ( xóa, vẽcác vật cản trên bản đồ)
Việc th hiể ện màu trên đồ luới s thêm ho c xóa b t các ô màu trên bẽ ặ ớ ản đồ tương đương với tín hiệu cảm biến Mỗi ô thông tin trên bản đồ có thể là không gian bị chiếm đóng, không gian trống và không gian chưa biết Mỗi loại thường tương ứng với một giá tr màu c ị ụ thể (0 -255) để thể ệ hi n rõ ràng trên bản đồ tĩnh (ta có thể tùy chỉnh để có màu khác nhau) Như hình duới ta có khôi đa giác đỏ là v trí robot, các dị ải ô đỏ là thông tin v v t cề ậ ản thu đượ ừc t tín hi u laser (không gian bệ ị chiếm đóng), màu xám nhạt ởtrong tượng trưng cho vị trí trống (không gian trống) và màu xám đậm là những thông tin chưa biết về môi trường (không gian chưa biết)
Trang 38Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
Hình 3 16 Ví d v cost map trong ROS ụ ề
Có hai lo i bạ ản đồ chi phí chính được khởi tạo thông qua ROS đó là: Bản đồ chi phí toàn c c (global cost map) và bụ ản đồ chi phí c c b (local cost map) Bụ ộ ản đồ chi phí toàn cục được xây d ng trên bự ản đồ tĩnh lúc đầu Trong khi đó, bản đồ chi phí c c b s ụ ộ ẽtập trung vào lúc di chuy n c a robot, l y thông tin v m t bể ủ ấ ề ộ ản đồ nhỏ xung quanh robot khi nó di chuy n, và t o bể ạ ản đồ chi phí trong khu vực bản đồ nh này.ỏ
3.6 Chuyển động (Move Base)
Việc robot chuyển động ho c di chuy n c n ph i thông qua các thu t toán l p k ặ ể ầ ả ậ ậ ếhoạch chuyển động của robot Thông thường đối với vấn đề điều hướng robot, sẽ có hai công đoạn để tính toán ra các tín hiệu điều khiển cho các thiết bị truyền động (motor)
đó là: Lập kế hoạch đường đi (Path planning) thường là một vấn đề toàn cục, nó sẽ tạo
ra một con đường cho phép robot di chuy n tể ừ điêmmr này đến điểm mong mu n, tiố ếp sau đó là lập kế hoạch chuyển động (motion planning) thường là một vấn đề cục bộ, dùng để tính toán các lệnh hoạt động cần thiết để bán vào đường đi thu được từ lập kế hoạch đường đi Việc lập kế hoạch chuyển động phụ thuộc vào mô hình chuyển động của robot (Chương 2) kết hợp v i các thuớ ật toán điều khiển tối ưi và các yếu t ố tác động của môi trường, t ừ đó tính toán các đơn vị điều khiển robot như vậ ốc, góc xoay bánh n tlái, hoặc gia tốc, v.v Để điều khi n hoể ạt động của robot
Hình 3 17 Ví d v ụ ề đườ ng di chuy n và ể quĩ đạ o chuy ển độ ng c ủa robot (Đường xanh
lá là đường đi toàn cục, đường màu đỏ là quỹ đạo c ục bộ).
Trang 39Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh
27
Đầu tiên ta s ẽ nói đến vi c l p k hoệ ậ ế ạch đường đi cho robot, thông thường là con đường ngắn nhất để ẫn đế d n v trí mong mu n Các thuị ố ật toán tìm đường ngắn nhất ph ổbiến như Djikstra sẽ giúp ta khám phá toàn bộ tất cả tuyến đường có thể có trong biểu
đồ cho đến khi tìm thấy đường dẫn t i nút mớ ục tiêu, sau đó tiế ục cố gằng tìm tuyến p tđường ng n nh t M t trong nh ng thu t toán dắ ấ ộ ữ ậ ựa trên Djikstra và thường được s d ng ử ụtrong l p k hoậ ế ạch đường di chuy n là A*, vi c khám phá bể ệ ản đồ ủ c a thu t toán dậ ựa trên hàm heuristic V i heuristic, vi c khám phá biớ ệ ểu đồ ệ hi u quả hơn vì thuật toán có thể m rở ộng đầu tiên các nút có giá tr heuristic thị ấp hơn Xem xét điều này, có nhiều khả năng tìm thấy con đường ng n nhắ ất đến m c tiêu mà không ph i th c hiụ ả ự ện tìm kiếm qua tất cả các nút trên bản đồ
Hình 3 18: Đường dẫn toàn c ục củ a robot (thu t toán Dijkstra, A*) ậ
Node move_base tạo một đường d n toàn c u thông qua gói ẫ ầ global planner Gói global_planner có th s d ng m t sể ử ụ ộ ố thuật toán l p k hoậ ế ạch đường d n khác nhau ẫ
Ta có thể ựa chọn đườ l ng d n toàn cẫ ục bằng cách set tham s ố
Gói base_local_planner phát tri n m t quể ộ ỹ đạo c c bụ ộ thông qua các gói thuật toán như TEB, DWA, EBEND và cung cấp lại tín hiệu điều khiển dx, dy và dθ cho gói
move_base để g i t i làm chuyử ớ ển động robot base_local_planner là m t ph n quan ộ ầtrọng c a h ủ ệ thống nó thưc hiện các qu ỹ đạo di chuy n ng n tể ắ ối ưu bám theo đường dẫn toàn cục (path planning) di chuy n t i v trí mong mu n để ể ớ ị ố
3.6.1 Phương Pháp Teb local planner
TEB local planner là một thuật toán tri n khai công c l p k ho ch quể ụ ậ ế ạ ỹ đạo cục
bộ tối ưu trực tuyến để điều hướng và điều khiển robot di động như một plugin cho gói điều hướng ROS giúp suy ra các tính hiệu điều khiển Quỹ đạo ban đầu được tạo bởi trình l p k ho ch toàn cậ ế ạ ầu đượ ối ưu hóa trong thờc t i gian ch y th c gi m thi u thạ ự ả ể ời gian th c hi n qu o (m c tiêu tự ệ ỹ đạ ụ ối ưu về thời gian), tách bi t khệ ỏi các chướng ng i vạ ật
và tuân thủ các ràng buộc cơ học như thỏa mãn v n t c và gia t c tậ ố ố ối đa
Trang 40Luận Văn Tốt Nghiệp Nguyễn Ngọc Lĩnh Mục tiêu t ng thổ ể là điều khi n robot t mể ừ ột điểm 𝑠𝑠 đến vị trí mong muốn 𝑠𝑓 trong m t th i gian ng n nhộ ờ ắ ất ( điều khi n tể ối ưu) Vấn đề ối ưu hóa cơ bản đượ t c xác định trong các thuật ngữ của một vectơ tham số ữu hạn chiều bao gồm trình tự tùy ý h
của n cấu hình robot (𝑠𝑘)𝑘= 1,2,3 … Phương pháp TEB kết hợp thông tin t m th i trạ ờ ực tiếp vào vấn đề ối ưu hóa và do đó giả t i quyết việc gi m thi u th gian chuyả ể ời ển đổi theo hạn chế cơ học Đặt kí hi u ệ (∆𝑇𝑘)𝑘= 1,2, …, n-1 bi u th m i chu i thể ị ỗ ỗ ời gian dương nghiêm ng c M i ặ ỗ ∆𝑇𝑘 mô t ả thời gian c n thiầ ết để di chuy n t ể ừ trạng thái t𝑠𝑘 ới 𝑠𝑘+1 Tập h p các thông s tợ ố để ối ưu hóa được xác định bởi :
𝛽 = (𝑠1, ∆𝑇1, 𝑠 , ∆𝑇2 2, … , 𝑠𝑛−1, ∆𝑇𝑛−1, 𝑠𝑛) Bài toán tối ưu hóa TEB được xây dựng dướ ạng phi chương trình tuyếi d n tính: Với các ràng buộc :
vô cùng Trường hợp này là được xem xét riêng trong việc triển khai bộ giải cụ th ểGiới hạn v n t c và gia tậ ố ốc : vậ ốc tịn t nh ti n cế ủa cấu hình t𝑠𝑘 ại bước th i gian ờrời rạc k được ký hi u là ệ 𝑣𝑘 Robot bao g m kho ng cách Rồ ả k giữa 𝑠𝑘đến 𝑠𝑘+1được cho bởi 𝑝𝑘(chương 2) và Rk = ρk∆β Do đó, vận tốc vk k của nó được xác định bởi :
𝒗𝑘= 𝝆𝒌𝚫𝜷𝒌
𝚫𝑻𝒌 𝛾(𝑺𝑘, 𝑺𝑘+1) Δ𝛽𝑘≪ 1
ǁ𝒅𝒌ǁ𝟐𝚫𝑻𝒌 𝛾(𝑺𝑘, 𝑺𝑘+1)