跳转至

launch文件

什么是roslaunch?

roslaunch是ROS提供的一个启动工具,它能够使得启动多个ROS节点的过程变得简单,同时也简化了ROS参数服务器进行参数设置的过程。roslaunch配置文件使用XML语言编写,文件以.launch为扩展名,放在package的launch文件夹下,最简单的launch文件可以仅包含几个节点。

roslaunch使用流程

  1. 在package下新建launch文件夹
  2. launch文件夹下编写,xxx.launch文件
  3. .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>