1. 设置

(1) 运行roscore

(2) 在新的terminal运行turtlesim

$ rosrun turtlesim turtlesim_node

(3)  用键盘遥控turtle

$ rosrun turtlesim turtle_teleop_key

2. ROS Topics

2.1 turtle_teleop_key node 发布(publish) Topic,turtlesim_node node 订阅(subscribe) Topic,两者相互通信。

2.2 使用rqt_graph

    (1)rqt_graph是rqt package的一部分,创建系统运行的动态图(dynamic graph)。

    (2)rqt package的安装:

$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins

    (3)运行

$ rosrun rqt_graph rqt_graph

    (4)结果

    蓝色和绿色是Nodes,红色是Topic

2.3 介绍rostopic

    (1)通过rostopic可以得到有关ROS topics的有关信息

$ rostopic
bw    echo  find  hz    info  list  pub   type 

    (2)通过help查询子命令

$ rostopic -h  rostopic bw     display bandwidth used by topicrostopic echo   print messages to screenrostopic hz     display publishing rate of topic    rostopic list   print information about active topicsrostopic pub    publish data to topicrostopic type   print topic type

2.4 使用rostopic echo可以显示top发布的数据

$ rostopic echo /turtle1/cmd_vel

  若没看到东西说明没有数据发布,选中turtle_teleop_key的terminal,按键盘上的键盘键控制即可。

linear: x: 2.0y: 0.0z: 0.0
angular: x: 0.0y: 0.0z: 0.0
---
linear: x: 2.0y: 0.0z: 0.0
angular: x: 0.0y: 0.0z: 0.0
---

  此时再看rqt_graph,按左上角refresh键,这时会显示新的node

2.5 使用rostopic list 显示所有发布和被订阅的topics

  (1)查看需要什么argument

$ rostopic list -h

  (2)得到以下结果

Usage: rostopic list [/topic]Options:-h, --help            show this help message and exit-b BAGFILE, --bag=BAGFILElist topics in .bag file-v, --verbose         list full details about each topic-p                    list only publishers-s                    list only subscribers

   (3)如需要详细信息verbose,输入

$ rostopic list -v

   得到以下结果

Published topics:* /turtle1/color_sensor [turtlesim/Color] 1 publisher* /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher* /rosout [rosgraph_msgs/Log] 2 publishers* /rosout_agg [rosgraph_msgs/Log] 1 publisher* /turtle1/pose [turtlesim/Pose] 1 publisherSubscribed topics:* /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber* /rosout [rosgraph_msgs/Log] 1 subscriber

3. ROS Message

3.1 关于topic的节点间通信通过发送节点间的ROS Message实现,发布者和订阅者需要发送和接受相同类型的message,topic type由message type定义,发送topic的message类型可通过rostopic type确定。

3.2 rostopic type使用方法

rostopic type [topic]

   如:

$ rostopic type /turtle1/cmd_vel

   得到:

geometry_msgs/Twist

3.3 使用rosmsg可以得到message的详细信息:

输入:

$ rosmsg show geometry_msgs/Twist

得到:

geometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 z
geometry_msgs/Vector3 angularfloat64 xfloat64 yfloat64 z

4. 伴有message的rostopic

4.1 使用rostopic pub

用法:

rostopic pub [topibc] [msg_type] [args]

比如:

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

解释:

rostopic pub:发布message关于指定的topic-1: 只发布一条message然后退出/turtle1/cmd_vel: 要发布的topic的名字geometry_msgs/Twist: message的类型--: 告诉选项解析器后面的东西不是可选的,有负数时一定要有这项'[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]' :第一行向量是线性值,第二行是角度值,详见YAML syntax

乌龟停止了运动,因为需要steady stream of commands at 1Hz来保持运动。
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

 在速度topic上发布了速度命令,速率为1Hz

 这是再在rqt_graph上按左上角的refresh

查看被发布的数据:
rostopic echo /turtle1/pose

4.2 使用rostopic hz来指导数据发布的速率:

用法:

rostopic hz [topic]

比如:

$ rostopic hz /turtle1/pose

结果:

subscribed to [/turtle1/pose]
average rate: 59.354min: 0.005s max: 0.027s std dev: 0.00284s window: 58
average rate: 59.459min: 0.005s max: 0.027s std dev: 0.00271s window: 118
average rate: 59.539min: 0.004s max: 0.030s std dev: 0.00339s window: 177
average rate: 59.492min: 0.004s max: 0.030s std dev: 0.00380s window: 237
average rate: 59.463min: 0.004s max: 0.030s std dev: 0.00380s window: 290

