ROS入门21讲笔记(十一)编写并使用launch启动文件

launch文件:通过XML文件实现多节点配置和启动
在这里插入图片描述

一、launch文件语法

launch文件的根节点采用<launch>标签定义,节点采用<node>标签定义

<node>标签用于启动节点<node pkg="package-name" type="executeble-name" name="node-name" />

  • pkg:节点所在的功能包名称
  • type:节点的可执行文件名称
  • name:节点运行时名称
  • output:运行信息输出位置,如输出至屏幕:output="screen"
  • respawn required ns args

<param>:标签用于启动运行中的参数:<param name="output_frame" value="odom"/>

  • name 参数名
  • value参数值

<rosparam>加载参数文件中的多个参数,存放在参数服务器中:<rosparam file="params.yaml" command="load" ns="params"/>

<arg> launch文件内部的局部变量,仅限于launch文件使用<arg name>="arg-name" default="arg-value/>"

  • name:参数名
  • value:参数值
    调用:
  • <param name="foo" value="$(arg arg-name)" />
  • <node name="node" pkg="package" type="type" args=$(arg arg-name)"/>

<ramap> 重映射ROS计算图资源的命名。<remap from "turtlebot/cmd_vel" to="/cmd_vel"/>

  • from +待映射的名称
  • to +映射后的名称

<include>包含其他launch文件。<include file="$(dirname)/other.launch"/>

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

更多标签可以参考官方文档:http://wiki.ros.org/roslaunch/XML
如:

<launch>
	<node pkg="turtlesim" name="sim1" type="turtlesim_node"/>
	<node pkg="turtlesim" name="sim2" type="turtlesim_node"/>
</launch>

二、例子

先创建一个功能包:catkin_create_pkg learning_launch

├── CMakeLists.txt
└── package.xml

0 directories, 2 files

在功能包里创建一个名为launch的文件夹,方便管理这些launch文件。

2.1 运行发布者和接受者

在launch文件夹下创建一个名为simple.launch的文件,内容如下:

<launch>
	<node pkg="selfmsg" type="pub" name="talker" output="screen"/> 
	<node pkg="selfmsg" type="sub" name="listener" output="screen"/> 
</launch>

返回工作空间根目录,然后编译它catkin_make(其实没有编译过程,似乎是让ros知道这个launch文件的存在)
在这里插入图片描述
运行ok!再也不用开启两个终端了!对了rosmaster也会自动帮你运行,无需自己键入roscore

2.2 启动模拟乌龟!

新建一个名为turtlesim_parameter_config.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>
  • <rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>$(find learning_launch)是让ROS查找名为learning_launch的功能包路径,在这个路径下的config文件夹中的para.yaml。

新建一个文件夹名字config,然后往param.yaml中写入(C前面是两个空格):

A: 123
B: "Hello"

group:
  C: 456
  D: "789"

运行roslaunch learning_launch turtlesim_parameter_config.launch,一切顺利:
在这里插入图片描述
查看一下参数有没有设置、加载成功,rosparam list

/rosdistro
/roslaunch/uris/host_room__42341
/rosversion
/run_id
/turtle_number
/turtlesim_node/A
/turtlesim_node/B
/turtlesim_node/background_b
/turtlesim_node/background_g
/turtlesim_node/background_r
/turtlesim_node/group/C
/turtlesim_node/group/D
/turtlesim_node/turtle_name1
/turtlesim_node/turtle_name2

查看/turtle_number的变量值:rosparam get /turtle_number

2.3 启动一个复杂的应用

新建一个文件名为:start_tf_demo_c++.launch的launch文件,其内容如下:

<launch>
  <!-- Turtlesim Node -->
  <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
  <node pkg="turtlesim" type="turtle_teleop_key" name="telep" output="screen"/>
  
  <node pkg="tfbroadcast_test" type="broadcast" args="/turtle1" name="turtle1_tf_broadcaster"/>
  <node pkg="tfbroadcast_test" type="broadcast" args="/turtle2" name="turtle2_tf_broadcaster"/>
  
  <node pkg="tfbroadcast_test" type="tf_listerner" name="listener"/>
  
</launch>

在这里插入图片描述
上一讲启动的时候相当复杂,启动了非常多的终端,本节以后我们可以通过编写launch来启动它:
roslaunch learning_launch start_tf_demo_c++.launch

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值