概述
浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍
首先附上古月居老师的教程地址:古月居
古月居老师《Ros入门21讲》的全部代码在资源链接中分享给大家共同学习
主要内容
- 浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍
- 1.学习目标
- 2.launch文件初览
- 3.launch文件基本语法
- 4.参数设置语法
- 5.remap重映射
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等相关资源同样可以实现相关功能。
最后
以上就是背后故事为你收集整理的浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍--Ros入门21讲-第19讲笔记(持续更新)浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍的全部内容,希望文章能够帮你解决浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍--Ros入门21讲-第19讲笔记(持续更新)浅谈Ros中使用launch启动文件的方法(一):launch文件语法介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复