文章目录
launch文件
launch文件的作用
launch文件可以用来同时启动多个节点。其基本思想是在一个XML格式的文件内将需要同时启动的一组节点罗列出来。
launch文件的基本组成
假设有如下 launch 文件:
<launch>
<!-- Start tilt joint controller -->
<rosparam file="$(find my_dynamixel_tutorial)/tilt.yaml" command="load"/>
<node name="controller_spawner" pkg="dynamixel_controllers" type="controller_spawner.py"
args="--manager=dxl_manager
--port dxl_USB0
joint3_controller
joint4_controller
joint5_controller
"
output="screen"/>
<!-- Start joints trajectory controller controller -->
<rosparam file="$(find my_dynamixel_tutorial)/joints_trajectory_controller.yaml" command="load"/>
<node name="controller_spawner_meta" pkg="dynamixel_controllers" type="controller_spawner.py"
args="--manager=dxl_manager
--type=meta
f_arm_controller
joint3_controller
joint4_controller
joint5_controller
"
output="screen"/>
</launch>
上述 launch 文件中包含两个节点,每个节点包含很多属性参数,下面一一说明:
rosparam:一次性将多个参数加载到参数服务器中. 我们将需要设置的参数放到
.yaml
文件中。
必备的节点属性
-
pkg: 表示该节点的package,相当于
rosrun
命令后面的第一个参数; -
type: 可执行文件的名字,
rosrun
命令的第二个参数;是否可以理解为要执行的节点 -
name: 该节点的名字,相当于代码中
ros::init()
中设置的信息,有了它代码中的名称会被覆盖。
其他属性
- output: 将标准输出显示在屏幕上而不是记录在日志中;
-
respawn: 请求复位,当该属性的值为
respawn="true"
时,roslaunch
会在该节点崩溃时重新启动该节点; -
required: 必要节点,当该值为
required="true"
时,roslaunch
会在该节点终止时终止其他活跃节点; -
启动前缀: 在启动命令加上前缀。例如当其设置为
launch-prefix="xterm -e"
时,效果类似于xterm -e rosrun X X
。也就是为该节点保留独立的终端; - ns: 在命名空间中启动节点;
-
重映射: 使用方法
remap from="original-name(turtle/pose)"to"new-name(tim)"
; -
包含其他文件include file=“path to launch file”: 在启动文件中包含其他启动文件的内容(包括所有的节点和参数),可使用如下命令使路径更为简单
include file="($find package-name)/launch-file-name"
; -
启动参数(launch arguments): 为了使启动文件便于配置,roslaunch 还支持启动参数,有时也简称为参数甚至
args
,其功能有点像可执行程序中的局部变量。 声明参数:arg name="arg-name"
, 然而这样的声明并不是必须的(除非你想要给它赋值或设置为默认值),但是这是一个好的做法,因为这样能使读者比较清楚启动文件需要哪些参数。
参数赋值:
roslaunch package-name launch-file-name arg-name:=arg-value
<arg name=”arg-name” default=”arg-value”/>
<arg name=”arg-name” value=”arg-value”/>
获取参数:一旦参数值被声明并且被赋值,你就可以利用下面的 arg 替换(arg substitution)语法来使用该参数值了:$(arg arg-name)
每个该替换出现的地方,roslaunch
都将它替换成参数值。