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. 三套JSP源代码的安装部署过程和遇到的问题图解
  2. DIV CSS兼容性解决IE6/IE7/FF浏览器的通用方法完美兼容
  3. k8s yaml字段说明
  4. aspmysql发布_ASP.NET Entity Framework with MySql服务器发布环境配置
  5. php的_auto,AutoPHPCheck下载
  6. ApacheHttpServer修改httpd.conf配置文件
  7. linux gpsd 授时原理,app/ntp/gps/README.md · 王者归来/ITTS - Gitee.com
  8. 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
  9. python基础教程-《Python基础教程(第3版)》PDF高清版
  10. 统一软件开发过程(RUP)的概念和方法
  11. 高通骁龙845的android手机有哪些,骁龙845手机买什么好 目前6款最值得买的骁龙845手机推荐...
  12. excel 中行数据向下移动一行的方法
  13. RecyclerView实现吸顶效果---ItemDecoration
  14. 三个基本的布尔逻辑算符是_布尔逻辑检索的主要运算符有哪些
  15. 如何在ChemDraw中输入℃温度符号
  16. 用mysql设计学籍管理系统_学生学籍管理系统(SQL数据库系统设计)(完整版).pdf...
  17. IP地址分类及子网掩码划分网段详解!!!
  18. MySQL 数据库基础(一)(数据库的简介)
  19. 最新Android基础入门教程目录(完结版)
  20. 语义分析——TEST编译器(3)

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0706-22T行政管理学导论 参考试题
  2. 【渝粤教育】国家开放大学2019年春季 1087数学分析专题研究 参考试题
  3. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料
  4. ACM 学习笔记(五) 动态规划
  5. 烹佛烹祖大炉鞴,锻凡锻圣恶钳锤
  6. Linux汇编调试器EDB
  7. javascript 权威指南二
  8. el表达式字符串与变量拼接
  9. 北京2018网络赛 hihocoder#1828 : Saving Tang Monk II (BFS + DP +多开一维)
  10. POJ2115 C Looooops 扩展欧几里德