launch启动文件的使用方法

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

功能

参数

描述

参数

设置

<launch>

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

<node>

启动节点

<node pkg="package-name" type="executable-name" name="node-name" />

• pkg:节点所在的功能包名称

• type:节点的可执行文件名称

• name:节点运行时的名称

• output respawn required ns args

<param> /

<rosparam>

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

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

• name:参数名

• value:参数值

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

<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)" />

重映射

<remap >

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

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

• from:原命名

• to:映射之后的命名

嵌套

<include>

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

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

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

新建一个功能包

cd ~/catkin_ws/src
catkin_create_pkg learning_launch

在leaning_launch下新建一个文件夹launch

可以放.launch文件了

①/home/yys/catkin_ws/src/learning_launch/launch/simple.launch

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

先编译一下工作空间

cd ~/catkin_ws
catkin_make

运行launch 

roslaunch learning_launch simple.launch 

 

②/home/yys/catkin_ws/src/learning_launch/launch/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>

 launch下新建config文件夹

/home/yys/catkin_ws/src/learning_launch/config/param.yaml

A: 123
B: "hello"

group:
  C: 456
  D: "hello"

运行命令 

roslaunch learning_launch turtlesim_parameter_config.launch 

查看参数

rosparam list

yys@yys:~$ rosparam list
/rosdistro
/roslaunch/uris/host_yys__43929
/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
获取节点个数

rosparam get /turtle_number

yys@yys:~$ rosparam get /turtle_number
2
命名空间gtoup下一级

 ③/home/yys/catkin_ws/src/learning_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>

命令启动

roslaunch learning_launch start_tf_demo_c++.launch

④/home/yys/catkin_ws/src/learning_launch/launch/start_tf_demo_py.launch

<launch>

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

	<node name="turtle1_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py">
	  <param name="turtle" type="string" value="turtle1" />
	</node>
	<node name="turtle2_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py">
	  <param name="turtle" type="string" value="turtle2" /> 
	</node>

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

</launch>
 

命令启动 

roslaunch learning_launch start_tf_demo_py.launch 

⑤/home/yys/catkin_ws/src/learning_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>

命令启动 

roslaunch learning_launch turtlesim_remap.launch 

process[turtlesim_node-4]: started with pid [64544]
[ INFO] [1599542192.290647792]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1599542193.291696642]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1599542193.292006177]: Subcribe Person Info: name:Tom  age:18  sex:1
[ INFO] [1599542194.290884332]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1599542194.291140664]: Subcribe Person Info: name:Tom  age:18  sex:1

输入下面命令,海龟会动,重命名原来资源不存在了

yys@yys:~$ rostopic pub /cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0" 


publishing and latching message. Press ctrl-C to terminate

 

树形图

yys@yys:~/catkin_ws/src/learning_launch$ tree
locales-launch: Data of zh_CN locale not found, generating, please wait...
.
├── CMakeLists.txt
├── config
│   └── param.yaml
├── launch
│   ├── simple.launch
│   ├── start_tf_demo_c++.launch
│   ├── start_tf_demo_py.launch
│   ├── turtlesim_parameter_config.launch
│   └── turtlesim_remap.launch
└── package.xml

2 directories, 8 files