ROS-launch启动文件的使用方法


launch启动文件的作用:避免你多次在linux的命令行进行输入,这样很麻烦,我们可以使用launch启动文件把这些命令行集成起来,这样我们只执行launch启动文件就可以了。
launch启动文件作用的官方语言:通过XML文件实现多节点的配置和启动(亦可自动启动ROS Master)

一、Launch文件语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、launch启动文件应用示例

首先我们需要创建一个learning_launch的一个功能包,如下图所示。创建完毕功能包之后需要我们在功能包下面建立一个叫launch的文件夹,以用来存放我们的.launch文件。
在这里插入图片描述

2.1应用示例

把古月的simple.launch拷贝到launch文件夹下面。
然后编译、执行simple.launch

catkin_make
source devel/setup.bash
roslaunch learning_launch simple.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>

2.2应用示例

这个示例的目的是:设置参数。
把古月的turtlesim_parameter_config.launch拷贝到launch文件夹下面,并且把
ROS入门21讲课件&源码\代码\learning_launch\config中的这个config文件夹拷贝到linux中的learning_launch文件夹下。
然后编译、执行simple.launch

catkin_make
source devel/setup.bash
roslaunch learning_launch turtlesim_parameter_config.launch

然后rosparam list查看查看参数,发现出现了/turtlesim_node/A,/turtlesim_node/group/C和/turtlesim_node/turtle_name1等参数
在这里插入图片描述
本例的config文件夹下的param.yaml内容如下:

A: 123
B: "hello"

group:
  C: 456
  D: "hello"

本例的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>

2.3应用示例

这个示例的目的是:两个海龟跟随的示例,即上一讲《tf坐标系广播与监听的编程实现》我们需要在命令行输入的命令太多了,如果用launch文件就会简便很多。
把start_tf_demo_c++.launch文件(注意,此文件对应着C++程序)拷贝到launch文件夹里,并执行:

roslaunch learning_launch start_tf_demo_c++.launch

start_tf_demo_c++.launch文件(C++版本)如下:

 <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>

start_tf_demo_py.launch(python版本)文件

<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>

2.4应用示例

本示例是基于示例一的simple.launch的。本示例的目的是给/turtle1/cmd_vel改名为/cmd_vel。
执行turtlesim_remap.launch文件:
在这里插入图片描述
验证/turtle1/cmd_vel已经改名为了/cmd_vel:
发现/cmd_vel启动用了,即小海龟向右移动了一点距离。
在这里插入图片描述

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>

猜你喜欢

转载自blog.csdn.net/weixin_45519751/article/details/112755009