博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROS学习(七)—— 理解ROS Topic
阅读量:5977 次
发布时间:2019-06-20

本文共 2669 字,大约阅读时间需要 8 分钟。

一、准备工作

1、打开roscore

roscore

 

2、turtlesim

  打开一个turtulesim节点

rosrun turtlesim turtlesim_node

 

3、turtle keyboard teleoperation

rosrun turtlesim turtle_teleop_key

     现在你可以使用键盘上的方向键来控制turtle运动了。如果不能控制,请选中turtle_teleop_key所在的终端窗口以确保你的按键输入能够被捕获。

 

二、ROS Topic

  turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim订阅该话题以接收该消息。下面让我们使用来显示当前运行的节点和话题。

 

1、Using rqt_graph

  rqt_graph能够创建一个显示当前系统运行情况的动态图形

(1)安装:

sudo apt-get install ros-kinetic-rqt

 

(2)使用:

rosrun rqt_graph rqt_graph

 

              

  如果你将鼠标放在适当位置,相应的ROS节点(蓝色和绿色)和话题(红色)就会高亮显示。正如你所看到的,turtlesim_nodeturtle_teleop_key节点正通过一个名为 /turtle1/cmd_vel的话题来互相通信。

 

2、介绍rostopic

  rostopic命令工具能让你获取有关ROS话题的信息。

rostopic bw     display bandwidth used by topic          rostopic 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

 

 

3、使用rostopic echo

(1)语法:

rostopic echo [topic]

 

 

(2)作用:

   Rostopic echo可以显示在某个话题上发布的数据。

 

(3)demo

rostopic echo /turtle1/cmd_vel

 

 

4、使用rostopic list

(1)作用:

   Rostopic list能够列出所有当前订阅和发布的话题。

 

(2)语法:

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

 

 

(3)demo

rostopic list -v

 

 

三、ROS Messages

      话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器(turtle_teleop_key)和订阅器(turtulesim_node)之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型

 

1、使用rostopic type

(1)作用:

   可以返回所发布话题的消息类型

 

(2)语法:

rostopic type [topic]

 

(3)demo

rostopic type /turtle1/cmd_vel

 

    返回  geometry_msgs/Twist   我们可以看看这个消息类型的具体信息(使用rosmsg)

rosmsg show geometry_msgs/Twist

 

 

 四、使用rostopic发送消息

1、rostopic pub

(1)语法:

rostopic pub [topic] [msg_type] [args]

 

 

(2)作用:

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

 

(3)demo

 

命令成分 作用  
rostopic pub 发布消息到话题的指令 
-1 只发送一次
-r 表示重复发送命令
/turtle1/cmd_vel 发送给哪个话题
geometry_msgs/Twist 发送消息类型
-- 表示后面出现的 ' - '  不表示命令
'[2,0,0]' '[0,0,1.8]' 发送消息内容,格式可以查询http://wiki.ros.org/ROS/YAMLCommandLine

发送一次命令:

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2,0,0]' '[0,0,1.8]'

 

 

 重复发送命令

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

 

 

 

2、rostopic hz

(1)作用:

  查询消息发布的频率

 

(2)语法:

rostopic hz [topic]

 

 

(3)demo:

rostopic hz /turtle1/pose

 

 

(4)我们也可以结合rostopic typerosmsg show命令来获取关于某个话题的更深层次的信息

rostopic type /turtle1/cmd_vel | rosmsg show

 

 

 5、rqt_plot

(1)作用:

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

 

(2)用法:

rosrun rqt_plot rqt_plot

 

   然后可以跳出的小程序中加入话题数据即可。

 

转载地址:http://xpsox.baihongyu.com/

你可能感兴趣的文章
@pathvariable和@RequestParam的区别
查看>>
测试驱动开发
查看>>
C++操作符重载
查看>>
Redis实现分布式锁2
查看>>
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
SASS初学者入门(转)
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
redux-form(V7.4.2)笔记(一)
查看>>
钱趣多风控新举措:源头选择与物理隔离
查看>>
puppet最新源码包安装学习笔记
查看>>
烂泥:kickstart无人值守安装CentOS6.5
查看>>