Phát triển mô phỏng robot di động Gazebo với giải thuật SLAM và URDF

Nghiên cứu phát triển công cụ mô phỏng robot di động trên Gazebo. Ứng dụng giải thuật SLAM và URDF để robot tự định hướng, lập bản đồ và tránh vật cản.

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2021

102
1
0

Phí lưu trữ

35 Point

Tóm tắt

I. Khái niệm cơ bản về Robot di động và SLAM

Robot di động tự hành là robot có khả năng tự di chuyển bằng bánh xe hoặc bánh xích, thực hiện các hành động thông qua hệ thống điều khiển tự động mà không cần sự tác động trực tiếp của con người. Những robot này được ứng dụng rộng rãi trong công nghiệp, y tế, logistics và nhiều lĩnh vực khác. Tuy nhiên, để robot có khả năng tự thiết lập đường đi đến vị trí mục tiêu, tránh chướng ngại vật, robot cần sử dụng các giải thuật định vị và lập bản đồ. SLAM (Simultaneous Localization And Mapping) là giải thuật cho phép robot vừa xác định vị trí của mình vừa lập bản đồ môi trường xung quanh một cách đồng thời. Đây là nền tảng quan trọng giúp robot tự hành hoạt động hiệu quả trong các môi trường chưa biết.

1.1. Định nghĩa Robot tự hành thông minh

Robot tự hành thông minh là hệ thống cơ điện tử tích hợp các cảm biến, hệ thống điều khiển và thuật toán xử lý thông minh. Chúng có khả năng cảm nhận môi trường xung quanh, xử lý thông tin, ra quyết định và thực hiện hành động tự động. Các đặc trưng chính bao gồm: tự điều hướng, tránh chướng ngại vật, định vị trong không gian, lập bản đồ môi trường, và thích ứng với các điều kiện thay đổi.

1.2. Giải thuật SLAM trong robot di động

SLAM kết hợp hai vấn đề: định vị (Localization) và lập bản đồ (Mapping). Robot sử dụng dữ liệu từ cảm biến Lidar, camera hoặc cảm biến hồng ngoại để nhận diện vị trí hiện tại và xây dựng bản đồ môi trường. Giải thuật này rất quan trọng vì robot cần biết mình ở đâu để di chuyển chính xác, đồng thời lập bản đồ giúp hoạch định đường đi hiệu quả.

II. URDF Định dạng mô tả Robot trên ROS

URDF (Unified Robot Description Format) là một định dạng XML dùng để mô tả cấu trúc vật lý, động học và hình học của robot. Trên hệ điều hành ROS (Robot Operating System), URDF đóng vai trò quan trọng trong việc xác định các thành phần robot như liên kết (link), khớp (joint), cảm biến và động cơ. Khi xây dựng mô phỏng robot trong Gazebo, URDF cung cấp thông tin cần thiết để mô phỏng chính xác hành vi vật lý của robot. Mỗi robot được mô tả thông qua một tập hợp các liên kết được kết nối bởi các khớp, cho phép mô hình hóa robot từ đơn giản đến phức tạp. Các thông số như khối lượng, quán tính, ma sát được định nghĩa trong URDF để đảm bảo tính chính xác của mô phỏng vật lý trong môi trường Gazebo.

2.1. Cấu trúc URDF và các thành phần chính

URDF bao gồm các thành phần chính như links (liên kết cơ thể), joints (khớp nối), sensors (cảm biến) và actuators (bộ truyền động). Mỗi link có các thuộc tính như geometry (hình dạng), mass (khối lượng), inertia (quán tính). Các joints định nghĩa mối quan hệ chuyển động giữa các links, có thể là revolute (quay), prismatic (trượt) hoặc fixed (cố định). Việc xây dựng URDF chính xác là nền tảng để mô phỏng thành công.

2.2. Ứng dụng URDF trong mô phỏng Gazebo

