10.以小海龟为例讲解通信方式

》》点赞,收藏+关注,理财&技术不迷路《《

1.设置

roscore

turtlesim ———— $ rosrun turtlesim turtlesim_node ———— 运行海龟

海龟键盘操作 ———— $ rosrun turtlesim turtle_teleop_key ———— 运行对它的键盘

我们现在来查看一下:

 

2.ROS Topics

刚才打开的turtlesim_node 和turtle_teleop_key 两个node就是通过Topic通信的。

turtle_teleop_key 把键盘点击发布到一个Topic,如果turtlesim_node 订阅了这个Topic,它就可以得到键盘点击的内容。我们可以通过rqt_graph查看正在运行的node和topic。

Note: If you're using electric or earlier, rqt is not available. Use rxgraph instead.

2.1 使用rqt_graph

这个东西能够创建一个动态图来描述系统里面正在运行什么。rqt_graph 是rqt包的一部分。除非你已经安装过了,不然就得安装一下:

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

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

rqt由三个部分/元包组成

    rqt---核心模块

    rqt_common_plugins---ROS后端工具套件,可用于机器人运行时的开/关。

    rqt_robot_plugins---在运行时与机器人交互的工具。

rqt metapackage提供了一个小部件rqt_gui,它允许多个`rqt`小部件停靠在单个窗口中。

开个新窗口,运行:—— $ rosrun rqt_graph rqt_graph

2.2 引入rostopic

从ROS topic获取信息。可以使用help查看一些相关命令用法:  $ rostopic -h

 

2.3 使用rostopic echo

rostopic echo展示发布到topic上的数据 rostopic echo [topic]   

 $ rostopic echo /turtle1/cmd_vel

这个时候什么都不会显示,因为还没有按按键,选择小海龟那个命令行窗口,然后按按键,就会有数据了。

重新看一下rqt_graph ,点一下refresh,你会发现rostopic echo也订阅了 /turtle1/cmd_vel主题。

2.4使用rostopic list

这个命令会列举出当前正在被发布和订阅的所有topic。看一下怎么用: $ rostopic list -h

我们可以列举出所有信息:$ rostopic list -v

 

3.ROS Messages

node就是通过在topic上面发送message来交流的。发布者和订阅者能够交流,是因为他们使用了相同的Message类型,topic的类型就取决于message的类型。message的类型可以由rostopic type来定义。

3.1 使用rostopic type

它可以返回任何topic被发布的message类型。rostopic type [topic]

比如:$ rostopic type /turtle1/cmd_vel

然后得到这个:geometry_msgs/Twist

我们可以看一下他的详细信息:$ rosmsg show geometry_msgs/Twist

 

4.结合Message+topic使用:

4.1 使用rostopic pub

rostopic pub publishes data on to a topic currently advertised.这个命令可以向正在运行的topic发布数据消息。

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

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

这个命令会把message发送到指定的topic ———— rostopic pub

这个选项是让rostopic只发布一次message,然后退出 ———— -1

这个是message要发布到的topic的名字 ———— /turtle1/cmd_vel

这个是发布message到topic的时候要使用的消息类型 ———— geometry_msgs/Twist

这个就是告诉选项解析器,后面如果再出现“-”就不要管了,不是选项了———— --

最后一部分就是参数了,就是对应之前获得的数据类型写的 ———— '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

这么写的原因,是这个满足YAML语法,可以详细看看YAML命令行文档(http://wiki.ros.org/ROS/YAMLCommandLine

小乌龟移动了一下就不动了,原因是它需要持续的1Hz命令流才能保持移动,我们可以用 rostopic pub -r 来实现:

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

我们再去rqt_grapg rqt_graph里面看看

 

4.2 使用rostopic hz

这个可以显示每个topic发布数据的速率 ———— rostopic hz [topic]

我们可以来看一下, turtlesim_node发布 /turtle1/pose的速度有多快 ———— $ rostopic hz /turtle1/pose

我们可以看到turtlesim 发布数据的速度是60Hz,我们也可以通过 rostopic type和 rosmsg show 结合获得更多关于topic的信息。

$ rostopic type /turtle1/cmd_vel | rosmsg show

 

5.使用rqt_plot

首先运行rqtploat: ———— $ rosrun rqt_plot rqt_plot

等一会儿就会弹出来一个框,在左上角输入 /turtle1/pose/x ,然后点击“+”再输入/turtle1/pose/y,点击“+”。就可以看到两条曲线,是发布到topic上的数据关于时间的曲线。

在这里输入:  /turtle1/pose/x ,然后点击“+”再输入/turtle1/pose/y,点击“+”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值