Tải bản đầy đủ (.pdf) (41 trang)

báo cáo đồ án i đề tài nghiên cứu ros robot operating system

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.74 MB, 41 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

0

ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ

--- □ & □ ---

BÁO CÁO ĐỒ ÁN I ĐỀ TÀI: NGHIÊN CỨU ROS ROBOT OPERATING SYSTEM

Sinh viên thực hiện: Trần Minh Quang - 20192047 Giảng viên hướng dẫn: TS. Dương Minh Đức

Hà Nội, 7 / 2022

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

1

MỤC LỤC

LỜI NÓI ĐẦU ... 2

CHƯƠNG I. GIỚI THIỆU ... 3

1. Tổng quan về hệ điều hành dành cho robot – ROS ... 3

2. Thuật ngữ sử dụng trong ROS ... 4

2.1. ROS Communi ... 9

CHƯƠNG II: ROBOT OPERATING SYSTEM (ROS) ... 11

1 Cài đặt ROS noetic và ubuntu 20.04 ... 11

2. Packages & xây dựng một package ... 12

2.1 Giới thiệu packages ... 12

2.2 Tạo một package và xây dựng 2 nodes ... 13

3. Triển khai Slam trong ROS ... 23

3.1 Kết nối với Rplidar ... 23

3.2 Khởi tạo gói Rplidar_ros ... 24

3.3 Khởi chạy Rplidar ... 25

2. Mô phỏng di chuyển Turtlebot3 bằng Gazebo... 32

3. Tạo map cho TURTLEBOT3 sử dụng gmapping ... 35

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

2 LỜI NÓI ĐẦU

Mobile Robot là Robot có khả năng tự di chuyển, tự vận động theo một quỹ đạo được xác định trước hoặc chưa biết trước và được thực hiện một cơng việc được giao. Robot có thể hoạt động ở nhiều môi trường khác nhau như trên không, trên mặt đất, dưới nước hay thậm chí là ngồi vũ trụ. Mobile Robot có ứng dụng to lớn trên nhiều lĩnh vực từ dân sự, quân sự, vũ trụ và đang được nghiên cứu phát triển rộng rãi từ các cơng ty lớn, những phịng nghiên cứu ở khắp nơi thế giới. Một trong những yếu tố quan trọng của Robot là có thể tự giải quyết các vấn đề nằm ngồi dự tính như khả năng nhận diện, phát hiện và tránh vật cản hoặc đi vào môi trường chưa biết

ROS là hệ điều hành đầy đủ dành cho đối tượng ở đây là Mobile Robot. Khi nói đến lợi ích của ROS, các bạn phải nắm được đó chính là sự kết hợp chun mơn từ các ngành khác nhau. Trên thực tế, lập trình Robot và thiết kế có nghĩa dễ hiểu là thực hiện việc quản lý phần cứng bằng cách viết ra các trình điều khiển, quản lý bộ nhớ và các quy trình thực hiện, quản lý đồng thời, song song hoặc hợp nhất các dữ liệu với nhau, cung cấp các thuật tốn để sử dụng trí tuệ nhân tạo một cách hiệu quả.

Em xin gửi lời cảm ơn đến TS. Dương Minh Đức, phó trưởng bộ mơn Tự Động Hóa Công Nghiệp, Trường Điện - Điện tử, Đại Học Bách Khoa Hà Nội đã hướng dẫn, cung cấp tài liệu và tạo điều kiện hết mức để em hoàn thành báo cáo này. Đồ án của em chưa nghiên cứu kĩ nên chắc khơng tránh khỏi những thiếu xót. Em mong được thầy chỉ bảo thêm để giúp em hoàn thiện hơn nữa.

Em xin chân thành cảm ơn thầy!

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

3 CHƯƠNG I. GIỚI THIỆU

1. Tổng quan về hệ điều hành dành cho robot – ROS