Khi tải URDF vào Gazebo, công cụ mô phỏng sẽ đọc các thông số kỹ thuật và tạo mô hình 3D tương ứng. Gazebo sử dụng URDF để mô phỏng động lực học, va chạm, và tương tác vật lý giữa robot và môi trường. Việc tích hợp URDF với Gazebo cho phép nhà phát triển kiểm tra các thuật toán điều khiển, kiểm tra hiệu suất cảm biến, và đánh giá kế hoạch chuyển động trước khi triển khai trên robot thực.

III. Môi trường mô phỏng Gazebo Công cụ mô phỏng Robot

Gazebo là công cụ mô phỏng 3D mạnh mẽ được tích hợp sâu với ROS, cho phép nhà phát triển kiểm tra robot trong các môi trường ảo đa dạng. Gazebo hỗ trợ mô phỏng động lực học chính xác, vật lý va chạm, cảm biến ảo và các tương tác phức tạp với môi trường. Công cụ này cung cấp giao diện đồ họa trực quan, cho phép người dùng nhìn thấy robot di chuyển, các cảm biến hoạt động và quá trình lập bản đồ diễn ra. Gazebo kết hợp với SLAM cho phép robot mô phỏng tự định vị, vẽ bản đồ và hoạch định đường đi trong môi trường giả lập. Điều này rất hữu ích cho việc phát triển và kiểm tra các thuật toán trước khi triển khai thực tế, tiết kiệm thời gian và chi phí.

3.1. Tính năng chính của Gazebo

Gazebo cung cấp công cụ mô phỏng vật lý nâng cao với hỗ trợ ODE, Bullet và DART. Nó cho phép mô phỏng các cảm biến như Lidar, camera, IMU, cảm biến hồng ngoại với độ chính xác cao. Giao diện plugin cho phép tích hợp các thuật toán tùy chỉnh. Gazebo cũng hỗ trợ mô phỏng đa robot, cho phép kiểm tra các hệ thống robot phức tạp cùng lúc, rất hữu ích trong nghiên cứu và phát triển.

3.2. Tích hợp Gazebo với SLAM và RViz

RViz là công cụ trực quan hóa dữ liệu ROS, thường được sử dụng song song với Gazebo. Khi Gazebo mô phỏng robot, RViz hiển thị dữ liệu cảm biến, bản đồ được lập và các vectơ chuyển động. Sự kết hợp này tạo ra một nền tảng mạnh mẽ để phát triển các thuật toán SLAM, cho phép nhà phát triển quan sát quá trình hoạch định đường đi thời gian thực.

IV. Ứng dụng SLAM URDF trên Gazebo cho Robot di động

Sự kết hợp SLAM, URDF và Gazebo tạo thành một giải pháp toàn diện cho phát triển robot di động. URDF xác định cấu trúc vật lý robot, Gazebo cung cấp môi trường mô phỏng thực tế, và SLAM cho phép robot tự định hướng, lập bản đồ. Quy trình phát triển bao gồm: (1) Xây dựng mô hình URDF chi tiết của robot với tất cả cảm biến như Lidar và cảm biến hồng ngoại, (2) Tải URDF vào Gazebo để mô phỏng động lực học và tương tác vật lý, (3) Triển khai giải thuật SLAM để robot tự định vị và lập bản đồ, (4) Kiểm tra hoạch định đường đi và tránh chướng ngại vật. Phương pháp này cho phép kiểm tra toàn diện trước khi triển khai trên robot thực, giảm lỗi và tiết kiệm chi phí phát triển.

4.1. Quy trình xây dựng mô phỏng robot hoàn chỉnh

Bước đầu tiên là thiết kế và xây dựng tệp URDF với mô tả chi tiết hình học, khối lượng, và cấu hình liên kết của robot. Bước thứ hai là tích hợp các cảm biến vào URDF, bao gồm Lidar và cảm biến hồng ngoại để phục vụ SLAM. Bước thứ ba là tải mô hình vào Gazebo và điều chỉnh các thông số vật lý. Cuối cùng, triển khai các node ROS xử lý dữ liệu cảm biến, chạy giải thuật SLAM, hoạch định đường đi và điều khiển robot.

