ROSLaunch学习笔记

运行launch文件

打开终端输入

roslaunch package_name launch_file_name

以官网turtle为例分析:

<launch>

  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>

</launch>

roswiki中运行了两个node
roslaunch 可以运行两个及以上的node,而且launch文件里每个node中变量name可重置rosinit中名称。而rosrun只能运行一个node。


(1) launch文件一般以.launch后缀作为文件名,放在package的launch文件夹下。最简单的launch文件可以仅包含几个nodes。

(2) Launch文件是XML文件,每个XML文件必须有一个root element。而launch文件的root element由一对launch 标签定义。

<launch>

..........

</launch>

(3) launch文件的核心是一系列node elements,每个node element启动一个node。Node element看起来如下

<node

  pkg=”package_name” type=”executable_name” name=”node_name”

/>

#Tip1: 最后的“/”是必不可少的。

#Tip2: 也可以写成<node pkg=”..” type=”...” name=”...”></node>

#如果该node中有其他tags,则必须使用这种形式。

(4) 一个node element包含三个必须的属性:pkg, type, name.

  pkg和type属性指出ROS应该运行哪个pkg中的哪个node,注意:此处的type是可执行文件的名称,而name则是可以任意给出的,它覆盖了原有文件中ros::init指定的node name。

(5) node日志文件(log file)

  运行roslaunch和rosrun运行单个节点的区别之一是,默认情况下,roslaunch运行的nodes的标准输出会重定向到log file,而不是控制台
(6) 输出到控制台
  用output属性, output=”screen”;这种方法仅显示一个node。若显示所有nodes的输出,用–screen命令行。

roslaunch --screen package_name launch_file_name

如果正在运行的文件没有显示想要对输出,可以查看该node属性集中是否有 output=”screen”.

(7) 在独立的窗口运行各node
  我们在各自的termin运行rosrun node_name;但是运行roslaunch时,所有的nodes共用一个相同的terminal,这对于那些需要从控制台输入的nodes很不方便。可以使用launch-prefix属性。
  xterm 命令表示新建一个terminal; -e参数告诉xterm执行剩下的命令行。
  当然,launch-prefix属性不仅仅限于xterm。它可用于调试(通过gdb或valgrind),或用于降低进程的执行顺序(通过nice).

猜你喜欢

转载自blog.csdn.net/u013721521/article/details/77851846
今日推荐