Robot Operating System – ROS là hệ điều hành mã nguồn mở dành cho robot, là một framework được dùng rất rộng rãi trong lĩnh vực robotic với nhiều ưu điểm. Nó tạo ra một nền tảng phần mềm có thể hoạt động trên rất nhiều robot khác nhau mà không cần sự thay đổi quá nhiều trong chương trình phần mềm. ROS được bắt đầu với ý tưởng tạo ra sự thuận tiện là có thể chia sẻ dễ dàng và có thể được sử dụng lại trên những phần cứng robot khác nhau mà không cần phải xây dựng lại từ đầu. Việc xây dựng lại từ đầu cho một nền tảng robot riêng biệt sẽ tốn rất nhiều thời gian và cơng sức; bên cạnh đó, việc ứng dụng lại những thành quả của việc nghiên cứu trước đó để xây dựng những thuật toán cao hơn cũng gặp rất nhiều khó khăn.

Từ những lợi ích của ROS mang lại, những tổ chức nghiên cứu phát triển trên thế giới về ROS góp phần mang lại nguồn thông tin dồi dào về cả phần cứng lẫn phần mềm. Trên thế giới, cũng có rất nhiều cơng ty và tổ chức đã bắt đầu ứng dụng nền tảng này vào ứng dụng của họ để tạo ra những sản phẩm có chất lượng tốt hơn.

Nhờ vào đó, hiện nay trên thế giới có rất nhiều thiết bị được hỗ trợ framework này.

Hình 1.1 Một số robot được chế tạo trên nền tảng ROS ROS cung cấp, hỗ trợ các dịch vụ (services) như một hệ điều hành như phần cứng trừu tượng (hardware abtraction), kiểm soát các thiết bị cấp thấp (low-level device control), thực thi (implementation) các chức năng phổ biến, tin nhắn (message) qua lại giữa các quá trình, và quản lý gói. Ngồi ra, nó cũng cung cấp nhiều công cụ và thư viện cho việc tham khảo, biên dịch, viết và chạy chương trình trên nhiều máy khác nhau.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

4 Việc chạy các chuỗi quy trình (processes) dựa trên ROS được thể hiện dưới kiến trúc graph, biểu diễn mối quan hệ của các thành phần trong hệ điều hành. ROS thực thi một số loại giao tiếp khác nhau như giao tiếp kiểu RPC dạng đồng bộ thông qua services, truyền dữ liệu bất đồng bộ thông qua topics và lưu trữ dữ liệu trên Parameter Server.

ROS không phải là một framework thời gian thực, nhưng thơng qua nó ta có thể viết chương trình thời gian thực.

ROS là một hệ điều hành mã nguồn mở nên thu hút sự quan tâm của cộng đồng, đồng nghĩa với các công cụ, thư viện sẽ được xây dựng và phát triển phong phú. Hiện nay, mơ hình robot đã và đang được xây dựng trên hệ điều hành này với nhiều ứng dụng có tính thực tiễn cao.

Hiện nay, ROS chỉ chạy trên nền tảng Unix. Các phần mềm được chạy trên ROS chủ yếu được thử nghiệm trên hệ điều hành Ubuntu và Mac OS X. Bên cạnh đó, thơng qua cộng đồng này, nó cịn đang được xây dựng để hỗ trợ cho các nền tảng khác như Fedora, Gentoo, Arch Linux và các nền tảng Linux khác. Chương trình cốt lõi của ROS, các cơng cụ tiện ích và các thư viện cũng được phát hành các phiên bản mới được gọi là ROS Distribution. Những Distribution này giống như Linux Distribution và đồng thời cung cấp chuỗi các phần mềm tương thích.

Khi ROS được ứng dụng cho robotic thì khối lượng cơng việc kỹ thuật cơ bản sẽ giảm, bên cạnh đó khối lượng cơng việc dành cho xây dựng hệ thống tăng một cách đáng kể. Do đó, chúng ta có thể dành thời gian cho việc nghiên cứu các ứng dụng chuyên sâu, đạt hàm lượng khoa học cao hơn trong dự án.