4.2. Kết quả và đánh giá độ chính xác mô phỏng

Sau khi hoàn thành mô phỏng, robot có khả năng tự định vị, tái tạo bản đồ môi trường làm việc với độ chính xác tương đối cao. Việc so sánh bản đồ tạo từ mô phỏng với bản đồ từ robot thực cho thấy độ tương đồng cao. Robot thành công trong việc hoạch định đường đi, tránh chướng ngại vật và điều hướng độc lập. Các cảm biến tích hợp như Lidar và cảm biến hồng ngoại giúp robot xử lý tốt các trường hợp phức tạp, đặc biệt là trong môi trường có vật liệu kính hoặc thủy tinh.

22/12/2025

Trích đoạn nội dung tài liệu

chương I Trong chương này tác giả đã trình bày được các đặc điểm cơ bản của robot tự hành, ý nghĩa và phạm vi ứng dụng của robot tự hành trong cuộc sống, cũng như tính cấp thiết của đề tài.1 Robot Operation System – ROS và ứng dụng trong mô phỏng robot Phần này mô tả tổng quan về hệ điều hành ROS, các khái niệm, thành phần trong ROS cũng như ý nghĩa và tầm quan trọng của ROS trong việc mô phỏng robot 2.1 Tổng quan hệ điều hành ROS ROS là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng trên robot. Về cơ bản, ROS cũng có những khả năng cần thiết cho một hệ điều hành cơ bản như khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu giữa các tác vụ bằng thông điệp và quản lý dữ liệu. Bên cạnh đó, để có thể ứng dụng trong lĩnh vực robotics, ROS đã phát triển các khái niệm, thư viện và công cụ chuyên biệt dành cho việc thu thập dữ liệu, xử lý, hiển thị và điều khiển. Ngoài ra, ROS còn có thể tương tác và kết hợp với nhiều framework khác như player (một software tool cho robot và các ứng dụng về cảm biến), Orocos (điều khiển thông minh trong robot và tự động hóa), Carmen (Robot Navigation Toolkit), Orca (các đối tượng cho robot) [7].

ROS có nhiều khái niệm dựa trên graph, biểu diễn mối quan hệ giữa các thành phần trong hệ điều hành như stack, package, node, topic, message, service, cũng như các khái niệm hệ tọa độ và phép chuyển đổi hệ tọa độ. Về khía cạnh trao đổi dữ liệu và giao tiếp, ROS có tích hợp sẵn một vài chuẩn 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.1 mô tả sơ đồ truyền tin trong ROS Hình 2.1: Sơ đồ truyền tin trong ROS [1] ROS cũng được sử dụng rộng rãi trong các trường đại học và có rất nhiều đóng góp. ROS có một cộng đồng rộng lớn, có rất nhiều dự án được hỗ trợ, có một môi trường hệ thống thân thiện với hệ thống phát triển robot khác.2: Cộng đồng các trung tâm tham gia, đóng góp phát triển ROS trên thế giới [2] ROS hoàn toàn tương thích với hệ điều hành Linux, mà cụ thể ở đây là hệ điều hành Ubuntu. Tuy nhiên, ROS cũng được phát triển để tương thích với một số hệ điều hành khác như ARM, Debian, Gentoo, Mac OSX, Android, Window và Open Embeded Hình 2.3: Các hệ điều hành hỗ trợ ROS [2]  Ưu điểm của ROS Xây dựng ứng dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các công việc lập trình, thiết lập hệ thống, tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng.

