浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例(详细讲解)--Ros入门21讲-第19讲笔记(持续更新)

浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例

首先附上古月居老师的教程地址:古月居
古月居老师《Ros入门21讲》的全部代码在资源链接中分享给大家共同学习

1.turtlesim_parameter_config.launch(对应《Ros入门21讲》第16讲有关内容

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

实现功能:

  1. 设置名为"/turtle_number"的参数,赋值为2,将参数名与参数值以一个字典值的形式存入Ros的参数服务器中;
  2. 启动Ros中的"小乌龟"turtlesim_node节点,在节点运行后设置两个参数并赋值;
  3. 利用rosparam标签加载参数文件param.yaml中的所有参数并上传到参数服务器;
  4. 启动小海龟的键盘控制节点用于控制其运动。

附说明:
1.param.yaml参数文件内容(可直接在功能包内新建config/param.yaml复制使用),其中,A、B参数无命名空间,C、D设置在命名空间group中,用以避免资源冲突:

A: 123
B: "hello"

group:
  C: 456
  D: "hello"

2.通过launch文件存入参数服务器中的参数,可运行以下命令全部显示出来。

rosparam list

可以通过以下命令输出参数值:

rosparam get + 参数名称

3.在node标签内外使用param标签定义参数的不同之处在于参数前是否会带加上节点名的前缀,如下图中的turtle_name1(标签内默认加上)和turtle_number(标签外无前缀),类似命名空间的实现效果。
浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例(详细讲解)--Ros入门21讲-第19讲笔记(持续更新)_第1张图片

4.执行效果:
浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例(详细讲解)--Ros入门21讲-第19讲笔记(持续更新)_第2张图片浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例(详细讲解)--Ros入门21讲-第19讲笔记(持续更新)_第3张图片

2.turtlesim_parameter_config.launch(对应《Ros入门21讲》第18讲有关内容)

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

实现功能:
记得在第18讲中,古月居老师利用一个简单的小乌龟跟随移动案例,来介绍在Ros中常用的坐标变换及坐标变换tf功能包的编程和使用方法,相信学过这部分案例的同学都记得当时为了运行相关代码,实现海龟跟踪的效果,打开了5个独立的Terminal才实现相关功能,而在下面的介绍中,仅使用一个launch文件即可实现全部步骤流程。
该launch文件实现了以下功能:

  1. 启动海龟仿真器;
  2. 启动海龟仿真器的键盘控制节点;
  3. 运行learning_tf功能包下的两个广播器turtle1_tf_broadcaster和turtle2_tf_broadcaster(args:为程序主函数输入的参数);
  4. 运行learning_tf功能包下的监听器listener。

执行效果:
浅谈Ros中使用launch启动文件的方法(三):更多launch文件示例(详细讲解)--Ros入门21讲-第19讲笔记(持续更新)_第4张图片

2.turtlesim_remap.launch(remap重映射操作)

<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. 利用include标签导入另一个launch文件(在上一个文章中有simple.launch文件介绍)
  2. 启动仿真器节点
  3. 将仿真器中代表海龟运行速度的参数/turtle1/cmd_vel去掉前缀重命名为/cmd_vel

你可能感兴趣的:(Ros学习)