2. Thuật ngữ sử dụng trong ROS ➢ Master

- Master hoạt động như một máy chủ có chức năng kết nối giữa các node và" đường dẫn" trong truyền thông tin tức.

- Câu lệnh để thi hành Master là: <roscore>

- Master giao tiếp với các slavers bằng việc sử dụng XMLRPC ( XML- Remote Procedure Call), là một tính năng truyền tải dữ liệu của Wordpress. Khi thao tác với master, nó sẽ được cấu hình với địa chỉ URI và một cổng được cấu hình trong ROS_MASTER_URI. Mặc định, địa chỉ URI chính là địa chỉ IP của máy, còn cổng được đặt là 11311.

➢Node

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

5 - Node là một phần tử nhỏ nhất trong ROS, nó thường được xem như một chương

trình để thực thi một chức năng hoặc một nhiệm vụ nào đó.

- Để một node có thể hoạt động, nó phải có các thông tin cơ bản như: tên, kiểu message, địa chỉ URI, cổng. Node có thể đóng vai trị như publisher, subscriber, service server hoặc service client... tùy thuộc vào thơng tin mà nó đăng ký lên master. Các nodes có thể giao tiếp với nhau bằng cách sử dụng topics và services. - Node sử dụng XMLRPC khi giao tiếp với master và sử dụng XMLRCP hoặc

TCPROS của giao thức TCP/IP khi giao tiếp với các nodes khác. ➢ Package

- Package là một phần tử cơ bản trong ROS. Trong package chứa các file cấu hình, các nodes... và nó có chức năng thi hành các node đó.

- Package chứa nhiều files cần thiết cho việc thi hành package, các gói, thư viện, các phụ thuộc...

- Cách tạo ra một gói: <catkin_create_pkg package_name dependences> - Sau khi tạo xong một gói, cần phải catkin_make lại workspace: <catkin_make>

➢Metapackage

- Là một package chuyên biệt, dùng để 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 để giữ các tương thích ngược cho việc chuyển đổi sang rosbuild Stacks.

Ví dụ như: Navigation chứa 10 packages bao gồm ACML, DWA, EKF và map_server...

➢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. ➢Stacks: khi chúng ta kết hợp các package với nhau với một vài chức năng thì được gọi là Stack. 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.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

6 Hình 2.1

Mục tiêu của việc dùng Stack là để đơn giản hóa cho quá trình chia sẻ chương trình ứng dụng.

➢Message types: là mô tả của một thông điệp được gửi qua lại 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 message tiêu chuẩn phục vụ cho quá trình giao tiếp giữa các node với nhau. Ngồ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 /msg/MyServiceType.srv. Service định nghĩa cấu trúc dữ liệu request và response giữa các node trong ROS. Để 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 đó.

my_package-➢Message

- Message chính là nội dung thông tin, dữ liệu trao đổi giữa các nodes. Có rất nhiều kiểu message khác nhau được thực hiện trên các biến cơ bản như int, boolean, string...

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

7 - Message là một "bó" dữ liệu để trao đổi giữa các nodes. Các topics, service, action

đều sử dụng message để giao tiếp. Cấu trúc của một kiểu message như sau: fieldtype1 fieldname1

fieldtype2 fieldname2 fieldtype3 fieldname3 Ví dụ:

int32 x int32 y ➢Topic

- Topic là chủ đề để các nodes có thể giao tiếp được với nhau. Bởi vì trong một hệ thống của chúng ta có rất nhiều nodes, các nodes giao tiếp được với nhau nếu chúng có cùng topic.

- Thao tác với topic:

$ rostopic bw: display bandwidth used by topic.

$ rostopic delay: display delay for topic which has header. $ rostopic echo: print messages to screen.

$ rostopic find: find topics by type.

$ rostopic hz: display publishing rate of topic. $ rostopic info: print information about active topic. $ rostopic list: print information about active topics. $ rostopic pub: publish data to topic.

$ rostopic type: print topic type. ➢Publish và Subscriber