Ta có thể so sánh khối lượng công việc kỹ thuật cơ bản (required engineering) và khối lượng nghiên cứu khoa học nòng cốt (Core Research) như sau: 13 Hình 2.4: So sánh khối lượng công việc phải làm khi dùng và không dùng ROS Từ đó, ta thấy rằng, với sự hiệu quả từ ROS, thời gian dành cho các công việc kỹ thuật cơ bản sẽ được giảm xuống rất đáng kể, và do đó, tăng thời gian cho công việc nghiên cứu chuyên sâu, hàm lượng khoa học đạt được trong đề tài sẽ lớn hơn nhiều lần. Một số đặc điểm giúp cho ROS trở thành một hệ điều hành nên được sử dụng khi nghiên cứu phát triển một ứng dụng robot là: - ROS là hệ điều hành mã nguồn mở - Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ, phong phú - Vấn đề cốt lõi nhất khiến ROS trở lên mạnh mẽ đó là tính cộng đồng rất lớn. Nguồn tài nguyên được cộng đồng đóng góp hầu như được xây dựng, phát triển từ những viện nghiên cứu và đại học hàng đầu thế giới 2.2 Cấu trúc trong ROS ROS có 3 cấp khái niệm: Filesystem, Computation Graph và Community. Ngoài ra ROS còn có một số khái niệm cấp cao đặc trưng cho các ứng dụng robot như hệ tọa độ, phép chuyển đổi, thông điệp mô tả.

File ROS system Filesystem là nguồn tài nguyên source code ROS được lưu trữ trên bộ nhớ hệ thống, nó bao gồm các khái niệm: 14 Hình 2.5: Cấu trúc file hệ thống ROS [3] Package: Gói ứng dụng là đơn vị cơ bản trong tổ chức phần mềm của ROS, một gói chứa source code cho một tác vụ thực thi một chức năng đặc thù, danh mục các mã nguồn kế thừa (dependency, là các filesystem ngang cấp được đơn vị này dựa trên), các file cấu hình (như file CMakeList.txt chứa các lệnh hướng dẫn biên dịch, yêu cầu tạo file thực thi .bin; hay chọn version cho các thư viện) [3]. MetaPackage: Metapackage là một nhóm bao gồm nhiều các package. Ví dụ như trong ROS có một metapackage được gọi là navigation trong việc điều hướng robot tự hành. Nó lưu giữ thông tin các package và hỗ trợ trong việc cài đặt [3].

Manifest: là bảng kê khai thông tin mô tả một packages (manifest.xml), cung cấp các cơ sở dữ liệu về package đó, bao gồm điều kiện thực thi (license) và các dependency của package đó. Ngoài ra, manifests còn chứa những thông tin về đặc trưng của ngôn ngữ lập trình như cờ báo (flags) của trình biên dịch [3].msg): thông tin mô tả message, được lưu trữ trong file có dạng my_package/msg/MyMessageType.msg, định nghĩa các cấu trúc dữ liệu của messages được gửi trong ROS [3].srv): thông tin mô tả các services, được lưu trữ trong my_package/srv/MyServiceType.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 [3] 2. ROS Computation Graph Computation Graph, tạm gọi là lược đồ tính toán, là mạng peer-to-peer các tác vụ khi thực thi của ROS, trong đó các dữ liệu được trao đổi và xử lý giữa các node. Các khái niệm cơ bản của computation graph của ROS là các node, Master, Parameter Sever, Message, Service, topics và bags [2].6: Sơ đồ ROS computation graph [3] Node: là đơn vị thực hiện một tác vụ tính toán, điều khiển.

Một node có thể được khởi tạo khi biên dịch thành công một package và có thể được khởi tạo nhiều node từ cùng một package. Một hệ thống điều khiển thường bao gồm nhiều node. Ví dụ một node điều khiển động cơ, một node thực hiện tác vụ định vị, một node vẽ quỹ đạo đường đi [3]. Master: ROS Master cung cấp tên đăng ký và tra cứu đến phần còn lại của Computation Graph.

