浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍--Ros入门21讲-第19讲笔记(持续更新)

浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍

首先附上古月居老师的教程地址:古月居
古月居老师《Ros入门21讲》的全部代码在资源链接中分享给大家共同学习

1.学习目标

在使用Ros过程中,经常遇到使用多个Terminal同时启动多个节点的情况,为简化Ros开发操作,使用Launch文件进行RosMaster启动、节点运行等操作是Ros学习和日常开发中十分重要的技能,以下根据古月居老师《Ros入门21讲》中第19讲的内容,特总结了launch文件使用的一些基本方法。

2.launch文件初览

launch文件采用XML语法,使用标签化定义,旨在向服务器发送当前操作请求以及关联的相关功能包、可执行文件等信息,下面是一个完整的launch文件内容:

<launch>
    <arg name="config_path" default = "$(find feature_tracker)/../config/euroc/euroc_config.yaml" />
	  <arg name="vins_path" default = "$(find feature_tracker)/../config/../" />
    
    <node name="feature_tracker" pkg="feature_tracker" type="feature_tracker" output="log">
        <param name="config_file" type="string" value="$(arg config_path)" />
        <param name="vins_folder" type="string" value="$(arg vins_path)" />
    </node>
 
    <node name="vins_estimator" pkg="vins_estimator" type="vins_estimator" output="screen">
       <param name="config_file" type="string" value="$(arg config_path)" />
       <param name="vins_folder" type="string" value="$(arg vins_path)" />
    </node>
 
    <node name="pose_graph" pkg="pose_graph" type="pose_graph" output="screen">
        <param name="config_file" type="string" value="$(arg config_path)" />
        <param name="visualization_shift_x" type="int" value="0" />
        <param name="visualization_shift_y" type="int" value="0" />
        <param name="skip_cnt" type="int" value="0" />
        <param name="skip_dis" type="double" value="0" />
    </node>
 
</launch>

3.launch文件基本语法

<launch>
        <node pkg="turtlesim" name = "sim1" type="turtlesim_nade"/>
        <node pkg="turtlesim" name = "sim2" type="turtlesim_node"/>
</launch>

以上面这个简单的launch文件举例,在< launch >标签中,描述了使用roslaunch命令运行节点所需的标签。其中< node >描述了roslaunch运行的节点,选项包括pkg、type和name。一个完整的launch语句可以包含以下选项内容:

基础选项:

pkg: 节点依赖的功能包名称。
type: 节点使用的可执行文件名称。
name: 节点运行时的名称(用户定义)。

除以上3个基础选项外,还可添加其它选项:

output: 选择是否需要将节点输出信息打印到终端上。
respawn: 如果节点启动时down掉选择是否需要重启节点。
required: 当前node在运行期间是否必须启动成功。
ns: =namespace可以为每个待启动节点自定义一个命名空间,来避免使用时命名冲突的问题。
args: 可在启动节点时为每个节点添加参数,如在新建Ros工作空间时可以添加roscpp、rospy、tf等参数表示新建工作空间的依赖项。
machine: 可以设置运行该节点的PC的名称、address、ros-root和ros-package-path。
remap: 可以更改节点名称、话题名称等等,在节点中用到的ROS变量的名称。例如:。
include: 可以加载属于同一个功能包或不同的功能包的另一个launch,并将其作为一个launch文件来运行。
group: 用于分组正在运行的节点。
test: 用于测试节点。类似于,但是有可以用于测试的选项。

以上是目前个人使用中比较常用的选项介绍,后续会持续更新,全部介绍可查看参考官方文档:roslaunch/XML

4.参数设置语法

下面用几个较概括性的语句进行举例说明:

<param name="output_frame" value="odom"/>

eg-1:< param >
实现功能:
设置Ros系统中正在运行的一个参数并存储到Ros参数服务器中,其中:

  • name:参数名
  • value:参数值
<rosparam file="params.yaml" command="load" ns=“params"/>

eg-2:< rosparam >
实现功能:
从参数文件params.yaml中加载所有参数,上传到Ros的参数服务器中,定义命名空间为params,其中:

  • file:参数文件名称
  • command:当前操作
  • ns:命名空间名称
<arg name="arg-name" default="arg-value" />

eg-3:< arg >标签
实现功能:
arg标签中的参数仅限于在launch文件之间进行参数传递,该语句表示在当前launch文件下定义一个名为“arg-name”的参数,其默认参数值为“arg-value”,其中:

  • name:在当前launch文件中定义一个参数的参数名称
  • default:该参数的默认参数值
<param name="foo" value="$(arg arg-name)" />

eg-4 :< arg >定义参数调用方法1
实现功能:
launc文件中找到名为arg-name的参数,取出参数值,将参数值赋值给名为foo的参数,其中:

  • name:取出参数值后赋值给参数的参数名
  • value="$(arg xxx)":在launch文件内部找到名为 "xxx"的参数,取出参数值,注意不能漏掉 $和前面的arg前缀
<node name="node" pkg="package" type="type " args="$(arg arg-name)" />

eg-5:< arg >定义参数调用方法2
实现功能:在启动节点时,取出launch文件中的arg-name参数作为节点的输入参数参与节点运行。

5.remap重映射

作用:将Ros中某些计算图的资源进行重新命名,如:

<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>

实现功能:
将Ros中的Topic:"/turtlebot/cmd_vel"进行映射,重命名为"/cmd_vel",其中:

  • from:原命名
  • to:映射之后的命名

同时,remap重映射机制不仅可以对Topic资源进行映射,对Server与Client等相关资源同样可以实现相关功能。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值