- Đây là hai thuật ngữ dùng để cho biết đâu là node truyền thông tin và đâu là node nhận thơng tin. Một node vừa có thể truyền thơng tin và vừa có thể nhận thơng tin. Sử dụng Publish để truyền thông tin tới Master và Subcriber để nhận thông tin từ Master.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

8 server và sau đó nhận hồi đáp.

➢Action

- Action là một phương pháp giao tiếp đồng bộ hai chiều. Nó được thực hiện khi mà quá trình phản hồi diến ra lâu, khi thực hiện action thì phản hồi sẽ được yêu cầu liên tục cho đến khi kết quả được trả về.

- Cấu trúc của một file action giống với service. Tuy nhiên, phần phản hồi dữ liệu cho sự hồi đáp ngay lập tức được thêm vào cùng với dữ liệu đích và kết quả, cái mà được mô tả như yêu cầu và hổi đáp ở service.

- Action server: phụ trách việc nhận mục tiêu từ client sau đó đáp trả lại với phản hồi và kết quả.

- Action client: phụ trách việc truyền mục tiêu tới server và nhận lại kết quả và phản hồi như là đầu vào từ action server.

Trên ros.wiki.org hướng dẫn đầy đủ cách tạo và sử dụng Action server cũng như action client.

➢ROS launch

Roslaunch được tạo ra để :

- Thi hành nhiều nodes một lúc. Ví dụ:

<node name="listener1" pkg="rospy_tutorials" type="listener.py" args="—test> - Set các tham số. Ví dụ:

<param name="publish_frequency" type="double" value="10.0" /> - Định nghĩa một thiết bị để sử dụng cho việc thi hành. Ví dụ:

- Định nghĩa tên một remap. Ví dụ:

<remap from="/different_topic" to="/needed_topic"/> - Thi hành các file launch khác thông qua <include> - Định nghĩa các tham số. Thông qua <arg>

- Chỉ định biến môi trường cho node thi hành. Thông qua <env>

- Gộp nhóm các phần tử mà chia sẻ một namespace hoặc remap. Thông qua

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

9 <group>

➢Bag

- Là một định dạng để lưu trữ và phát lại dữ liệu message ROS. Bags là một cơ chế quan trọng cho việc lưu trữ dữ liệu; ví dụ như giá trị của các cảm biến rất khó để thu thập cho sự nghiên cứu, phát triển và kiểm tra thuật toán.

Vì thế việc dùng bags là rất quan trọng trong việc phát triển robot, đặc biệt là những robot mang tính phức tạp cao. Cách lưu trữ dữ liệu bằng file bag:

Hình 2.2 Quan hệ giữa các node trong ROS

Hình 2.2 trên cho ta thấy mối quan hệ giữa các node bên trong ROS, node nào publish dữ liệu cho topic nào và node nào subscribe topic nào.

2.1. ROS Communi ➢Graph

- Mối quan hệ giữa các nodes, topics, subscribers, publishers... được biểu diễn thông qua một graph.

- Hiện thị graph bằng lệnh: rosrun rqt_graph rqt_graph

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

10 VD: như hình 2.2

➢Các thuật ngữ khác

- URI: (Uniform Resource Identifier) là một địa chỉ duy nhất thể hiện một nguồn trên Internet. URI là một trong những thành phần cơ bản cho phép tương tác với Internet và được sử dụng như một định danh trong giao thức Internet.

- MD5: (Message-Digest algorithm): MD5 (Thuật toán thông báo-thông báo 5) 24 là một hàm mật mã 128-bit. Nó được sử dụng chủ yếu để xác minh tính tồn vẹn của dữ liệu, chẳng hạn như kiểm tra xem chương trình hoặc tệp có ở dạng ngun bản chưa được sửa đổi hay khơng hình thức. Tính toàn vẹn của việc truyền / nhận tin nhắn trong ROS được xác minh với MD5.