Nếu không có Master, các nodes sẽ không tìm thấy nhau để trao đổi thông tin hay gọi services [3].7: Trao đổi thông tin giữa ROS Master và các Node [2] Message: các nodes giao tiếp với nhau thông qua các messages. Một message trong computation graph là dữ liệu cụ thể có cấu trúc như trong khai báo của file .msg tương ứng. 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ợ. Bên cạnh đó, message cũng có thể bao gồm các cấu trúc và các mảng lồng nhau như cấu trúc trong ngôn ngữ C.

Các node khi nhận Message cần phải xác định kiểu đệm để xử lý dữ liệu nhận được [2]. Topic: Messages được định tuyến thông qua một hệ thống vận chuyển (transport system), trong đó phân loại thành hai công việc chính: publish (đăng tin) và 16 subcribe (đăng ký nhận tin). Một node gửi đi một message bằng việc đưa thông tin tới một topic (chủ đề). Một topic có tên và kiểu message xác định.

Một node chỉ subscribe đến đúng topic có tên và kiểu dữ liệu như đã khai báo. Một topic có thể có nhiều đối tượng đưa tin (publishers) và cũng có thể có nhiều đối tượng đăng ký nhận tin (subcribers). Mỗi node cũng có thể truyền tin trên nhiều topic khác nhau, cũng như có thể nhận tin từ nhiều topic khác nhau. 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.

Ý tưởng xây dựng ROS ở đây là tách biệt nguồn tạo ra thông tin với bộ phận sử dụng thông tin đó. Topic được xem như là một kênh truyền các thông điệp được định kiểu. Mỗi kênh truyền này có một tên riêng, và node nào cũng có thể kết nối với kênh này để gửi/nhận thông điệp, miễn là thông điệp cùng kiểu với topic đó [2].8: Trao đổi thông tin giữa các topic [2] Service: 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 đối tượng, một chiều (many-to-many, one-way) đôi khi lại không phù hợp với các trường hợp cần tương tác theo kiểu request/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. Do vậy, cần có thêm một thành phần nữa trong ROS Graph, đó là service, nhằm thực hiện được các yêu cầu tương tác theo kiểu request/reply.

Service là một cặp cấu trúc thông điệp, một thông điệp để gửi yêu cầu và một thông điệp dành cho đáp ứng. Một node cung ứng một service với một thuộc tính name, một client sử dụng service đó bằng cách gửi đi một thông điệp yêu cầu (request message) rồi đợi phản hồi. Trong thư viện client của ROS, phương thức tương tác này thường được cung cấp như một hàm được gọi từ xa [2] 17 Hình 2.9: Mô hình truyền tin trong service [2] Bag: Là một định dạng để lưu trữ và phát lại dữ liệu từ ROS message. Bags là một cơ chế quan trọng để lưu dữ liệu.

Cách xây dựng hệ thống trong ROS cho phép nguồn cung cấp tin và đối tượng nhận tin có thể tách rời nhau, và mối liên hệ được thực hiện thông qua thuộc tính name. Name là thuộc tính đóng vai trò rất quan trọng trong ROS: các nodes, topics, services, và các parameters đều được đặt tên. Mỗi thư viện ROS Client đều hỗ trợ command-line để liên kết các tên này (remapping names), nhờ đó mà chương trình đã đuọc biên dịch có thể cấu hình lại được khi chạy ngay cả khi hoạt động trong một cấu trúc Computation Graph khác [2].10: Mô hình giao tiếp cơ bản trong ROS [3]. Ros Community Level ROS Community được định nghĩa là nguồn tài nguyên ROS mà các đơn vị nghiên cứu có thể trao đổi phần mềm và kiến thức.

Các nguồn tài nguyên bao gồm Distribution: ROS Distributions là bộ phiên bản các stack tương thích mà người dùng có thể cài đặt. Phiên bản mới nhất hiện nay là phiên bản thứ bảy Hydro Medusa.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