1-创建launch文件

本文详细介绍了ROS2中的启动系统如何通过launch文件配置多个节点,如turtlesim示例中的节点启动、命名空间管理以及remap功能的应用。同时提到了使用Python、XML或YAML编写launch文件,以及通过rqt_graph可视化节点间关系的方法。
摘要由CSDN通过智能技术生成

背景

    ROS 2中的启动系统负责帮助用户描述其系统的配置,然后按照描述执行。系统的配置包括运行什么程序,在哪里运行它们,传递什么参数给它们,以及特定于ros的设定,这些设定通过给每个组件提供不同的配置,使得在整个系统中重用组件变得容易。它还负责监视已启动的过程的状态,并报告和/或对这些过程状态的变化作出反应。
    用Python、XML或YAML编写的启动文件都可以启动和停止不同的节点,以及触发和处理各种事件。有关不同格式的描述,请参见使用Python、XML和YAML编写ROS 2启动文件。

任务

1 创建launch文件夹

mkdir launch

2 编写launch文件

    以turtlesim包及其可执行文件为例编写ROS 2的launch文件。如上所述,这可以是Python、XML或YAML(以xml格式为例)。

    截取launch/turtlesim_mimic_launch.xml文件中的部分代码如下:

<launch>
  <node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim1"/>
  <node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim2"/>
  <node pkg="turtlesim" exec="mimic" name="mimic">
    <remap from="/input/pose" to="/turtlesim1/turtle1/pose"/>
    <remap from="/output/cmd_vel" to="/turtlesim2/turtle1/cmd_vel"/>
  </node>
</launch>

    上面的所有启动文件都是从turtlesim包启动一个包含三个节点的系统。该系统的目标是启动两个乌龟窗口,并让一只乌龟模仿另一只乌龟的动作。
    在启动两个turtlesim节点时,它们之间的唯一区别是它们的名称空间值。唯一的名称空间允许系统启动两个节点,而不存在节点名称或话题名称冲突。在这个系统中,两只乌龟都在同一个话题上接收命令,并在同一个话题上发布它们的姿势。使用唯一的名称空间,可以区分用于不同龟的消息。

    最后一个节点也来自turtlesim包,但是是一个不同的可执行文件:mimic。该节点以重新映射的形式添加了配置细节。Mimic的/input/pose话题被重新映射到/turtlesim1/turtle1/pose,它的/output/cmd_vel话题被重新映射到/turtlesim2/turtle1/cmd_vel。这意味着mimic将订阅/turtlesim1/sim的姿势话题,并为/turtlesim2/sim的速度命令话题重新发布。换句话说,乌龟会模仿乌龟的移动。

    前两个操作启动两个乌龟窗口:

<node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim1"/>
<node pkg="turtlesim" exec="turtlesim_node" name="sim" namespace="turtlesim2"/>

    最后一个动作启动模拟节点与映射:

<node pkg="turtlesim" exec="mimic" name="mimic">
  <remap from="/input/pose" to="/turtlesim1/turtle1/pose"/>
  <remap from="/output/cmd_vel" to="/turtlesim2/turtle1/cmd_vel"/>
</node>

3 ros2 launch

    要运行上面创建的启动文件,进入之前创建的目录并运行以下命令:

cd launch
ros2 launch turtlesim_mimic_launch.xml

    注意:可以直接启动launch文件(如上所述),也可以由包来提供launch文件。当它由包提供时,语法格式为:

ros2 launch <package_name> <launch_file_name>

    对于带有launch文件的包,在包的package.xml中记得添加一个exec_depend依赖:

<exec_depend>ros2launch</exec_depend>

    这有助于确保在构建包之后可以使用ros2启动命令。它还确保所有启动文件格式被识别。

    执行以上的launch文件后,将打开两个turtlesim窗口,您将看到以下[INFO]消息,告诉您启动文件已启动哪些节点:

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [turtlesim_node-1]: process started with pid [11714]
[INFO] [turtlesim_node-2]: process started with pid [11715]
[INFO] [mimic-3]: process started with pid [11716]

    要查看系统的运行情况,请打开一个新终端,并在/turtlesim1/turtle1/cmd_vel话题上运行ros2 topic pub命令,以移动第一只海龟:

ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"

    你会看到两只乌龟沿着相同的路径。

4 使用rqt_graph查看话题消息

    当系统仍在运行时,打开一个新的终端并运行rqt_graph,以便更好地了解启动文件中节点之间的关系。
    执行命令:

rqt_graph

    隐藏节点(您运行的ros2 topic pub命令)将数据发布到左侧的/turtlesim1/turtle1/cmd_vel话题,/turtlesim1/sim节点订阅了该话题。图表的其余部分显示了前面描述的内容:mimic订阅了/turtlesim1/sim的位姿话题,并发布了/turtlesim2/sim的速度命令话题。

总结

    launch文件简化了运行具有许多节点和特定配置细节的复杂系统。您可以使用Python、XML或YAML创建启动文件,并使用ros2启动命令运行它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值