launch文件
什么是roslaunch?¶
roslaunch是ROS提供的一个启动工具,它能够使得启动多个ROS节点的过程变得简单,同时也简化了ROS参数服务器进行参数设置的过程。roslaunch配置文件使用XML语言编写,文件以.launch为扩展名,放在package的launch文件夹下,最简单的launch文件可以仅包含几个节点。
roslaunch使用流程¶
- 在package下新建
launch
文件夹 - 在
launch文件夹
下编写,xxx.launch
文件 - 在
.launch
文件中编写启动配置
编写launch文件¶
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"></node>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key"></node>
</launch>
node标签
- pkg:要启动的 package名称。
- type:可执行文件名称
- name:可执行文件启动后节点名称
- respawn:进程死掉后是否重启。取值为true或false。默认值为false
- respawn_delay: 重启的时间间隔。单位为秒,默认值为0
- output:将日志输入到什么位置。screen|log。默认值log。
- ns: 名称空间
remap子标签
<remap from="/hi" to="/hello"></remap>
可以将topic名称进行映射。
如果作用在Publisher节点下,意思是将topic名称
为/hi
的变为/hello
。
如果作用在Subscriber节点下,意思是将topic名称
为/hello
的变为/hi
。
param配置¶
内置param¶
<?xml version="1.0" encoding="utf-8" ?>
<launch>
<node pkg="config_pkg"
type="my_args"
name="my_args"
respawn="true"
respawn_delay="2"
output="screen"
ns="hi"
args="arg1 arg2 arg3">
<node pkg="turtlesim"
type="turtlesim_node"
name="turtlesim_node">
<param name="key1" type="str" value="hello"></param>
<param name="key2" type="int" value="1"></param>
<param name="key3" type="double" value="3.14"></param>
<param name="key4" type="bool" value="true"></param>
</node>
</launch>
外置param¶
<?xml version="1.0" encoding="utf-8" ?>
<launch>
<param name="key1" type="str" value="hello"></param>
<param name="key2" type="int" value="1"></param>
<param name="key3" type="double" value="3.14"></param>
<param name="key4" type="bool" value="true"></param>
<node pkg="config_pkg"
type="my_args"
name="my_args"
respawn="true"
respawn_delay="2"
output="screen"
ns="hi">
</node>
</launch>
arg参数¶
<?xml version="1.0" encoding="utf-8" ?>
<launch>
<arg name="hi"></arg>
<param name="key1" type="str" value="$(arg hi)"></param>
<node pkg="config_pkg"
type="my_args"
name="my_args"
respawn="true"
respawn_delay="2"
output="screen"
ns="hi">
</node>
</launch>
启动launch文件需要传递参数
roslaunch demo_launch demo03.launch hi:="hello"
launch文件包含¶
demo01.launch
文件
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"></node>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key"></node>
</launch>
包含
demo01.launch
文件
<launch>
<include file="$(find demo_launch)/launch/demo01.launch"></include>
<node pkg="rviz" type="rviz" name="rviz"></node>
</launch>