6.理解ROS话题

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添加上,就得如下图形。

转载于:https://my.oschina.net/u/3384982/blog/893567

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值