最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

1.3 ROS2快速體驗

2023-09-12 11:06 作者:猛獅集訓營  | 我要投稿

1.3 ROS2快速體驗

ROS2中涉及的編程語言以C++和Python為主,ROS2中的大多數(shù)功能兩者都可以實現(xiàn),在本系列教程中,如無特殊情況,每一個案例也都會分別使用C++和Python兩種方案演示。本節(jié)我們將介紹一個最基本的案例——ROS2版本的HelloWorld,通過學習本節(jié)內(nèi)容,你可以了解ROS2程序的編寫、編譯與執(zhí)行流程。

1.3.1 案例簡介

1.需求

編寫ROS2程序,要求程序運行時,可以在終端輸出文本"Helo World"。

2.準備

無論是使用C++還是Python編寫ROS2程序,都需要依賴于工作空間,在此,我們先實現(xiàn)工作空間的創(chuàng)建與編譯,打開終端,輸入如下指令:

mkdir -p ws00_helloworld/src #創(chuàng)建工作空間以及子級目錄 src,工作空間名稱可以自定義 cd ws00_helloworld #進入工作空間 colcon build #編譯

上述指令執(zhí)行完畢,將創(chuàng)建ws00_helloworld目錄,且該目錄下包含build、install、log、src共四個子級目錄。

3.流程簡介

工作空間創(chuàng)建完畢后,我么可以在工作空間下的src目錄中編寫C++或Python程序,且兩種語言的實現(xiàn)流程大致一致,主要包含如下步驟:

  1. 創(chuàng)建功能包;

  2. 編輯源文件;

  3. 編輯配置文件;

  4. 編譯;

  5. 執(zhí)行。

下面兩節(jié)我們會介紹具體的實現(xiàn)細節(jié)。

1.3.2 HelloWorld(C++)

1.創(chuàng)建功能包

終端下,進入ws00_helloworld/src目錄,使用如下指令創(chuàng)建一個C++功能包:

ros2 pkg create pkg01_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld

執(zhí)行完畢,在src目錄下將生成一個名為pkg01_helloworld_cpp的目錄,且目錄中已經(jīng)默認生成了一些子級文件與文件夾。

2.編輯源文件

進入pkg01_helloworld_cpp/src目錄,該目錄下有一helloworld.cpp文件,修改文件內(nèi)容如下:

3.編輯配置文件

在步驟1創(chuàng)建功能包時所使用的指令已經(jīng)默認生成且配置了配置文件,不過實際應用中經(jīng)常需要自己編輯配置文件,所以在此對相關內(nèi)容做簡單介紹,所使用的配置文件主要有兩個,分別是功能包下的package.xml與CMakeLists.txt。

1.package.xml

文件內(nèi)容如下:

<?xml version="1.0"?>

<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>

<package format="3"> ?

? ?<name>pkg01_helloworld_cpp</name> ?

? ?<version>0.0.0</version> ?

? ?<description>TODO: Package description</description> ?

? ?<maintainer email="ros2@todo.todo">ros2</maintainer> ?

? ?<license>TODO: License declaration</license>


???<buildtool_depend>ament_cmake</buildtool_depend> ?

? ? <!-- 所需要依賴 --> ?

? ? <depend>rclcpp</depend> ?


? ?<test_depend>ament_lint_auto</test_depend>? ? ? ? ? ??<test_depend>ament_lint_common</test_depend> ?

<export> ? ?

? ?<build_type>ament_cmake</build_type> ?

</export>

</package>

注釋部分以后需要根據(jù)實際的包依賴進行添加或修改。

2.CMakeLists.txt

文件內(nèi)容如下:

cmake_minimum_required(VERSION 3.8)

project(pkg01_helloworld_cpp)?


if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") ?add_compile_options(-Wall -Wextra -Wpedantic)?

endif()?


# find dependencies?

find_package(ament_cmake REQUIRED)?

# 引入外部依賴包?

find_package(rclcpp REQUIRED)?


# 映射源文件與可執(zhí)行文件?

add_executable(helloworld src/helloworld.cpp)?

# 設置目標依賴庫?

ament_target_dependencies( ?

? helloworld ?

? "rclcpp"?

)?

# 定義安裝規(guī)則?

install(TARGETS helloworld ?

DESTINATION lib/${PROJECT_NAME})?


if(BUILD_TESTING) ?

?find_package(ament_lint_auto REQUIRED) ?

?# the following line skips the linter which checks for copyrights ?

?# comment the line when a copyright and license is added to all source files ?set(ament_cmake_copyright_FOUND TRUE) ?

?# the following line skips cpplint (only works in a git repo) ?

?# comment the line when this package is in a git repo and when ?

?# a copyright and license is added to all source files ?set(ament_cmake_cpplint_FOUND TRUE) ?

?ament_lint_auto_find_test_dependencies()?

endif()?

ament_package()


中文注釋部分以后可能需要根據(jù)實際情況修改。

4.編譯

終端下進入到工作空間,執(zhí)行如下指令:

colcon build

5.執(zhí)行

終端下進入到工作空間,執(zhí)行如下指令:

. install/setup.bash?

