.launch文件分析
来源:互联网 发布:同城送花 知乎 编辑:程序博客网 时间:2024/06/07 05:56
在我们的功能包中可以看到launch文件夹下有很多的.launch文件,这些文件写入了我们想要同时运行的节点,当我们需要有很多节点同时启动时,一个个启动它们会费时费力,这时我们可以写一个.launch文件把这些节点都包括进去,这样可以通过roslaunch命令来把这些节点都启动了。
到这里假设我们都已经知道怎样使用roslaunch命令了,这次重先简单介绍一下.launch文件的结构,然后重点说一下.launch文件中的重映射(remap)。
1 .launch文件的结构
<launch>
<node name="talker"pkg="rospy_tutorials" type="talker" >
</node>
</launch>
上面是.launch文件的最小例子。.launch文件开头是以<launch>为标签,让我们知道这是一个.launch文件,以</launch>为结尾。而中间就是写自己要启动的节点,是以<node> 开始,</node>结束,其中pkg="rospy_tutorials",这是自己要启动的节点所在的包;type="talker",这是自己写的节点.cpp程序通过编译生产的可执行文件的名字,你最初编译.cpp程序的时候要在CMakeLists.txt添加cpp程序编译的设置,这个可执行文件的名字在CMakeLists.txt中就可以找到;name="talker",这是节点的名字。
2.Roslaunch /XML/remap
1.元素
<node> 启动一个节点.
<param> 设置参数服务器上的参数
<remap> 声明一个名称的映射,允许你通过名称映射参数到ROS节点(通过更结构化的方式而不是直接设置节点参数属性来启动的节点)。
<machine> 声明启动要使用的机器.
<rosparam> 使用rosparam文件设置启动要用的ROS参数
<include> 包含roslaunch文件.
<env> 制定启动节点的环境变量
<test> 启动一个测试节点see rostest).
<arg> 声明参数
<group> 共享一个命名空间或映射的封闭的元素组。
2 .launch文件的重映射(remap)
据我理解,重映射就是甲节点得到相关的信息,通过重映射使乙节点得到甲节点一样的信息,从而使得乙节点模仿甲节点做出相应的响应。
<remap>标签适用于在其范围内随后的所有声明(<launch>, <node> or<group>)。
准备工作
需要用到rqt和tuetlesim这两个包.如果没有安装,请执行:
$ sudo apt-get install ros-hydro-rqtros-hydro-rqt-common-plugins ros-hydro-turtlesim
我的ros版本是hydro版本,如果不是hydro,则自行替换。
例子
首先自己在turtlesim/launch文件夹下建一个.launch文件,名字自己取,如multi_node.launch的文件,粘贴如下内容:
<launch>
<group ns="turtlesim1">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<node pkg="turtlesim" name="turtle_mimic"type="mimic">
<remap from="input"to="turtlesim1/turtle1"/>
<remap from="output"to="turtlesim2/turtle1"/>
</node>
</launch>
属性
from="original-name" 你正映射的名称
to="new-name" 目标名称
你可以结合着turtlesim包中的mimic.cpp程序看上面的代码。用roslaunch运行上面刚写的launch文件,会出现turtlesim2模仿turtlesim1的动作。打开终端(ctrl+alt+T),输入下面命令(如果你有多个工作空间,请先source一下turtlesim所在的工作空间):
$source ~/ros_tutorial/devel/setup.bash
$roslaunch turtlesim multi_node.launch
新打开一个终端,输入:
$rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
再新打开一个终端,再输入:
$rqt_graph
出现如下结果:
如果想再映射一个小乌龟(或更多乌龟),可以在上面的.launch文件中的内容改为如下内容,通过对比,就可以知道,如何再添加一只小乌龟:
<launch>
<group ns="turtlesim1">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<node pkg="turtlesim"name="sim" type="turtlesim_node"/>
</group>
<groupns="turtlesim3">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<node pkg="turtlesim" name="turtle_mimic"type="mimic">
<remap from="input"to="turtlesim1/turtle1"/>
<remap from="output"to="turtlesim2/turtle1"/>
</node>
<node pkg="turtlesim" name="turtle_mimic1"type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output"to="turtlesim3/turtle1"/>
</node>
</launch>
(改完.launch文件,如果有多个工作空间,记得source一下turtlesim所在的工作空间,再运行上面的命令)
运行结果如下:
更多有关Roslaunch /XML/,请看ros官网 :http://wiki.ros.org/roslaunch/XML
- .launch文件分析
- .launch文件分析
- Launch 文件
- Launch 文件
- ros源码分析(7)—roslaunch .launch 文件
- ros源码分析(8)—roslaunch .launch文件中的tag
- WINCE Launch函数分析
- ROS之launch分析
- Eclipses中的launch文件
- launch文件remap标签
- ROS的launch文件
- ros中launch文件
- ros.launch 文件学习
- 【ROS】launch启动文件
- launch 文件解析
- launch 文件解析
- Launch文件的学习:
- launch文件基础
- C语言socket设置超时/setsockopt函数
- 常用软件的安装(windows/linux)
- computed 属性计算
- 第一、二、三章笔记
- 希尔排序
- .launch文件分析
- 容器的一些基础知识
- Subset sequence
- bootstrap 表格
- js+JQuery实现返回顶部功能
- 文章标题
- 漫步数学分析十九——介值定理
- 【ERROR】bash: vim: command not found 的解决
- rtx 64 3.0