ROS理解roslaunch命令

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 1 -- ‘[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也做出了反应。

时间: 2024-10-26 22:18:50

ROS理解roslaunch命令的相关文章

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

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用.本章节主要内容: 1.ROS是什么 2.ROS系统整体架构 3.在ubuntu16.04中安装ROS kinetic 4.如何编写ROS的第一个程序hello_world 5.编写简单的消息发布器和订阅器 6.编写简单的s

彻底理解grep命令

彻底理解grep命令叶无风0人评论118人阅读2019-03-18 10:28:30彻底理解grep命令1.1 grep命令简介grep (global search regular expression(RE) and print out the line,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行. 1.2 grep工作过程grep命令将逐行读入文件内容至模式空间,按照给定的pattern进行匹配. 如果该行内容能够被指定的pattern匹配,

ROS 新手教程 命令汇总

查看环境变量的配置: [email protected]:~$ export | grep ROS declare -x ROSLISP_PACKAGE_DIRECTORIES=""declare -x ROS_DISTRO="kinetic"declare -x ROS_ETC_DIR="/opt/ros/kinetic/etc/ros"declare -x ROS_MASTER_URI="http://localhost:11311

2.换一种方式理解linux命令行

? 前戏: 命令行是否真的这么高深莫测么?难以理解?? ? 正文 1.首先以root(linux中的administrator用户): 点击other 2."root's home":我的文档 "computer" 3.Windows 安装Xshell 5 4.扫盲命令: Ifconfig: 查看ip地址 ,eth0表示默认网卡 ? ? ls : 很类似于windows中的dir,它后面 有参数, 譬如ls -l,列出文件的详细信息,如创建者,创建时间,文件的读写权

我所不理解的命令,求指点

hist(w)   ?  是绘制函数吗? save hello v; save hello.txt v -ascii; load hello.dat load hello.txt   以上一组代码没能实现? log(v) ?  可以理解是取对数吗? exp(v)   ? find(a < 3)  ? A = magic(3) ? [r,c] = find(A>=7) ? prod(a)   ?可以理解是取最大值吗?   val = max(a) 实现的不是最大值的功能吗? 两者的不同? flo

ros中的命令工具

参考:<ros机器人程序设计> 1.功能包   2.rosnode工具  3.rostopic工具 4.rosservice工具  5.rosmsg工具  6.rosparam工具 原文地址:https://www.cnblogs.com/hiram-zhang/p/8503535.html

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

https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7 我们在用maven构建java项目时,最常用的打包命令有mvn package.mvn install.deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命令还是有区别的.下面通过分别执行这三个命令的输出结果,来分析各自所执行的maven的生命周期. mvn clean package mvn clean inst

ros routeros 脚本命令script

原文: https://blog.51cto.com/cmdschool/1701302 最近要写一个routeros的script,但对其语法十窍九通,故而整理此文,以作参阅. 同时也发扬一下共享的精神,整理后的文稿就放出来供各博友参阅,有不对的地方欢迎指正. 1.命令行使用 1.1.命令行语法 [prefix] [path] command [uparam] [param=[value]] .. [param=[value]] [prefix] - 前缀,以"."或"/&

由浅到深理解ROS(1)

ROS机器人操作系统 ( Robot Operating System 或简称 ROS),可以帮助提高机器人软件的开发效率.ROS能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能实现.进程间消息传递和程序包管理等.此外,它还提供相关工具和库,用于获取.编译.编辑代码以及在多个计算机之间运行程序完成分布式计算.结合笔者对ROS的理解,想与大家一起讨论,共同把ROS理解的更准确,一起进步. 对ROS的误解: 1.ROS不是一种编程语言.实际上,ROS的主要代码由C++语言编写,