ROS学习笔记(十二):launch启动文件的使用方法

一、Launch文件语法

luanch文件:通过XML文件实现多节点的配置和启动(可启动ROS Master)

launch文件中的根元素采用launch标签定义

<launch>  #标签开头
    <node pkg="turtlesim" name="sim1" type="turtlesim_node"/>
    #启动节点,并将两个turtlesim_node节点分别命名成sim1和sim2
    <node pkg="turtlesim" name="sim2" type="turtlesim_node"/>
</launch>  #标签结束标志

更多标签参考wiki

一、<node>

  • pkg 节点所在功能包名称
  • type 节点可执行文件名称
  • name 节点运行时的名称
  • output 控制日志信息是否打印在屏幕上
  • respawn 重启突然停止运行的节点
  • required 表示必须要启动的是哪个节点
  • ns 即name space,给每个节点做一个命名空间,避免节点间冲突
  • args 类似于rosrun的功能

二、<param>/<rosparam>

<param>/<rosparam>用于设置ROS系统运行中的参数,存储在参数服务器中

param

<param name="output_frame" value="odom"/>
  • name:参数名
  • value:参数值

rosparam

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

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

三、<arg>

<arg>是launch文件内部的局部变量,仅限于launch文件使用,和param一样都是参数的意思

<arg name="arg-name" default="arg-value">
  • name:参数名
  • value:参数值

调用方式

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

四、重映射<remap>

重映射ROS计算图资源的命名(节点名)

<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>
  • from:原命名
  • to:映射之后的命名

五、嵌套<include>

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

<include file="$(dirname)/other.launch"/>
  • file:包含的其他launch文件路径

二、launch文件使用示例

(一)、param的launch实现

  1. $ cd ~/catkin_ws/src 要进入src文件夹才能创建功能包

  2. $ catkin_create_pkg learning_launch launch功能包不需要依赖

  3. $ cd learning_launch

  4. $ mkdir launch 用于存放和管理功能包的其他资源,也可以叫其他名字

  5. $ mkdir config 用于存放yaml文件,下面要用

在launch文件夹下创建simple.launch
输入

<launch>
    <node pkg="learning_topic" type="person_subscriber" name="listener" output="screen" />
    <node pkg="learning_topic" type="person_publisher" name="talker" output="screen" /> 
</launch>

在config文件夹下创建param.yaml
输入

A: 123
B: "hello"

group:
  C: 456
  D: "hello"

注意A,B冒号后面有空格,不然会报错

  1. $ catkin_make

  2. $ roslaunch learning_launch simple.launch 启动launch文件

在launch文件夹下创建turtlesim_parameter_config.launch
输入

<launch>

	<param name="/turtle_number"   value="2"/>  #这种写法是写到外面,即turtle_number名称直接就是turtle_number

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
		<param name="turtle_name1"   value="Tom"/>  #这种写法是写到里面,即turtle_name1名称会包含前缀turtlesim_node(就是下面的rosparam list之后会显示的内容)
		<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>
  1. $ roslaunch learning_launch simple.launch 启动launch文件

  2. $ roslaunch learning_launch turtlesim_parameter_config.launch 启动launch文件

  3. $ rosparam list 新开终端,查看运行的节点数

  4. $ rosparam get /turtle_number 回车后,终端显示2

(二)、tf坐标变换的launch实现

在launch文件夹下创建start_tf_demo_c++.launch
输入

 <launch>

    <!-- Turtlesim Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>

    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle1" name="turtle1_tf_broadcaster" />
    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle2" name="turtle2_tf_broadcaster" />

    <node pkg="learning_tf" type="turtle_tf_listener" name="listener" />

  </launch>
  1. $ roslaunch learning_launch start_tf_demo_c++.launch

(三)、remap的launch实现

在launch文件夹下创建turtlesim_remap.launch
输入

<launch>

	<include file="$(find learning_launch)/launch/simple.launch" />

    <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
		<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
	</node>

</launch>
  1. $ rostopic list 新开终端,节点名/turtle1/cmd_vel被修改为/cmd_vel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值