文档章节

6.理解ROS话题

HuangJC
 HuangJC
发布于 2017/05/05 17:54
字数 1101
阅读 93
收藏 0

6.1预备工作

先在一个终端开启roscore(一台电脑只能开启一个,多开报错)

roscore

新终端开启turtlesim,把小乌龟的窗口显示出来

rosrun turtlesim turtlesim_node

另一新终端开启键盘远程控制turtle

rosrun turtlesim turtle_teleop_key

保留turtle_teleop_key 这个终端在桌面最上面,然后按键盘上下左右键就可以控制乌龟。如下图

6.2ROS Topics

turtlesim_node节点和turtle_teleop_key是通过ROS话题通信的,key在话题上发布按键输入消息,turtlesim则订阅该话题以接受消息。

6.3使用rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图。先下载安装:

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

然后在新终端下

rosrun rqt_graph rqt_graph

然后会弹出

把鼠标放在中间/turtle1/cmd_vel(这就是话题)上,会让话题的发布者(蓝色)和接受者(绿色)亮起。

6.4rostopic介绍

就是了解话题信息,查看rostopic的子命令

rostopic -h

输出如下

6.5使用rostopic echo

可以显示某个话题上发布的数据

用法rostopic echo [topic]

在新终端下

rostopic echo /turtle1/cmd_vel

然后高亮turtle_teleop_key那个终端,试一下上下左右,会发现上个终端会有如下显示

此时再刷新rqt_graph,会发现多了个分支,其实就是那个rostopic echo显示话题的节点。

6.5使用rostopic list

这个是列出所有当前订阅和发布的话题。

在新终端下,查看list子命令参数

rostopic list -f

显示出所有发布和订阅的话题及其类型的详细信息

rostopic list -v

6.6ROS Messages

对于发布器(在这里是turtlesim_node)和订阅器(在这里是turtle_teleop_key)之间通信,必须发送和和接受相同的数据类型,也就是说话题的类型由发布上面的消息类型决定。

用rostopic type可以查看消息类型

用法: rostopic type [topic]

试一下

rostopic type /turtle1/cmd_vel

会返回  geometry_msgs/Twist

我们使用rosmsg查看消息的详细情况

rosmsg show geometry_msgs/Twist

返回

可以看出turtlesim所期待的消息类型是64位浮点型。

6.7使用rostopic pub

这个可以把数据发布到当前某个正在广播的话题上。

用法: rostopic pub [topic] [msg_type] [args]

试一下,用命令的方式发一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。

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

命令解析

rostopic pub:发布一个消息

-1:(单破折号)表示发布当前消息后立刻退出

/turtle1/cmd_vel  :  话题名称

geometry_msgs/Twist  :  消息的类型

--:告诉选项解析器后面的参数不是命令选项。

效果如下图。

让乌龟一直转圈(-r 1 就是以1Hz的频率发布速度命令到速度话题上)

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

此时刷新一下rqt_graph,会看到

左上角是那个键盘输入控制key的节点(发布者)

左下角是那个用命令控制让乌龟不停转圈的节点(发布者)

右上角是那个有乌龟图像的节点(订阅者)

右下角是那个获取键入信息命令行显示的节点(订阅者)

到这里一共开了6个终端,上面4个节点占了4个了,还有一个初始化的,一个是graph的(显示话题关系)。

6.8使用rostopic hz

用来查看数据发布频率。

用法:rostopic hz [topic]

试一下turtlesim_node发布/turtle/pose多快

rostopic hz /turtle1/pose

现在我们可以知道turtlesim正以大概60Hz的频率发布数据给turtle。我们也可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次信息。

rostopic type /turtle1/cmd_vel |rosmsg show

到这里已经完成通过rostopic查看话题相关情况过程。单还有另一个工具查看turtlesim发布的数据。

6.9使用rqt_plot

这个命令可以实时显示一个发布到某个话题上的数据变化图形。

在新终端下(确保rostopic pub 和turtlesim开着)

rosrun rqt_plot rqt_plot

会弹出一个新窗口,在topic上输入/turtle1/pose/x,然后按下+号,会添加该线在图片中,同样把/turtle1/pose/y添加上,就得如下图形。

© 著作权归作者所有

HuangJC
粉丝 0
博文 32
码字总数 39927
作品 0
佛山
私信 提问
ROS 自定义消息类型

引言 学习ROS的过程中,在话题的发布与订阅之间,我一直在思考,我们能不能定义自己的话题名,甚至在编写我们自己的ROS软件包时,定义我们自己的消息类型。 首先能不能定义自己的话题名 当然...

CSDNhuaong
2017/11/22
0
0
ros打开笔记本摄像头,单目标定

笔记本摄像头多是usb 镜头 下载包或者sudo apt-get install ros-indigo-usb-cam 打开驱动 端口为/dev/video0, 如果你外接了usb摄像头,你应该把该端口改成video1,自行从/dev下验证 对应的话题...

qq_35508344
2017/12/21
0
0
预告:贾子枫 与 Top Liu 的Live - - 如何玩转 ROS 机器人程序设计

首先要非常感谢贾子枫邀请我来参与这次「机器人」主题的系列live,并与大家分享ROS学习的话题。 本次活动定位为公益及技术传播活动 1. 门票定为最低价9.9元 2. 本次live全部收入将用于资助贫...

Top Liu
2017/03/08
0
0
ROS2.0时代

ROS1.0的诟病 Realtime Performance 基于话题的发布与订阅,这种方式本身就不能保证实时性 Node management 当分布式部署的时候,每个node都要指定自己的IP和master在哪 Master(roscore) ...

CSDNhuaong
2018/01/07
0
0
基于Faster-RCNN的红绿灯检测开发文档

0 前言 这是之前做过的一个红绿灯检测的小小实践,现以“软件工程文档”的形式整理以下。只是一个总体的流程,不会面面俱到,介绍太多的细节,有问题的朋友,欢迎交流,也请大神不吝赐教。 ...

learning_tortosie
2018/04/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
29分钟前
5
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
7
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部