- RCP: (Remote Procedure Call) là viết tắt của hàm gọi một thủ tục phụ trên điều khiển máy tính từ xa từ một máy tính khác trong mạng. RPC sử dụng các giao thức như TCP/ IP và IPX, và cho phép thực thi các chức năng hoặc thủ tục mà không cần nhà phát triển viết chương trình để điều khiển từ xa.a

- XML: (Extensible Markup Language) là một ngôn ngữ đánh dấu đa năng và rộng rãi mà W3C đề xuất để tạo các ngôn ngữ đánh dấu mục đích đặc biệt khác. XML sử dụng các thẻ để mô tả cấu trúc của dữ liệu. Trong ROS, nó được sử dụng trong các thành phần khác nhau như .launch, .urdf, và package.xml.

- XMLRPC :(XML-Remote Procedure Call) là một loại giao thức RPC sử dụng XML làm mã hóa định dạng và sử dụng phương thức yêu cầu và phản hồi của giao thức HTTP không duy trì cũng như kiểm tra kết nối. XMLRPC là một giao thức rất đơn giản, chỉ được sử dụng để xác định dữ liệu nhỏ các loại hoặc lệnh. Do đó, XMLRPC rất nhẹ và hỗ trợ nhiều loại ngơn ngữ lập trình, làm cho nó rất phù hợp với ROS, hỗ trợ nhiều loại phần cứng và các ngôn ngữ.

- TCP/IP: Lớp giao thức Internet đảm bảo truyền dữ liệu bằng TCP, dựa trên lớp IP (Giao thức Internet) trong Lớp giao thức Internet. Nó đảm bảo việc truyền và nhận dữ liệu tuần tự.

- CMakeLists.txt: Môi trường xây dựng là được chỉ định trong tệp ‘CMakeLists.txt’ trong mỗi thư mục gói.

- Package.xml: Tệp XML chứa thơng tin gói mơ tả tên gói, tác giả, giấy phép, và các gói phụ thuộc.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

11 CHƯƠNG II: ROBOT OPERATING SYSTEM (ROS)

1 Cài đặt ROS noetic và ubuntu 20.04

- Để cài đặt và sử dụng được ROS 1 cần cài đặt Ubuntu 20.04 vào máy. Download Ubuntu 20.04 theo đường link: và cài đặt theo link:

- Sau khi cài đặt xong Ubuntu 20.04 trên giao diện terminal của Ubuntu, thực hiện lần lượt các dòng lệnh sau:

Thiết lập máy tính của bạn để chấp nhận phần mềm từ package.ros.org

sudo sh -c 'echo "deb $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

Thiết lập key

sudo apt install curl # if you haven't already installed curl

curl -s | sudo apt-key add -

Cài đặt sudo apt update

sudo apt install ros-noetic-desktop-full Thiết lập môi trường

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

Phụ thuộc để xây dựng các gói

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

sudo apt install python3-rosdep sudo rosdep init

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

12 rosdep update

Để dễ hiểu hơn có thể tham khảo đường link youtube sau đây:

- Nếu cài thành công, bạn mở cửa sổ terminal mới và thực hiện lệnh <roscore> trên giao diện sẽ hiển thị:

2. Packages & xây dựng một package 2.1 Giới thiệu packages

- Hệ thống quản lý file của ROS Packages:

- Một package gồm những folder sau: config, include, scripts, src, launch, msg, srv, action và những file: package.xml, CMakeLists.txt

config: các file cấu hình của package. include: các header và các thư viện (library). scripts: các file python (.py).\

src: các file C++ (.cpp).

launch: các launch file để chạy 1 hoặc nhiều node. msg: các file message tự tạo (.msg)

srv: các file service (.srv) action: các file action (*actionlib)

package.xml: file chứa các khai xuất của package (package này có những gì và dùng những gì)

CMakeLists.txt: CMake file của package (để hướng dẫn máy tính tạo các folder, executables, dependencies, target libraries)

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

13 2.2 Tạo một package và xây dựng 2 nodes

- Các lệnh sử dụng cơ bản:

