Về cơ bản, ROS có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ task song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu… R
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ
BÁO CÁO DỰ ÁN THIẾT KẾ
HỌC PHẦN: ROBOT TỰ HÀNH
MÃ HỌC PHẦN: ME4512
Sinh viên thực hiện:
Giảng viên hướng dẫn: TS Mạc Thị Thoa
Trang 3Đánh giá của giảng viên hướng dẫn
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Kết quả đánh giá Hà Nội, ngày 25 tháng 2 năm 2021 Giảng viên hướng dẫn Họ và tên Điểm
Bùi Đức Huy
Phùng Minh Quang
Trang 4Lời cảm ơn
Được sự hướng dẫn và giúp đỡ nhiệt tình của 3 thầy cô TS Mạc Thị Thoa,TS Nguyễn Xuân Thuần và TS Phạm Đức An, chúng em đã hoàn thành được bài tập lớn được giao “Mô phỏng Robot tự hành với thuật toán SLAM, AMCL, RRT trong Matlab và ROS” Bởi thời gian và kiến thức có giới hạn, sẽ không tránh khỏi những sai sót ngoài ý muốn Do vậy chúng em rất mong được sự chỉ bảo và
sự đóng góp ý kiến của thầy cô để đề tài được hoàn thành
Chúng em xin chân thành cảm ơn sự hướng dẫn của TS.Mạc Thị Thoa,TS.Nguyễn Xuân Thuần và TS.Phạm Đức An đã giúp chúng em hoàn thành đề tài
Trang 5MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU CHUNG 1
1.1 Lý do chọn đề tài 1
1.2 Giới thiệu các sản phẩm liên quan 1
Kích thước và khối lượng 2
Thành phần cấu tạo TurtleBot3 3
1.3 ROS 3
Mô hình ROS 4
Tầng ROS Filesystem 4
Tầng ROS Computation Graph 5
Tầng ROS Community 7
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VỀ ĐỘNG HỌC, SLAM, NAVIGATION 8
2.1 Động học Thuận 8
2.2 Động học nghịch 9
2.3 SLAM 10
2.4 Costmap 11
2.5 DWA 13
2.6 AMCL 14
CHƯƠNG 3 KẾT QUẢ MÔ PHỎNG 15
3.1 ĐỘNG HỌC 15
3.2 SLAM 16
3.3 NAVIGATION 18
CHƯƠNG 4 TÀI LIỆU THAM KHẢO 19
Trang 6DANH MỤC HÌNH VẼ
Hình 1 - TurtleBot3 Burger và TurtleBot3 Waffle Pi 1
Hình 2 - Kích thước TurtleBot3-Burger 2
Hình 3 - TurtleBot3 Waffle Pi 2
Hình 4 - Cấu tạo Turtlebot3 Burger 3
Hình 5 - Mô hình ROS Filesystem 5
Hình 6 - Tầng ROS Computation Graph 5
Hình 7 - Giao tiếp giữa các nodes 7
Hình 8 - Hệ toạ độ Robot 8
Hình 9 – Quan hệ giữa khoảng cách đến chướng ngại vật và giá trị Costmap 12
Hình 10 - Biểu diễn Costmap 12
Hình 11 – Hệ toạ độ v - w 13
Hình 12 – Vận tốc dài và vận tốc góc 14
Hình 13 – Quá trình sử dungj AMCL 15
Hình 14 – Mô phỏng trên Matlab 15
Hình 15 – Mô phỏng trên Simulink 16
Hình 16 - Robot trong môi trường gazebo 17
Hình 17 - Cảm biến lazer quét khi bắt đầu 17
Hình 18 - Bản đồ được lưu 17
Hình 19 - Dùng 2D pose đặt robot ở vị trí ngẫu nhiên 18
Hình 20 - Robot di chuyển theo đường đi mà thuật toán chọn 18
Hình 21 - Kết quả cuối cùng……….19
Trang 7CHƯƠNG 1 GIỚI THIỆU CHUNG 1.1 Lý do chọn đề tài
1.2 Giới thiệu các sản phẩm liên quan
Không tìm thấy mục nhập nào của bảng hình minh họa
Hình 1- TurtleBot3 Burger và TurtleBot3 Waffle Pi TurtleBot là một robot nền tảng tiêu chuẩn ROS Turtle có nguồn gốc từ robot Turtle, được điều khiển bởi ngôn ngữ lập trình máy tính giáo dục Logo vào năm 1967 Ngoài ra, xuất hiện lần đầu trong hướng dẫn cơ bản của ROS, là một chương trình bắt chước hệ thống lệnh của Logo rùa chương trình Nó cũng được sử dụng để tạo biểu tượng Rùa như một biểu tượng của ROS Chín chấm được sử dụng trong logo ROS có nguồn gốc từ mai sau của con rùa TurtleBot, có nguồn gốc từ Logo con rùa, được thiết kế để dễ dàng dạy những người mới làm quen với ROS thông qua TurtleBot cũng như dạy ngôn ngữ lập trình máy tính sử dụng Logo Kể từ đó TurtleBot đã trở thành nền tảng tiêu chuẩn của ROS, là nền tảng phổ biến nhất giữa các nhà phát triển và sinh viên
TurtleBot3 là một robot di động nhỏ, giá cả phải chăng, có thể lập trình, dựa trên ROS để sử dụng trong giáo dục, nghiên cứu, sở thích và tạo mẫu sản phẩm Mục tiêu của TurtleBot3 là giảm đáng kể kích thước của nền tảng và
hạ giá thành mà không phải hy sinh chức năng và chất lượng của nó, đồng thời cung cấp khả năng mở rộng TurtleBot3 có thể được tùy chỉnh theo nhiều cách khác nhau tùy thuộc vào cách bạn tái tạo các bộ phận cơ khí và sử dụng các bộ phận tùy chọn như máy tính và cảm biến Ngoài ra, TurtleBot3 được phát triển với SBC hiệu quả về chi phí và kích thước nhỏ, phù hợp với
hệ thống nhúng mạnh mẽ, cảm biến khoảng cách 360 độ và công nghệ in 3D Công nghệ cốt lõi của TurtleBot3 là SLAM , Điều hướng và Thao tác , làm cho nó phù hợp với các robot dịch vụ gia đình TurtleBot có thể chạy các thuật toán SLAM (bản địa hóa và lập bản đồ đồng thời) để xây dựng bản đồ
và có thể lái xe xung quanh phòng của bạn Ngoài ra, nó có thể được điều khiển từ xa từ máy tính xách tay, bàn di chuột hoặc điện thoại thông minh chạy Android TurtleBot cũng có thể theo dõi chân của một người khi họ đi
Trang 8bộ trong phòng Ngoài ra, TurtleBot3 có thể được sử dụng như một trình điều khiển di động có khả năng điều khiển một đối tượng bằng cách gắn một trình điều khiển như OpenMANIPULATOR OpenMANIPULATOR _có ưu điểm
là tương thích với Waffle TurtleBot3 và Waffle Pi Thông qua khả năng tương thích này có thể bù đắp cho sự thiếu tự do và có thể có sự hoàn thiện hơn như một robot dịch vụ với SLAM và khả năng điều hướng mà TurtleBot3 có
Kích thước và khối lượng
Hình 2: Kích thước TurtleBot3-Burger
Hình 3-TurtleBot3 Waffle Pi
Trang 9Thành phần cấu tạo TurtleBot3
Hình 4 Cấu tạo Turtlebot3 Waffle
1.3 ROS
ROS là một hệ thống framework dùng cho các ứng dụng robot Về cơ bản, ROS có những đặc tính thiết yếu của một hệ điều hành như khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu với nhau giữa các tác vụ, quản lý dữ liệu… ROS còn được phát triển riêng biệt về các thư viện, công cụ hỗ trợ việc vẽ đồ thị, lưu dữ liệu, hiển thị model 3D của robot… ROS được phát triển dưới dạng module Từ đó một nhóm nghiên cứu có thể chỉ chuyên sâu vào một lĩnh vực như vẽ bản đồ hay định vị robot vẫn có thể xây dựng một hệ thống robot hoàn chỉnh khi tái sử dụng những module đã được phát triển trước đó Nhóm đã chọn hệ thống ROS để phát triển robot với khả năng vẽ bản đồ và định vị dựa trên những ưu điểm sau:
• ROS cung cấp nhiều module giúp người dùng tuỳ biến cho phù hợp với yêu cầu phát triển từng loại robot
• Những module hoạt động độc lập với nhau và trao đổi thông qua các gói
dữ liệu Vì vậy dễ phát hiện và sửa lỗi cho từng module
Trang 10• ROS có mã nguồn mở được cộng động nghiên cứu về lĩnh vực robot phát triển Lượng người dùng lớn giúp cho hệ thống ROS ngày càng đa dạng và phong phú về tính năng và dữ liệu Những lỗi phát sinh trong quá trình sử dụng cũng được cộng đồng người dùng hỗ trợ xử lý nhanh chóng
Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn giao tiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics, và lưu trữ dữ liệu trên Parameter Server
Hiện nay ROS chỉ chạy trên nền tảng Linix Phần mềm cho ROS chủ yếu được thử nghiệm trên Ubuntu và Mac OS X Cho đến nay cộng đồng ROS cũng đã bắt đầu xây dựng cho Fedora, Gentoo, Arch Linux và các nền tảng Linux khác ROS chưa hỗ trợ trên Microsoft Windows
Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường được phát hành ở dạng ROS Distribution, tương tự như Linux distribution, cung cấp một bộ phần mềm để người dùng sử dụng, xây dựng và phát triển
• Manifests (manifests.xml): cung cấp cơ sở dữ liệu về một package, bao gồm license, cờ biên dịch
• Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức năng (vd: Navigation stack)
• Stack Manifests (stack.xml): cung cấp cơ sở dữ liệu về một stack, bao gồm license và các thông số phụ thuộc vào những stack khác
• Message(msg): là cấu trúc dữ liệu cho việc truyền nhận trong ROS
Trang 11• Service (srv): định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request)
và các phản hồi (response) của các services trong ROS
Hình 5 -Mô hình ROS Filesystem
Tầng ROS Computation Graph
Hình 6-Tầng ROS Computation Graph
“Computation Graph”, gọi là lược đồ tính toán, là một mạng peer của ROS trong đó các dữ liệu được xử lý với nhau Computation Graph
peer-to-cơ bản gồm các thành phần: Nodes, Master, Parameter Server, Messages, Services, Topics, và Bags, tất cả các thành phần này đều cung cấp dữ liệu cho Graph bằng những phương thức khác nhau
• Nodes: là đơn vị 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
Trang 12chi 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 Ví dụ, một node điều khiển hệ thống cảm biến, một node điều khiển động cơ bánh xe, một node thực hiện việc tác vụ định
vị, một node hoạch định đường đi, một node vẽ quỹ đạo của hệ thống… Mỗi node ROS được xây dựng nhờ sử dụng một ROS client library, chẳng hạn như roscpp hoặc rospy
• Master: cung cấp tên đăng ký và tra cứu đến các node còn lại 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: là một phần của Master
• 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 (integer, floating point, array )
• 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
đi một message bằng việc đưa thông tin tới một topic (chủ đề) Tên của topic được dùng để quy định nội dung của message
• Service: thực hiện các yêu cầu tương tác theo kiểu request/reply
• Bags: là một định dạng để lưu và phát lại dữ liệu từ các ROS messages Bags là một cơ chế quan trọng để lưu trữ dữ liệu, chẳng hạn như dữ liệu cảm biến
Trang 13Hình 7 Giao tiếp giữa các nodes
Tầng ROS Community
Tầng này được định nghĩa là tài nguyên về phần mềm và kiến thức được chia sẽ bởi cộng đồng phát triển ROS bao gồm: Distributions, Respositories, The ROS Wiki, Mailing lists
Trang 14CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VỀ ĐỘNG HỌC, SLAM,
NAVIGATION
2.1 Động học Thuận
Hình 8 Hệ toạ độ robot Xét 2 hệ qui chiếu cố định I và hệ qui chiếu gắn liền với robot R
Vị trí của robot trong hệ qui chiếu cố định
I
xy
Trang 15Áp dụng phương pháp Euler, ta xác định được vị trí bất kì của robot trong
hệ qui chiếu cố định tại thời điểm ti+1 thông qua vị trí tại thời điểm ti
1 2 1
Tọa độ của điểm Q theo hệ qui chiếu cố định I
Trang 16 cos( ) sin( ) cos( )
I P I P
cos( ) sin( ) cos( )
sin( ) cos( ) sin( )
đồ của một môi trường không xác định đồng thời theo dõi vị trí của tác nhân bên trong nó Mặc dù ban đầu đây có vẻ là một bài toán con gà và quả trứng nhưng có một số thuật toán được biết đến để giải nó, ít nhất là khoảng thời gian có thể giải quyết được cho một số môi trường nhất định Các phương pháp giải gần đúng phổ biến bao gồm bộ lọc hạt, bộ lọc Kalman mở rộng , giao điểm hiệp phương sai và GraphSLAM Các thuật toán SLAM dựa trên các khái niệm trong hình học tính toánvà thị giác máy tính , và được sử dụng trong điều hướng robot , lập bản đồ robot và đo đường cho thực tế ảo hoặc thực tế tăng cường
Một số thuật toán SLAM: Gmapping, Kalman filter,…
Gmapping:
Particle filter là thuật toán phổ biến nhất trong việc object tracking Ví
dụ điển hình là thuật toán Monte Carlo localization sử dụng particle filter Bộ lọc Kalman trước đây chỉ đảm bảo độ chính xác cho một hệ thống tuyến tính
và một hệ thống mà nhiễu gassian được áp dụng Hầu hết các vấn đề trong thế giới thực là hêj thống phi tuyến
Bởi vì robot và cảm biến cũng là phi tuyến, Particle filter thường được
sử dụng để pose estimation Nếu bộ lọc Kalman là một phương pháp phân tích giả định hệ thống là tuyến tính có các tham số là tuyến tính, Particle filter
là một kỹ thuật để dự đoán thông qua mô phỏng bằng phương pháp thử và sai Particle filter được đặt tên đó vì giá trị ước tính được tạo ra bởi phân bố xác suất trong hệ thống được biểu diễn như 1 particle Đây được gọi là phương pháp Sequential Monte Carlo
Particle filter giống như các thuật toán pose estimation khác, ước tính pose của vât thể với giả định rằng sai số đưuocj bao gốm trong input Khi sử dụng SLAM, giá trị đo lường của robot và giá trị đo bằng cảm biến khoảng cách được sử dụng để ước tính pose hiện tại của robot
Trong phương pháp Particle filter, vị trí không chắc chắn được mô tả bằng một loạt các particle được gọi là mẫu Chúng tôi di chuyển các hạt đến
vị trí và hướng ước tính mới dựa trên mô hình chuyển động và xác suất của
Trang 17robot, đồng thời đo trọng lượng của từng particle theo giá trị đo thực tế và giảm dần nhiễu để ước tính tư thế chính xác Trong trường hợp rô bốt di động, mỗi hạt được biểu diễn dưới dạng hạt = pose (x, y, i), trọng lượng và mỗi hạt là một particle tùy ý đại diện cho vị trí ước tính và hướng của rô bốt được biểu thị bằng x, y, và i của robot và độ ảnh hưởng của mỗi particle
Bộ lọc này trải qua 5 quy trình sau đây Ngoại trừ lần khởi chạy ở bước
1, các bước 2 ~ 5 được thực hiện lặp đi lặp lại để ước tính tư thế của rô bốt Nói cách khác, đó là phương pháp ước tính tư thế của robot bằng cách cập nhật sự phân bố của các particle thể hiện xác suất của robot trên mặt phẳng tọa độ X, Y dựa trên giá trị cảm biến đo được
1 Initialization
Vì tư thế ban đầu của robot (vị trí, hướng) không xác định, các particle được sắp xếp ngẫu nhiên trong phạm vi mà tư thế có thể thu được với N particle Mỗi hạt ban đầu nặng 1 / N, và tổng trọng lượng của các hạt là 1 N được xác định theo kinh nghiệm, thường là hàng trăm Nếu vị trí ban đầu được biết, các hạt được đặt gần robot
đồ và tối ưu các khu vực có chướng ngại vật, khu vực trống và khu vực không xác định để điều hướng
Trong Navigation, costmap tính toán khu vực chướng ngại vật, khu vực có thể va chạm và khu vực có thể di chuyển của rô bốt dựa trên bốn yếu tố nói trên Tùy thuộc vào loại điều hướng,costmap có thể được chia thành hai loại Một là ‘global_costmap’, thiết lập một kế hoạch đường đi để điều hướng trong khu vực toàn cầu bản đồ Loại còn lại là ‘local_costmap’ được sử dụng
để lập kế hoạch đường đi và tránh chướng ngại vật trong khu vực giới hạn xung quanh rô bốt Mặc dù mục đích của chúng khác nhau, nhưng cả hai costmap đều được biểu diễn theo cùng một cách
Costmap được biểu diễn dưới dạng giá tị từu 0 đến 255 Các giá trị này được tóm tắt như sau:
000: Khu vưcj robot có thể di chuyển hoàn toàn tự do
Trang 18Hình 9: Quan hệ giữa khoảng cách đến chướng ngại vật và giá trị costmap
Hình 10: Biểu diễn Costmap
Trang 192.5 DWA
Dynamic Window Approach (DWA) là một phương pháp phổ biến để lập
kế hoạch tránh chướng ngại vật và tránh chướng ngại vật Đây là một phương pháp lựa chọn tốc độ có thể nhanh chóng đến điểm mục tiêu trong khi tránh các chướng ngại vật có thể va chạm với robot trong không gian tìm kiếm vận tốc Trong ROS, Trajectory planner được sử dụng để lập kế hoạch đường đi cục bộ, nhưng DWA đang được thay thế vì hiệu suất vượt trội của
nó
Đầu tiên, Robot không ở trong hệ trục toạ đọ x-y, thay vào đó nó sẽ ở trọng hệ toạ độ với 2 trục là vận tốc dài và vận tốc góc Trong hệ toạ độ này robot có giá trị tối đa của vận tốcbởi vì có hạn chế về phần cứng, gọi là Dynamic Window
Trong Dynamic Window, Hàm G(v,w) được sử dụng để tính v,w Giá trị này sẽ được tối ưu hoá để robot có thể tránh được các chướng ngại vật và đến với địch nhanh nhất có thể
Hình 11: Hệ toạ độ v-w