ROS基础 -launch文件的学习

<launch>
   <param name="/turtle_number"   value="2"/>
   <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
		<param name="turtle_name1"   value="Tom"/>
		<param name="turtle_name2"   value="Jerry"/>
		<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>
   </node>
   <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>
</launch>
其中param.yaml文件中的内容为:
A: 123
B: "hello"
group:
  C: 456
  D: "hello"

1:启动节点
<node pkg="package-name" type="executable-name" name="node-name"  output = “screen”/>
• pkg:节点所在的功能包名称
• type:节点的可执行文件名称
• name:节点运行时的名称

•output = “screen”:标准输出信息显示在终端(console)上

 • respawn=”true” :要求重生(request respawning)

开启所有nodes后,roslaunch会监视每个node,记录那些仍然活动的nodes。对于每个node,当其终止后,我们可以要求roslaunch重启该node,通过使用respawn属性。

•required=”true”

当一个必需的节点终止时,roslaunch会做出响应,终止其他所有的节点并退出它自己。
注意: 由于 required 属性和 respawn 属性的含义,所以如果你给单个的一个节点同时设置了这2个属性,roslaunch 命令会抱怨。所以不要这样设置。

•ns = “namespace”
在例子launch文件中,使用这个属性创建了两个无关的 turtlesim 模拟器。

turtlesim 话题名字(turtle1/cmd_vel、turtle1/color_sensor 和 turtle1/pose )被从全局命名空间移动 到 /sim1 和 /sim2 的单独命名空间里。
 

2:设置ROS系统运行中的参数,存储在参数服务器中。

<param name="output_frame" value="odom"/>

• name:参数名
• value:参数值

3:加载参数文件中的多个参数:

<rosparam file="params.yaml" command="load" ns=“params"/>

4:launch文件内部的局部变量,仅限于launch文件使用

情况一:

<arg name="arg-name" default="arg-value" />//arg_value可以被改变,如不赋值取默认值
<arg name="foo" value="bar" /> //声明为常量,不能改变

• name:参数名
• value:参数值
调用:

<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type " args="$(arg arg-name)" />

情况二:

<arg name="arg-name" />

在命令行中你可以这样做:给 roslaunch 提供一个 value :
roslaunch package-name launch-file-name arg-name:=arg-value

arg标签用来在launch文件中定义参数,arg和param在ROS里有根本性的区别,就像局部变量和全局变量的区别一样。arg不储存在参数服务器中,不能提供给节点使用,只能在launch文件中使用。param则是储存在参数服务器中,可以被节点使用。

5:重映射ROS计算图资源的命名。

<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>

• from:原命名
• to:映射之后的命名

6:包含其他launch文件,类似C语言中的头文件包含。

<include file="$(dirname)/other.launch" />

•file:包含的其他launch文件路径

执行后结果:

可以看到在turtlesim中的param加了turtlesim_node前缀

添加Python产生的节点,直接添加可执行的脚本

7:group

group 标签可以方便的将一组配置应用到组内的所有节点,它也具有命名空间 ns 特点,可以将不同的节点放入不同的 namespace。

<group ns="namespace">
    <node pkg="pkg_name1" .../>
    <node pkg="pkg_name2" .../>
    ...
</group>

配合 if 和 unless 使用:

  • if=value:value 为 true 则包含内部信息
  • unless=value:value 为 false 则包含内部信息
<group if="$(arg foo1)">
    <node pkg="pkg_name1" .../>
</group>

<group unless="$(arg foo2)">
    <node pkg="pkg_name2" .../>
</group>
  • 当 foo1 == true 时包含其标签内部
  • 当 foo2 == false 时包含其标签内部
<group ns="turtlesim1">     //两个节点分组并以’命名空间(namespace)’标签来区分
      <node pkg="turtlesim" name="sim" type="turtlesim_node"/>   
//pkg 和 type 它们分别是:程序包名字和可执行文件的名字;ros::init()函数提供的 name 信息将会全面的覆盖命名信息(launch文件中node标签里面的name 属性)
        </group>
<group ns="turtlesim2">
      <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
        </group>
ns = “namespace” :turtlesim 话题名字(turtle1/cmd_vel、turtle1/color_sensor 和 turtle1/pose )被从全局命名空间移动 到 /sim1 和 /sim2 的单独命名空间里。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值