ros2 run pkg01_helloworld_cpp helloworld

程序執(zhí)行,在終端下將輸出文本:"hello world!"。


1.3.3 HelloWorld(Python)

1.創(chuàng)建功能包

終端下,進入ws00_helloworld/src目錄,使用如下指令創(chuàng)建一個python功能包:

ros2 pkg create pkg02_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld

執(zhí)行完畢,在src目錄下將生成一個名為pkg02_helloworld_py的目錄,且目錄中已經(jīng)默認生成了一些子級文件與文件夾。

2.編輯源文件

進入pkg02_helloworld_py/pkg02_helloworld_py目錄,該目錄下有一helloworld.py文件,修改文件內(nèi)容如下:

3.編輯配置文件

與C++類似的,在步驟1創(chuàng)建功能包時所使用的指令也已經(jīng)默認生成且配置了配置文件,不過實際應用中經(jīng)常需要自己編輯配置文件,所以在此對相關內(nèi)容做簡單介紹,所使用的配置文件主要有兩個,分別是功能包下的package.xml與setup.py。

1.package.xml

文件內(nèi)容如下:

<?xml version="1.0"?>

<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>

<package format="3"> ?

?<name>pkg02_helloworld_py</name> ?

?<version>0.0.0</version> ?

?<description>TODO: Package description</description> ?

?<maintainer email="ros2@todo.todo">ros2</maintainer> ?

?<license>TODO: License declaration</license> ?


? <!-- 所需要依賴 --> ?

? <depend>rclpy</depend> ?

?<test_depend>ament_copyright</test_depend> ?<test_depend>ament_flake8</test_depend> ?<test_depend>ament_pep257</test_depend> ?

?<test_depend>python3-pytest</test_depend> ?

?<export> ? ?

? ?<build_type>ament_python</build_type> ?

? </export>

</package>

注釋部分以后需要根據(jù)實際的包依賴進行添加或修改。

2.setup.py

文件內(nèi)容如下:

from setuptools import setup?


package_name = 'pkg02_helloworld_py'


setup( ? ?

? ?name=package_name, ? ?

? ?version='0.0.0', ? ?

? ?packages=[package_name], ? ?

? ?data_files=[ ? ? ? ?

? ? ? ('share/ament_index/resource_index/packages',? ? ? ? ? ? ? ? ? ? ? ??? ['resource/' + package_name]),?

? ? ? ('share/' + package_name, ['package.xml']), ? ?

], ? ?

?install_requires=['setuptools'], ? ?

?zip_safe=True, ? ?

?maintainer='ros2', ? ?

?maintainer_email='ros2@todo.todo', ? ?

?description='TODO: Package description', ? ?

?license='TODO: License declaration', ? ?

?tests_require=['pytest'], ? ?

?entry_points={ ? ? ? ?

? ? 'console_scripts': [ ? ? ? ? ? ?

? ? ? ?# 映射源文件與可執(zhí)行文件 ? ? ? ? ? ?

? ? ? ?'helloworld = pkg02_helloworld_py.helloworld:main' ? ? ? ?

? ? ?], ? ?

? },?

)

注釋部分以后可能需要根據(jù)實際情況修改。

4.編譯

終端下進入到工作空間,執(zhí)行如下指令:

colcon build

5.執(zhí)行

終端下進入到工作空間,執(zhí)行如下指令:

. install/setup.bash ros2 run pkg02_helloworld_py helloworld

程序執(zhí)行,在終端下將輸出文本:"hello world!"。

1.3.4 運行優(yōu)化

每次終端中執(zhí)行工作空間下的節(jié)點時,都需要調(diào)用. install/setup.bash指令,使用不便,優(yōu)化策略是,可以將該指令的調(diào)用添加進~/setup.bash,操作格式如下:

echo "source /{工作空間路徑}/install/setup.bash" >> ~/.bashrc

示例:

echo "source /home/ros2/ws00_helloworld/install/setup.bash" >> ~/.bashrc

以后再啟動終端時,無需手動再手動刷新環(huán)境變量,使用更方便。

B站有完整的ros系列教程視頻,可以觀看完整內(nèi)容ros課程ROS2理論與實踐

更多內(nèi)容將在猛獅知識星球社區(qū)更新最新課程,后續(xù)將推出更多優(yōu)質(zhì)內(nèi)容——詳情可關注猛獅集訓營公眾號猛獅集訓營官方網(wǎng)站。

1.3 ROS2快速體驗的評論 (共 條)

分享到微博請遵守國家法律
翼城县| 略阳县| 淳化县| 双流县| 顺昌县| 江门市| 屯留县| 茌平县| 宜都市| 沭阳县| 临潭县| 丰顺县| 霸州市| 英山县| 南投市| 孝感市| 甘谷县| 普兰店市| 曲水县| 阳新县| 安图县| 普兰县| 永康市| 巢湖市| 缙云县| 芦山县| 顺义区| 正镶白旗| 九寨沟县| 邯郸县| 金溪县| 玉林市| 化州市| 柳河县| 曲松县| 石渠县| 井陉县| 酒泉市| 黄陵县| 富蕴县| 读书|