roslaunch命令从launch文件中启动一个节点,它的使用方法如下:

roslaunch [package] [filename.launch]

首先切换到beginner_tutorials文件下:

roscd beginner_tutorials
提示:
If roscd says similar to roscd: No such package/stack 'beginner_tutorials'.
you will need to source the environment setup file like you did at the end of the create_a_workspace tutorial: $ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials

创建launch文件夹,切换到该文件夹下:

mkdir launch
cd launch

注意:launch文件是在相应的包文件里面的.

然后在这个文件夹下新建一个launch文件,命名为turtlemimic.launch,并把下面的内容复制进去.

新建文件,输入:

gedit turtlemimic.launch

复制的文件内容:

<launch>

  <group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node> </launch>

保存退出就可以了。

现在使用如下命令载入:

roslaunch beginner_tutorials turtlemimic.launch

这时就能看到两只小乌龟,但是这时用rosnode list查询,能看到新增三个节点。/mimic,/turtlesim1/sim,/turtlesim2/sim.

在一个新打开的终端中输入:

rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r  -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

就可以看到两只乌龟都在转圈。

下面来解释一下原因,分析一下刚才的那个launch文件:

<lanuch>标签用来识别这是一个launch文件。

<group ns="turtlesim1">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group> <group ns="turtlesim2">
<node pkg="turtlesim" name="sim" type="turtlesim_node"/>
</group>

上面的代码表示我们启动了两个乌龟节点,他们的名字都是sim,但是他们在不同的命名空间中,所以不会有相同名字的冲突。

<node pkg="turtlesim" name="mimic" type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output" to="turtlesim2/turtle1"/>
</node>

上面的这些代码中我们启动了mimic节点,同时把这个节点的input和output话题重命名为turtle1和turtle2。

这时通过rosrun rqt_graph rqt_graph显示的信息是:

上面的这些内容使turtlesim2模仿turtlesim1。所以虽然我们只向turtlesim1发布了话题,turtlesim2也做出了反应。

ROS理解roslaunch命令的更多相关文章

  1. SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  2. ROS 新手教程 命令汇总

    ## 工作环境搭建 查看环境变量的配置: wangsan@wangsan-Y50:~$ export | grep ROS declare -x ROSLISP_PACKAGE_DIRECTORIES ...

  3. 深入理解linux-free命令原理(2)

    linux free 命令用法说明 概述: 这篇文章比较深入的从free为起点  折射出的一些概念:比如  buff/cache是怎么一回事[涉及内存页等话题]:  available这个参数与fre ...

  4. (转)理解maven命令package、install、deploy的联系与区别

    我们在用maven构建java项目时,最常用的打包命令有mvn package.mvn install.deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命 ...

  5. 理解maven命令package、install、deploy的联系与区别

    我们在用maven构建java项目时,最常用的打包命令有mvn package.mvn install.deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命 ...

  6. flask数据库迁移理解及命令

    前言: 使用数据库迁移,可以直接建表,而不用我们自己写sql语句用来建表.就是将关系型数据库的一张张表转化成了Python的一个个类. 在开发中经常会遇到需要修改原来的数据库模型,修改之后更新数据库, ...

  7. 理解mvn命令

    mvn clean package依次执行了clean.resources.compile.testResources.testCompile.test.jar(打包)等7个阶段. mvn clean ...

  8. Ros学习——roslaunch

    roslaunch:启动定义在launch文件中的多个节点 1.launch文件解析 <launch> #以launch标签开头以表明这是一个launch文件 #两个节点分组并以'命名空间 ...

  9. ROS理解参数服务器param demo

    param 是一个字典,存储一些变量 param_demo.cpp #include<ros/ros.h> int main(int argc, char **argv){ ros::in ...

随机推荐

  1. WinEdt7.0 初试

    刚刚开始学的时候,安装就出了些问题(关于安装的问题,请看我之前的文章)不知道如何点击运行,编译.看了些博客论坛.终于成功了. 首先先写一个小代码: \documentclass[UTF8]{ctexa ...

  2. Java面试题之J2EE是什么

    J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application ...

  3. javascript高级知识点——闭包

    代码信息来自于http://ejohn.org/apps/learn/. 先给出一个权威的定义,函数对象可以通过作用域相互关联起来,函数体内的变量可以保存在函数的作用域内,这种特性称为闭包. 在闭包内 ...

  4. html系列教程--embed fieldset legend figure figurecaption

    <embed> 标签:定义嵌入的内容 <embed src="" type="" /> embed属性: 1.src:嵌入内容地址 2. ...

  5. 利用Gson进行String和对象的转换

    利用Gson进行String和对象的转换 /** * 从JsonStr中解析BUserBase * @param jsonStr * @return */ public static BUserBas ...

  6. OpenCV学习(1)OpenCV简介

    简介 OpenCV的全称是:Open Source Computer Vision Library,OpenCV是一个开源的跨平台的计算机视觉库,可以运行在Linux.Windows和Mac OS操作 ...

  7. PHP的接口类(interface)和抽象类(abstract)的区别

    <?php /** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么 ...

  8. 【Howie玩docker】-docker安装

    windows忽略,小苹果木有,所以咱只看ubuntu和centOS的吧! 参考书<Docker技术入门与实战> Ubuntu 14.04安装Docker Ubuntu 14.04版本官方 ...

  9. python显示当前时间

    import time time.strftime("%Y%m%d %X", time.localtime()) #当前时区 time.strftime("%Y%m%d ...

  10. linux----命令替换

    0.命令替换.它的大概意思是.命令在脚本中只起一个站位符的作用:在命令运行时它会被命令自己的执行结果所替换. 1.使用格式: 1.$(command) 2.`command` 2.使用举例: 1.:打 ...