ROS新手指导3 - Topics

2020-07-03  本文已影响0人  irene0_0

7 理解ROS Topic

前置条件

  1. roscore
    首先确认已经启动了roscore
  2. turtlesim
    在新终端运行小乌龟
$ rosrun turtlesim turtlesim_node
  1. turtle keyborad teleoperation
    在新窗口执行
$ rosrun turtlesim turtle_teleop_key

现在我们可以使用键盘的上下左右键驱动小乌龟了
接下来我们看下,在这个场景下边是什么在运行

ROS Topics

turtlesim_node和turtle_teleop_key节点是通过彼此的一个ROS topic通信的。turtle_teleop_key在topic上发布了消息,然后turtlesim订阅一样的topic去接受消息。rqt_graph可以展示当前正在运行的节点和topic。

  1. 使用rqt_graph
    如果没有,就安装它
$sudo apt-get install ros-<distro>-rqt
$sudo apt-get install ros-<distro>-rqt-common-plugins

打开一个新终端,运行它

$ rosrun rqt_graph rqt_graph

我们可以看到一个图展示
椭圆形的是节点,箭头上的是topic

  1. rostopic 说明
    我们可以使用rostopic查看发布的topic信息
$ rostopic -h
  1. 使用rostopic echo
    这个命令展示了发布在topic上的数据
    打开一个新终端
$ rostopic echo /turtle1/cmd_vel

执行完之后,你可能什么数据都没有看到,让我们来让turtle_teleop_key通过键盘发布一些数据
打开运行turtle_teleop_key的终端,使用键盘上下移动,此时查看echo的终端,就会看见数据了。
现在我们再来看rqt_graph,展示的带有一串数字的就是rostopic echo,它也订阅了上边发布的topic

  1. 使用rostopic list
    这个展示了当前所有的已经订阅的发布的topic
    打开一个新的终端
$ rostopic list -h

展示简要信息

$ rostopic list -v

展示详细的topic信息

ROS Messages

节点之间通信通过topic发送消息信息。对于发布者和订阅者来说,他们必须发送和接收相同类型的消息。在topic上发送的消息类型可以通过rostopic type来决定。

  1. 使用rostopic type
$ rostopic type /turtle1/cmd_vel

我们可以使用rosmsg show geometry_msgs/Twist,查看类型的具体信息

rostopic 扩展

  1. 使用rostopic pub
    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]'

执行完,就可以看见小乌龟动了。

4 rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
  1. 使用rostopic hz
    它展示了数据发布的速度
$rostopic hz /turtle1/pose

可以看到基本在60hz

$rostopic type /turtle1/cmd_vel | rosmsg show

使用rqt_plot

打开新终端

rosrun rqt_plot rqt_plot

左上角输入 /turtle1/pose/x,点击右侧加号,再输入 /turtle1/pose/y,再点击+号,可以看到两条线
那个界面,最小化或者拖着放大的时候,会core...

上一篇下一篇

猜你喜欢

热点阅读