ROS Tutorial 记录 - 5 ROS话题

首先确保roscore已经运行, 打开一个新的终端:

$ roscore

在一个新的终端中运行:

$ rosrun turtlesim turtlesim_node

通过键盘来控制turtle的运动,请在一个新的终端中运行:

$ rosrun turtlesim turtle_teleop_key

现在你可以控制turtle运动了

1. ROS Topics

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

1.1 使用 rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形。rqt_graph是rqt程序包中的一部分。

如果你没有安装,请通过以下命令来安装:

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

请使用你的ROS版本名称(比如fuerte、groovy、hydro等)来替换掉<distro>。

在一个新终端中运行:

$ rosrun rqt_graph rqt_graph

可以看到turtlesim_node和turtle_teleop_key节点正通过一个名为 /turtle1/cmd_vel的话题来互相通信。

1.2 rostopic介绍

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

$ rostopic -h  命令显示该命令的帮助信息

1.3 使用 rostopic echo

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

开新窗口,输入

$ rostopic echo /turtle1/cmd_vel

然后在键盘控制乌龟的窗口按下方向键,  可以看到rostopic窗口显示出topic信息

刷新rqt_graph窗口,可以看到有新的节点订阅了该topic

1.4 使用 rostopic list

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

$ rostopic list -v

列出所有topic及其类型的详细信息。

2. ROS Messages

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

2.1 使用 rostopic type

用来查看所发布话题的消息类型。

$rostopic type [topic]

$ rostopic type /turtle1/cmd_vel   , 应该会看到 “geometry_msgs/Twist”

可以使用rosmsg命令来查看消息的详细情况

$ rosmsg show geometry_msgs/Twist

2.2 rostopic pub

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

用法:

rostopic pub [topic] [msg_type] [args]

示例(hydro版):

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

以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。

其中 

  -1 选项使rostopic发布一条消息后马上退出。 

--(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。

这些参数其实是按照YAML语法格式编写的

使用一个稳定的频率为1Hz的命令流来保持移动状态。我们可以使用rostopic pub -r命令来发布一个稳定的命令流

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

2.3 使用 rostopic hz

可以用来查看数据发布的频率。

用法:

rostopic hz [topic]

可以结合rostopic type和rosmsg show命令来获取关于某个话题的更深层次的信息

rostopic type /turtle1/cmd_vel | rosmsg show

3. 使用 rqt_plot

rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。这里我们将使用rqt_plot命令来绘制正在发布到/turtle1/pose话题上的数据变化图形。首先,在一个新终端中运行rqt_plot命令:

$ rosrun rqt_plot rqt_plot

在弹出的窗口输入框中输入/turtle1/pose/x后点击 “+ ”按钮

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值