Launch文件:通过XML文件实现多节点的配置和启动(可自动启动ROS Master)
- node标签
任何一个launch文件的重点都是:节点(node)元素的集合。启动的每一个节点(node)都要有自己独一无二的名字(name)。如果node(节点)元素有children,就需要显式标签来定义,children比如是:remap 元素或者 param 元素。
显式关闭标签的形式:
pkg 和 type 它们分别是:程序包名字和可执行文件的名字。 ros::init() 函数 提供的 name 信息将会全面的覆盖命名信息(launch文件中node标签里面的name 属性)
拓展属性:
- output = “screen”
Q: 如何将标准输出信息显示在终端(console)上?
A: 在 node 元素中使用 output 属性:
output=”screen” - respawn=”true”
启动完所有请求启动的节点之后,roslaunch 监测每一个节点,让它们保持正常的运行状态。对于每一个节点,当它终止时,我们可以要求 roslaunch 重新启动它. - required=”true”
当一个必需的节点终止时,roslaunch会做出响应,终止其他所有的节点并退出它自己。
注意: 由于 required 属性和 respawn 属性的含义相反,所以不能给一个节点同时设置这两个属性。 - launch-prefix = “command-prefix”
roslaunch 命令 的一个潜在的缺点:相比我们原来对每个节点在单独的终端使用 rosrun 命令启动的做法,roslaunch 则是让所有的节点共享同一个终端。 那些只需要生产简单的日志消息文件而不需要终端(console)输入的节点是容易管理的,而那些依赖终端输入的节点,比如 turtle_teleop_key 节点,它可能要优先的保留在独立的终端上。
在例子launch文件中,我们给 teleoperation 节点使用了这个属性:launch-prefix=”xterm -e”.因为这个属性,启动这个 node 元素的 rosrun 命令大致相当于:xterm -e rosrun turtlesim turtle_teleop_key.
xterm 命令会开一个新的终端窗口。 -e 参数告诉 xterm :执行其命令行剩余部分(rosrun turtlesim turtle_teleop_key)。 - ns = “namespace”
在例子launch文件中,使用这个属性创建了两个无关的 turtlesim 模拟器。
turtlesim 话题名字(turtle1/cmd_vel、turtle1/color_sensor 和 turtle1/pose )被从全局命名空间移动 到 /sim1 和 /sim2 的单独命名空间里。 - args属性
传递参数到节点. 个人理解,arg参数只在launch文件中合法(相当于局部变量),不直接传给节点,所以需 要通过node中的args属性进行传递.