• cd ~/name_0/name_1: truy cập đến thư mục và được tồn quyền sử dụng nó. • mkdir -p ~/name_0/name_1: tạo cả 2 thư mục, name_1 thuộc thư mục name_0. • mkdir name_0: tạo thư mục mới.

• touch name0: tạo tập tin.

• catkin_create_pkg name_0 name1 name2: tạo package có tên name_0 và các gói phụ

thuộc name1, name2.

• catkin_make: sau khi làm việc, chỉnh sửa với package, workspace, …cần chạy lệnh này. Lệnh này giống như lệnh compile các chương trình khi code c . Sau khi compile lại thì sẽ xuất hiện 2 files là build và devel, vậy nên khi source là source vào cái file, thư viện mà mình compile ra.

• roscore: lệnh chạy ros, sau khi chạy lệnh này xong, mở terminal mới để thực hiện các lệnh khác

- Tạo một package và xây dựng 2 nodes: Mở terminal chạy lần lượt các lệnh sau:

$ cd ~/Desktop/catkin_ws/src // lệnh này truy cập vào file src của thư mục catkin_ws//

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

14 $ catkin_create_pkg hello_world std_msgs rospy // tạo package có tên là

hello_world và các gói std_msgs rospy là các gói phụ thuộc, các gói này được hiểu như các thư viện có sẵn, nếu cần thì cài thêm //

Giờ chúng ta sẽ tạo 2 nodes trong package vừa tạo

Truy cập vào package hello_world và tạo file scripts (file có chứa code python đuôi .py)

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

15 Gõ lệnh trên terminal:

$ cd ~/Desktop/catkin_ws/src/hello_world $ mkdir scripts // tạo thư mục có tên scripts

Bây giờ trong package hello_world:

Tiếp theo chúng ta sẽ tạo 2 tập tin đuôi .py ( để code bằng python) trong file scripts.

Gõ lệnh trên terminal:

$ cd ~/Desktop/catkin_ws/src/hello_world/scripts $ touch hello_world_publisher.py

$ touch hello_world_subscriber.py

2 files publisher.py và subscriber.py được tạo trong thư mục scripts:

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

16 Mở 2 file đó lên và gõ 1 chương trình sau đây:

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

17 Lưu và thực hiện gõ các lệnh sau:

$ cd ~/Desktop/catkin_ws/src/hello_world/scripts // truy cập vào thư mục scripts // $ chmod +x hello_world_publisher.py

$ chmod +x hello_world_subscriber.py

// 2 lệnh trên dung để cấp quyền truy cập đến 2 nodes vừa được tạo Tiến hành compile lại bằng lệnh:

$ cd ~Desktop/catkin_ws $ catkin_make

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

18 $ rosrun hello_world hello_world_publisher.py

$ rosrun hello_world hello_world_subscriber.py Màn hình terminal sẽ hiển thị:

File hello_world_publisher.py sẽ gửi dữ liệu lên topic và file hello_world_subscriber.py sẽ đọc dữ liệu từ topic đó và hiển thị lên

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

19 3. Gazebo

Gazebo là trình mơ phỏng 3D cung cấp Robot, cảm biến, mơ hình mơi trường để mơ phỏng Robot và cung cấp mô phỏng thực tế với công cụ vật lý của nó. Gazebo là một trong những trình mơ phỏng phổ biến nhất cho mã nguồn, nó là một trình mơ phỏng rất phổ biến trong lĩnh vực robot vì hiệu suất cao. Hơn nữa, Gazebo được phát triển và phân phối bởi Open Robotics phụ trách ROS nên tương thích với ROS. Và điều tuyệt vời nhất là Gazebo miễn phí và nó có sẵn để cài đặt trên các bản phân phối GNU / Linux. Trên thực tế, nó có sẵn trong chính Trung tâm phần mềm Ubuntu nếu bạn không muốn làm phức tạp cuộc sống quá nhiều trong quá trình cài đặt.

</div>

×