ros 中配置launch启动文件

本文参考这篇博客:点击链接
一、roslaunch是一个至关重要的工具,它能够帮助我们高效地启动ROS节点、参数服务器和其他必要的组件。
二、在ROS中,一个复杂的机器人项目通常由多个节点(Node)组成,每个节点负责不同的任务,例如传感器数据处理、运动控制、用户界面等。在项目启动时,需要同时启动这些节点,并且要确保它们之间的通信和协调工作。
三、ros中启动单个节点命令
rosrun 包名 可执行文件名
当然肯定是一次启动多个节点是更方便的
四、
启动单个节点 vs. 启动多个节点:

rosrun只能启动一个节点,适用于单个节点的快速启动。
roslaunch可以同时启动多个节点,适用于复杂的ROS系统和多节点协同工作的场景。

参数设置和传递:

rosrun通过命令行参数传递参数给节点。
roslaunch可以在启动文件中定义和设置节点的参数,并且支持从参数文件加载参数。

五、

<launch>
    <!-- 启动can_data_publisher节点 -->
    <node name="can_data_publisher" pkg="comm" type="wulingreport" output="screen">
    </node>
</launch>

元素用于定义一个要启动的ROS节点。它包含以下属性:
1.name:节点的名称can_data_publisher,用于标识节点。
2.pkg:节点所在的包名comm
3.type:节点的类型wulingreport,即节点可执行文件的名称
4.args:可选属性,用于传递给节点的命令行参数。
5.output:可选属性,用于定义节点的输出选项,可以是"screen"(输出到屏幕),“log”(输出到日志文件),或"none"(无输出)。
六、

<arg name="argument_name" default="default_value" />

元素用于定义参数化的参数,可以在启动时传入不同的参数值。它包含以下属性:
name:参数的名称
default:default_value参数的默认值,如果在启动命令中传入参数,则可以使用默认值。
七、

<include file="file" />

允许将其他的roslaunch文件包含在当前文件中,实现模块化配置,包含一个file属性,用于指定的包含的roslaunch文件的路径。
通过使用include元素,我们可以将大的启动配置拆分为多个小文件,是的更加容易管理。

<group>

</group>

group元素用于将多个节点组织在一个组内
八、
remap:进行话题重映射
允许您在启动文件中对话题进行重映射,从而解决结点之间的通信问题。通常在启动文件中,节点的话题名称已经预先定义,但在某些情况下,您可能希望在启动时动态地更改节点之间的通信话题。

<launch>
    <!-- Node with original topic -->
    <node pkg="package_name" type="node_type" name="node1" />
    
    <!-- Node with remapped topic -->
    <node pkg="package_name" type="node_type" name="node2">
        <remap from="original_topic" to="remapped_topic" />
    </node>
</launch>

启动了两个节点,在同一个包下,使用一个可执行文件,将node2中的话题original_topic重新映射为remappen_topic。在node2内部,接收来自original_topic的数据,但实际上与node1通信话题是remapped_topic。
使用标签可以方便地解决节点之间话题名称的冲突问题,从而实现灵活的通信。
九、
arg:

<launch>
    <!-- Define an argument with default value -->
    <arg name="my_param" default="default_value" />
 
    <!-- Start the node with the specified parameter value -->
    <node pkg="package_name" type="node_type" name="my_node" output="screen">
        <param name="param_name" value="$(arg my_param)" />
    </node>
</launch>

需要根据不同的运行环境或需求来调整节点的参数。为了使启动配置更加灵活,可以使用标签定义参数,并在roslaunch文件中引入和使用这些参数。
我们使用标签定义了一个参数my_param,并给它设置了默认值default_value。然后,在启动节点my_node时,我们使用标签将参数param_name设置为$(arg my_param),这里的$(arg my_param)表示使用之前定义的参数my_param的值。
十、
和语句

<launch>
    <!-- Start node1 only if the condition is true -->
    <if>
        <condition value="$(arg condition_variable)" />
        <node pkg="package_name" type="node_type" name="node1" />
    </if>
 
    <!-- Start node2 only if the condition is false -->
    <unless>
        <condition value="$(arg condition_variable)" />
        <node pkg="package_name" type="node_type" name="node2" />
    </unless>
</launch>

我们使用和标签分别对node1和node2进行条件判断。标签用于定义条件判断的值,它的值来自之前定义的参数condition_variable。如果condition_variable的值为true,则node1会被启动;如果为false,则node2会被启动。
使用条件语句,我们可以根据不同的情况来启动不同的节点,使得启动配置更加灵活和智能。
假设有一个简单的ROS项目,其中包含两个节点,一个发布者节点(publisher_node)和一个订阅者节点(subscriber_node)。发布者节点发布一个名为/chatter的话题,订阅者节点接收并显示收到的消息。
创建一个roslaunch文件来启动这两个节点,并演示如何使用标签进行话题重映射,引入参数,以及使用调试选项和调试策略。

<launch>
    <!-- Define an argument for message rate -->
    <arg name="message_rate" default="1.0" />
 
    <!-- Start the publisher_node with a remapped topic and custom message rate -->
    <node pkg="my_package" type="publisher_node" name="publisher" output="screen">
        <remap from="chatter" to="custom_chatter_topic" />
        <param name="message_rate" value="$(arg message_rate)" />
    </node>
 
    <!-- Start the subscriber_node -->
    <node pkg="my_package" type="subscriber_node" name="subscriber" output="screen" />
</launch>

我们在roslaunch文件中使用标签定义了一个参数message_rate,并设置了默认值为1.0。这个参数用于控制消息发布的频率。
在publisher_node节点中,我们使用标签将发布的话题/chatter重映射为/custom_chatter_topic。这样,在其他节点中订阅的话题名就是/custom_chatter_topic。
我们使用标签将参数message_rate设置为我们之前定义的message_rate参数的值,这样我们可以在启动时传入不同的频率。
十一、
–nodes
在终端中运行以下命令,可以列出该roslaunch文件中的所有节点
roslaunch --nodes my_launch_file.launch
这样我们可以检查所有将要启动的节点,确保节点名称和类型正确。

–screen
终端中运行一下命令。启动节点,将输出信息打印到终端。
roslaunch --screen my_launch_file.launch
这样可以方便我们实时查看节点的输出信息,以便进行调试。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值