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

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

4.2 launch之Python實(shí)現(xiàn)

2023-10-16 10:43 作者:猛獅集訓(xùn)營  | 我要投稿

本節(jié)主要介紹launch文件的Python實(shí)現(xiàn)語法。

4.2.1 節(jié)點(diǎn)設(shè)置

launch 中需要執(zhí)行的節(jié)點(diǎn)被封裝為了 launch_ros.actions.Node 對象。

需求:launch 文件中配置節(jié)點(diǎn)的相關(guān)屬性。

示例:

在 cpp01_launch/launch/py 目錄下新建 py01_node.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

1.Node使用語法1

上述代碼會創(chuàng)建一個 turtlesim_node 節(jié)點(diǎn),設(shè)置了若干節(jié)點(diǎn)屬性,并且節(jié)點(diǎn)關(guān)閉后會自動重啟。

  • package:功能包;

  • executable:可執(zhí)行文件;

  • namespace:命名空間;

  • name:節(jié)點(diǎn)名稱;

  • exe_name:流程標(biāo)簽;

  • respawn:設(shè)置為True時,關(guān)閉節(jié)點(diǎn)后,可以自動重啟。

2.Node使用語法2

上述代碼會創(chuàng)建一個 turtlesim_node 節(jié)點(diǎn),并導(dǎo)入背景色相關(guān)參數(shù)。

  • parameters:導(dǎo)入?yún)?shù)。

parameter 用于設(shè)置被導(dǎo)入的參數(shù),如果是從 yaml 文件加載參數(shù),那么需要先準(zhǔn)備 yaml 文件,在功能包下新建 config 目錄,config目錄下新建 t2.yaml 文件,并輸入如下內(nèi)容:

注意,還需要在 CMakeLists.txt 中安裝 config:

3.Node使用語法3

上述代碼會創(chuàng)建一個 turtlesim_node 節(jié)點(diǎn),并將話題名稱從 /turtle1/cmd_vel 重映射到 /cmd_vel。

  • remappings:話題重映射。

4.Node使用語法4

上述代碼會創(chuàng)建一個 rviz2 節(jié)點(diǎn),并加載了 rviz2 相關(guān)的配置文件。

該配置文件可以先啟動 rviz2 ,配置完畢后,保存到 config 目錄并命名為 my.rviz。

  • arguments:調(diào)用指令時的參數(shù)列表。

5.Node使用語法5

上述代碼會創(chuàng)建一個 turtlesim_node 節(jié)點(diǎn),并在指令調(diào)用時傳入?yún)?shù)列表。

  • ros_arguments:相當(dāng)于 arguments 前綴 --ros-args。

4.2.2 執(zhí)行指令

launch 中需要執(zhí)行的命令被封裝為了 launch.actions.ExecuteProcess 對象。

需求:在 launch 文件中執(zhí)行 ROS2 命令,以簡化部分功能的調(diào)用。

示例:

在 cpp01_launch/launch/py 目錄下新建 py02_cmd.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

上述代碼用于執(zhí)行 cmd 參數(shù)中的命令,該命令會在 turtlesim_node 中生成一只新的小烏龜。

  • cmd:被執(zhí)行的命令;

  • output:設(shè)置為 both 時,日志會被輸出到日志文件和終端,默認(rèn)為 log,日志只輸出到日志文件。

  • shell:如果為 True,則以 shell 的方式執(zhí)行命令。

4.2.3 參數(shù)設(shè)置

參數(shù)設(shè)置主要涉及到參數(shù)的聲明與調(diào)用兩部分,其中聲明被封裝為 launch.actions.DeclareLaunchArgument,調(diào)用則被封裝為 launch.substitutions import LaunchConfiguration。

需求:啟動turtlesim_node節(jié)點(diǎn)時,可以動態(tài)設(shè)置背景色。

示例:

在 cpp01_launch/launch/py 目錄下新建 py03_args.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

上述代碼會使用DeclareLaunchArgument對象聲明三個參數(shù),且每個參數(shù)都有參數(shù)名稱以及默認(rèn)值。

  • name:參數(shù)名稱;

  • default_value:默認(rèn)值。

parameters=[{"background_r": LaunchConfiguration(variable_name="background_r"), "background_g": LaunchConfiguration("background_g"), "background_b": LaunchConfiguration("background_b")}]


上述代碼會使用LaunchConfiguration對象獲取參數(shù)值。

  • variable_name:被解析的參數(shù)名稱。

launch文件執(zhí)行時,可以動態(tài)傳入?yún)?shù),示例如下:


