系列文章目录
[ROS基础-1] Linux系统介绍与ubuntu安装(virtualbox)
[ROS基础-2] Ubuntu系统基本操作与基本命令讲解
[ROS基础-3] ROS系统安装与基本配置
[ROS基础-4] ROS系统框架
[ROS基础-5] Turtlesim和键盘控制节点实验
[ROS基础-6] 发布话题消息控制Turtlesim运动实验
[ROS基础-7] Launch文件编写启动多节点实验
文章目录
前言
目前我们启动节点的方式为挨个打开,如果节点较多,则需要打开众多的终端而导致操作困难,接下来我们来介绍一键启动多节点的方式——启动文件(Launch File)
一、launch启动文件基本元素
(1) launch
XML文件必须拥有一个根元素,<launch>
为launch文件的跟标签吗,其他内容必须包括在该标签之内
(2) node
启动ROS节点所采用的为<node>
标签,其语法如
<node pkg="package_name" type="executable_name" name="node_name" />
上述为启动一个节点的标准格式,需要有pkg
、type
、name
三个属性
pkg
:节点所在的功能包名称type
:节点执行文件的名称name
:节点运行的名称
除了上面三个常用的属性,node还有其他属性:
output="screen"
:在终端中打印该节点的标准输出respawn="true"
:复位属性,该节点停止时会重启,默认为falserequired=”true“
:必要属性,该节点终止后launch其他节点也会终止ns="namespace"
:命名空间,为节点内的相对名称添加命名空间前缀args="arguments"
:输入节点所需参数
(3) param
parameter是ROS系统运行中的参数,被储存在参数服务器之中。<param>
元素加载参数后,launch文件中的节点可以通过ros::param::get()
获取parameter的数值。
<param name="output_frame" value="odom" />
name
:参数名称value
:参数数值
(4) rosparam
系统中参数众多,挨个加载比较麻烦,所以衍生出rosparam
,该元素可以将一个YAML格式文件中的参数全部加载到参数服务器当中。
<rosparam file="${find haha}/config/haha.yaml" command="load" ns="local_costmap" />
file
:指定文件路径commad
:需要设置为load属性na
:命名空间
(5) arg
argument也是用于参数设置的元素,类似launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg_name" default="arg_value"/>
文件内的使用方法
<node pgk="haha" type="haha" name="haha" args="${arg arg_name}"/>
(6) remap
ROS提供了重映射机制以解决本地系统无法兼容别人的功能包的接口,大白话说就是别人的接口,重新取了个本地系统认识的名字以供系统识别。
<remap from="/other_haha" to="/haha" />
将话题/other_haha
重映射为/haha
供launch文件中的节点使用,但是其数据是一样的
(7) include
一个ROS系统中往往存在多个launch文件,且存在各自依赖的关系,为了减少开发量,ROS提供了嵌套复用,<include>
标签旨在导入其他launch文件到当前文件,语法和常用属性如下
<include file="$(find haha)/launch/haha.launch" ns="hah"/>
file ="$(find pkg-name)/path/filename.xml"
:导入的指定launch文件ns="NAME_SPACE"
:导入相对NAME_SPACE
命名空间
二、launch启动多节点控制小海龟
这边就以上一博客为基础编辑launch文件,首先是有键盘控制的例程,跟着上一节,在地址~/catkin_ws/src/leraning_topic/launch
,新建文件名为learning_launch
<launch>
<!--海龟仿真器-->
<node pkg="turtlesim" type="turtlesim_node" name="sim"/>
<!--键盘控制-->
<node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>
</launch>
保存之后打开终端执行
cd ~/catkin_ws
source devel/setup.bash
roslaunch learning_topic learning_launch.launch
执行之后就可以在打开一个终端的情况下控制海龟了。
总结
本节讲述了launch的构成、各个元素描述等,此外,以启动小海龟并实现控制为案例。
ROS学习并非一朝一夕可以完成,接下来我也会坚持发表关于ROS学习的笔记,如有哪里不对的,也可以请各位指正。
祝大家变得更强!