ROStopic 通信方式
操作演示,对 topic 通信方式的理解请看:点击打开链接
开启终端,运行 roscore
新开一个终端(已经安装好(ros-<distro>-ros-tutorials 包,否则运行 sudo apt-get install ros-<distro>-ros-tutorials ,<distro> 为 ROS 发行版本名称),运行 rosrun turtlesim turtlesim_node
运行 turtle_teleop_key 节点
rosrun turtlesim turtle_teleop_key
用键盘控制小乌龟运动。
1.使用rqt_graph
安装
sudo apt-get install ros-kinetic-rqt
sudo apt-get install ros-kinetic-rqt-common-plugins
运行
rosrun rqt_graph rqt_graph
结果:
如果将鼠标放在/turtle1/command_velocity上方,相应的ROS节点(蓝色和绿色)和话题(红色)就会高亮显示。正如你所看到的,turtlesim_node和turtle_teleop_key节点正通过一个名为/turtle1/command_velocity的话题来互相通信。
2.rostopic介绍
2.1 使用 rostopic echo
命令格式:
rostopic echo [topic]
查看 turtle_teleop_key 节点在 /turtle1/command_velocity 话题(非hydro版)上发布的数据
rostopic echo /turtle1/cmd_vel
在 turtle_teleop_key 节点终端下,每按一下方向键都会输出这样的信息,再次运行
rosrun rqt_graph rqt_graph
可以看到 turtlesim_node 和 turtle_teleop_key 节点正通过一个名为 /turtle1/command_velocity 的话题来互相通信。
2.2 使用 rostopic list
rostopic list能够列出所有当前订阅和发布的话题。
新开一个终端,
rostopic list
运行结果:
运行
rostopic list -v
列出详细信息:
3.ros Messages
3.1使用rostopic type
rostopic type 命令用来查看所发布话题的消息类型
命令格式:
rostopic type [topic]
运行
rostopic type /turtle1/cmd_vel
结果:
运行
rosmsg show geometry_msgs/Twist
查看此消息类型:
已经知道了消息类型,接下来我们就可以给 turtle 发布命令了。
4.继续学习 rostopic
4.1 使用 rostopic pub
命令格式:
rostopic pub [topic] [msg-type] [args]
新运行一个 turtlesim_node 节点,运行:
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
结果:
rostopic pub 这条命令将会发布消息到某个给定的话题
-1 (单个破折号)这个参数选项使rostopic发布一条消息后马上退出
/turtle1/cmd_vel 这是消息所发布到的话题名称
geometry_msgs/Twist 这是所发布消息的类型
--(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号 -(比如负号)时是必须要添加的
'[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]' 正如之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。这些参数其实是按照YAML语法格式编写的,这在YAML文档中有更多的描述。
turtle已经停止移动了。这是因为turtle需要一个稳定的频率为1Hz的命令流来保持移动状态。
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
再次运行:
rosrun rqt_graph rqt_graph
结果:
可以看到 rostopic 发布器节点正在与 rostopic echo节点进行通信
4.2 使用 rostopic hz
rostopic hz命令可以用来查看数据发布的频率
命令格式:
rostopic hz [topic]
运行:
rostopic hz /turtle1/pose
看到 turtlesim_node 发布 /turtle/pose 时的速度
5 使用 rqt_plot
运行:
rosrun rqt_plot rqt_plot
在左上角的文本框分别输入 /turtle1/pose/x,点击 + 号,/turtle1/pose/y 点击 + 号。
按下减号按钮会显示一组菜单让你隐藏图形中指定的话题。现在隐藏掉你刚才添加的话题并添加/turtle1/pose/theta
6 编写*.msg
1. 在 /catkin_ws/src 中创建一个 pkg
catkin_create_pkg beginner_tutorials rospy roscpp std_msgs
2. 定义新的消息
mkdir msg
echo "int64 num" > msg/Num.msg
3.接下来,还有关键的一步:我们要确保msg文件被转换成为C++,Python和其他语言的源代码: 查看package.xml, 确保它包含一下两条语句
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
如果没有,添加进去。 注意,在构建的时候,我们只需要"message_generation"。然而,在运行的时候,我们只需要"message_runtime",否则会编译/运行失败。
在 CMakeLists.txt文件中,利用find_package 函数,增加对message_generation的依赖,这样就可以生成消息了。 可以直接在COMPONENTS的列表里增加message_generation,就像这样
同样,需要确保设置了运行依赖:
手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。 确保添加了如下代码:
进入 /catkin_ws 编译后应该像这样:
以下是未修改 package.xml 和 CMakeLists.txt 的编译结果
ROStopic 通信方式的更多相关文章
- Easticsearch通信方式_API
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch概念 a. Elasticsearch是一个基于Luc ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- ROS学习笔记(八)——ROSTOPIC
NEW 1 $ roscore NEW 2 $ rosrun turtlesim turtlesim_node NEW 3 $ rosrun turtlesim turtle_teleop_key N ...
- activemq的几种基本通信方式总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍
<ignore_js_op> 1)NameNode.DataNode和Client NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间.集群 ...
- activemq的两种基本通信方式的使用及总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
- apple watch 与 iphone 之间的通信方式
apple watch 与 iphone 之间的通信方式:通过watchkit WatchKit应用扩展都提供一个名为WKInterfaceController的子类来管理相应的界面. 启动watch ...
- Linux下进程通信方式(简要概述)
http://blog.sina.com.cn/s/blog_65c209580100u0ee.html (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先 ...
随机推荐
- AQS独占式同步队列入队与出队
入队 Node AQS同步队列和等待队列共用同一种节点结构Node,与同步队列相关的属性如下. prev 前驱结点 next 后继节点 thread 入队的线程 入队节点的状态 INITIAl 0 初 ...
- Python之(scrapy)爬虫
一.Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸 ...
- 节日营销!这样搞-App运营日常
节日送礼需求日益增长,当儿女们有了购买需求的时候,商家如何突出重围,成为孝子们的首选?如何做好节日营销?几个经验分享一下: 1.抓住节日特色 结合节日风格特色,营造节日气氛,如母亲节这种节日,主要体现 ...
- 【Java】接口和抽象类总结
一.接口 1.1 成员变量(其实是常量) 1.2 方法 二.抽象类 2.1 成员变量 2.2 方法 一.接口 1.1 成员变量(其实是常量) 成员变量默认用 public static final修饰 ...
- CentOS7安装CDH 第十三章:CDH资源池配置
相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...
- Linux命令——ulimit
参考:https://www.cnblogs.com/kongzhongqijing/p/5784293.html
- WebApi 接口恶意请求限制
为了防止爬虫以及恶意请求,我们适当的为API增加一个请求限制 WebApiThrottle限流框架 WebApiThrottle支持自定义配置各种限流策略.可以根据不同场景配置多个不同的限制 ...
- java相关网址汇总1
Java网站汇总 官方 框架 数据库 资源网站 视频学习网站 开发工具 其他工具 github/gitee框架项目 社区 博客/个人 官方 Sun公司网站Sun公司中文网站J2SE下载网站JavaSE ...
- SLAM面试常见问题
之前我们分享过视觉SLAM找工作.面试经历,见<2018年SLAM.三维视觉方向求职经验分享>,<经验分享 | SLAM.3D vision笔试面试问题>. 从零开始学习SLA ...
- Vim使用技巧(5) -- 宏的录制与使用
想象一个场景,我们怎么快速把下面的所有链接都加上双引号?可能你手速快,可以很快的加完,但是如果链接有上万个呢?你如何在十秒以内加完? 这时候就需要用到“宏”(其实除了宏vim还有其它方法加上双引号,这 ...