ros2 launch cpp01_launch py03_args.launch.py background_r:=200 background_g:=80 background_b:=30

如果執(zhí)行l(wèi)aunch文件時不手動傳入?yún)?shù),那么解析到的參數(shù)值是聲明時設(shè)置的默認(rèn)值。

4.2.4 文件包含

在 launch 文件中可以包含其他launch文件,需要使用的API為:launch.actions.IncludeLaunchDescription 和 launch.launch_description_sources.PythonLaunchDescriptionSource。

需求:新建 launch 文件,包含 4.2.3 中的 launch 文件并為之傳入設(shè)置背景色相關(guān)的參數(shù)。

示例:

在 cpp01_launch/launch/py 目錄下新建 py04_include.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

上述代碼將包含一個launch文件并為launch文件傳參。

在 IncludeLaunchDescription 對象中:

  • launch_description_source:用于設(shè)置被包含的 launch 文件;

  • launch_arguments:元組列表,每個元組中都包含參數(shù)的鍵和值。

在 PythonLaunchDescriptionSource 對象中:

  • launch_file_path:被包含的 launch 文件路徑。

4.2.5 分組設(shè)置

在 launch 文件中,為了方便管理可以對節(jié)點(diǎn)分組,分組相關(guān)API為:launch.actions.GroupAction和launch_ros.actions.PushRosNamespace。

需求:對 launch 文件中的多個 Node 進(jìn)行分組。

示例:

在 cpp01_launch/launch/py 目錄下新建 py05_group.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

上述代碼將創(chuàng)建兩個組,兩個組使用了不同的命名空間,每個組下包含了不同的節(jié)點(diǎn)。

在 GroupAction 對象中,使用的參數(shù)為:

  • actions:action列表,比如被包含到組內(nèi)的命名空間、節(jié)點(diǎn)等。

在 PushRosNamespace 對象中,使用的參數(shù)為:

  • namespace:當(dāng)前組使用的命名空間。

4.2.6 添加事件

節(jié)點(diǎn)在運(yùn)行過程中會觸發(fā)不同的事件,當(dāng)事件觸發(fā)時可以為之注冊一定的處理邏輯。事件使用相關(guān)的 API 為:launch.actions.RegisterEventHandler、launch.event_handlers.OnProcessStart、launch.event_handlers.OnProcessExit。

需求:為 turtlesim_node 節(jié)點(diǎn)添加事件,事件1:節(jié)點(diǎn)啟動時調(diào)用spawn服務(wù)生成新烏龜;事件2:節(jié)點(diǎn)關(guān)閉時,輸出日志信息。

示例:

在 cpp01_launch/launch/py 目錄下新建 py06_event.launch.py 文件,輸入如下內(nèi)容:

代碼解釋:

上述代碼為 turtle 節(jié)點(diǎn)注冊啟動事件和退出事件,當(dāng) turtle 節(jié)點(diǎn)啟動后會執(zhí)行 spwn 節(jié)點(diǎn),當(dāng) turtle 節(jié)點(diǎn)退出時,會輸出日志文本:“turtlesim_node退出!”。

對象 RegisterEventHandler 負(fù)責(zé)注冊事件,其參數(shù)為:

  • event_handler:注冊的事件對象。

OnProcessStart 是啟動事件對象,其參數(shù)為:

  • target_action:被注冊事件的目標(biāo)對象;

  • on_start:事件觸發(fā)時的執(zhí)行邏輯。

OnProcessExit 是退出事件對象,其參數(shù)為:

  • target_action:被注冊事件的目標(biāo)對象;

  • on_exit:事件觸發(fā)時的執(zhí)行邏輯。

LogInfo 是日志輸出對象,其參數(shù)為:

  • msg:被輸出的日志信息。

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

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

4.2 launch之Python實(shí)現(xiàn)的評論 (共 條)

使用qq登录你需要登录后才可以评论。
津市市| 天长市| 旬邑县| 咸丰县| 榕江县| 临颍县| 芦山县| 达拉特旗| 稻城县| 于都县| 分宜县| 北辰区| 花垣县| 宾川县| 兴宁市| 双江| 莱芜市| 宜州市| 施甸县| 山阳县| 宝兴县| 驻马店市| 康乐县| 镇巴县| 达拉特旗| 江西省| 会泽县| 襄汾县| 汉阴县| 衡山县| 陵水| 乌审旗| 寿阳县| 阿图什市| 临夏县| 阳东县| 宁波市| 鹿泉市| 鹤山市| 晋中市| 高密市|