================================================================ 1、roslaunch –v package-name launch-file-name 显示的是该选项生成的除基本状态信息之外的额外信息。 该信息可以用来观察roslaunch如何解释你的启动文件,有时在调试的时候会有所帮助。 2、<node pkg=”package-name” type=”executable-name” name=”node-name” /> (1)pkg 功能包名 (2)type 可执行文件名 (3)name 节点名称,它将覆盖任何通过调用ros::int来赋予节点的名称。 3、output=”screen” 在控制台中输出信息 对于某个单独的节点,只需在节点元素中配置output属性就可以达到该目的。 4、roslaunch –screen package-name launch-file-name 使用--screen命令行选项来令roslaunch在控制台中显示所有节点的输出: 5、respawn=”true” respawn属性为真,这样当节点停止的时候, roslaunch会重新启动该节点。 6、required=”true” 必要节点(requiring node) 复位之外的另一种策略是将一个节点声明为必要节点。 当一个必要节点终止的时候,roslaunch会终止所有其他活跃节点并退出。 7、roslaunch 与rosrun的区别: 为节点维护独立的窗口 使用roslaunch的一个缺点是所有的节点共享一个终端,而使用rosrun的时候,每个节点都有一个独立的终端。这对于不接收控制台输入,只生成日志消息的节点是可行的(通常也是有帮助的),但是对于依赖控制台输入的节点来说,例如turtle_teleop_key,更倾向于为节点保留独立的终端。 幸运的是,roslaunch提供了一个实现该目的的简洁方法——对节点元素使用启动前缀(launch-prefix)属性: Launch-prefix=“command-prefix” 事实上,roslaunch在启动节点时的内部工作原理是调用相应的命令行工具,即rosrun。启动前缀的主要思想是在其命令行前面添加给出的命令行前缀。在我们的例子中,遥操作节点使用了这个功能: launch-prefix=”xetrm-e” 在这个属性的作用下,节点元素和在命令行中输入下面的命令基本上是等价的: xterm –e rosrun turtlesim turtle_teleop_key 正如你所知,xterm命令将打开一个简单终端窗口。参数-e告诉xterm在新打开的终端中执行该命令行的剩余部分(这里是rosrun turtle_teleop_key),运行的结果是基于纯文本的程序turtle_teleop_key出现在一个图形窗口中。 8、并对其节点元素配置命名空间(ns)属性: ns=”namespace” /sim1和/sim2 9、名称重映射(Remapping names) 每个重映射包含一个原始名称和一个新名称。每当节点使用重映射中的原始名称时,ROS客户端库就会将它默默地替换成其对应的新名称。 10、通过启动文件的方式,只需在启动文件内使用重映射(remap)元素即可7: <remap from=”original-name”to ”new-name”/> 11、<include file=”path-to-launch-file”> 包含其他文件 (find)命令搜索功能包的位置来替代直接输入路径: <include file=”$(find package-name)/launch-file-name”> 12、启动参数(launch arguments) 声明一个参数,可以使用arg元素。<arg name=”agr-name”> 参数赋值: (1) roslaunch package-name launch-file-name arg-name:=arg-value (2)<arg name=”arg-name” default=”arg-value”/> (3)<arg name=”arg-name” value=”arg-value”/> value值是不能修改的 获取参数值: (1)$(arg arg-name) (2)向包括的启动文件中发送参数值 <incluce file=”path–to-launch-file”> <arg name=”arg-name” value=”arg-value”/> … </include> 在该例子中,第一个参数名字通常是指被包含文件中的参数,第二个参数名是指当前文件中的参数。这样做之后,给定参数在两个启动文件中有相同的值。 13、创建组(Creating groups) (1) 把若干个节点放入同一个命名空间内 <group ns=”namespace”/> … </group> (2)组可以有条件地使能或禁用一个节点。 <group if=”0 or 1”/> </group> 如果 if属性的值为1,则组元素标签内的元素被正常包含。反之,如果if属性的值为0,则标签内元素被忽略。还有一个unless属性的用法是相似的,只是意思相反。 <group unless=”1 or 0”/> … </group> |
|