我们可以通过得到更深的信息:

$ rostopic type /turtle1/cmd_vel | rosmsg show

5. 使用rqt_plot绘制发布的数据

$ rosrun rqt_plot rqt_plot

/turtle1/pose/x

/turtle1/pose/y

/turtle1/pose/theta

 

转载于:https://www.cnblogs.com/jjxforever/p/8007489.html

[ROS-Beginner]6.理解ROS的Topics相关推荐

  1. ROS学习笔记五:理解ROS topics

    ROS学习笔记五:理解ROS topics 本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具. 例子展示 roscore 首先运行roscore系列服务,这是使用R ...

  2. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters

    ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters 上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameter ...

  3. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

  4. 由浅到深理解ROS(8)-线程管理

    转自 单线程Spinning ros::spin()是最简单的单线程自旋, 它会一直调用直到结束 用法:  ros::spin(); 另一个单线程spinning是ros::spinOnce(),它定 ...

  5. 由浅到深理解ROS(1)

    ROS机器人操作系统 ( Robot Operating System 或简称 ROS),可以帮助提高机器人软件的开发效率.ROS能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能 ...

  6. ROS机器人程序设计(原书第2版)2.3 理解ROS开源社区级

    2.3 理解ROS开源社区级 ROS开源社区级的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识.这些资源包括: 发行版(Distribution) ROS发行版是可以独立安装.带有版本号 ...

  7. 理解ROS Navigation Stack,看完这篇你就知道啦!

    前言 ROS Navigation Stack是ROS提供的一个二维的导航功能包集合,通过输入里程计.传感器信息和目标位姿,输出控制机器人到达目标状态的安全速度指令.ROS Navigation St ...

  8. ROS学习笔记5(理解ROS节点)

    文章目录 1 准备工作 2 几个基本概念 3 节点 4 Client Libraries 5 roscore 6 使用rosnode 7 使用rosrun 8 总结回顾 这篇教程主要介绍了 rosco ...

  9. ROS学习笔记六:理解ROS服务和参数

    ROS学习笔记六:理解ROS服务和参数 主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam. ROS service service是节点之间互相通信的另一种方式,se ...

  10. 7.理解ROS服务与参数

    安装与设置你的ROS环境(rawmeat:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams) 注意:本教程翻译的日期是2018 ...

最新文章

  1. 港中文自动驾驶点云上采样方法
  2. Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)
  3. 三级计算机网络技术考试题,2017年计算机三级网络技术考试题
  4. python-判断元素是否在字典中
  5. Cocos2d-x3.0 DrawNode吸取
  6. unity中怎么在InspectorI面板加LOGO
  7. linux的常用操作——lftp、nfs、ssh和scp
  8. mysql root mysqld_MySQL how to run mysqld as root
  9. PL/SQL Developer 13.0设置中文
  10. 使用QP方法解基于五次多项式形式的cost function minimization问题
  11. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)
  12. 大数据学情分析_大数据时代如何轻松做好学情分析
  13. 安全出口指示灯警报、如何解除呢
  14. E: Could not get lock /var/lib/dpkg/lock(无法获得锁)
  15. 群晖通过WebDAV挂载阿里云盘
  16. 抽象代数 01.02 半群与群
  17. 2018.8.14 李开复重返 TED 演讲稿双语版
  18. 冒险岛官网模拟之五利用PHP+jQuery实现游戏排行榜的制作(连更)
  19. SVL simulator 2021.3 Radar目标检测结果异常的解决方案
  20. 华夏旅游CMS商城系统操作手册

热门文章

  1. C语言获取系统时间的几种方式 !
  2. Xml和Tomcat
  3. POJ2115 C Looooops 扩展欧几里德
  4. 手机APP ~ MUI——创建页面方法
  5. Xamarin.Form 超链接 用手势实现
  6. SpringBoot集成JWT 实现接口权限认证
  7. 56)函数模板的基本语法
  8. 用浏览器控制台查看ajax请求
  9. 流程控制语句反汇编(1)(Debug版)
  10. Android 解决调用系统相册打不开图片 DecodeServices报解码错误