ROS 计算图级,理解ROS 节点、话题

2017-06-09  本文已影响0人  李庆雪
1. ROS 基本概念:

计算图级-------是 ROS 处理数据的一种点对点的网络形式。程序运行时,所有进程及它们所进行的数据处理,将会通过一种点对点的网络形式表现出来,即通过节点、节点管理器、话题、服务等来进行表现。
ROS 中的基本计算图级概念包括:节点、节点管理器、参数服务器、消息、服务、话题和包。这些概念以各种形式来提供数据。

2. 基本命令: roscore, rosnode, rosrun

ros 命令的说明及参数可以通过 < 命令 > -h (或 --help )来查看
例如:rosnode -h

rosnode list
rosnode info 命令返回的是关于一个特定节点的信息:
rosnode info /rosout
roscore= ros+core : master (provides name service for ROS) + rosout(stdout/stderr) +parameter server (parameter server will be introducedlater)
rosnode = ros+node : ROS tool to get information about a node
rosrun = ros+run : runs a node from a given package
3. ROS Topic

用键盘控制小海龟运动这一过程的通信机制是怎样的呢?其实,这两个节点是通过一个 ROS 话题( Topic )来相互通信的, turtle_teleop_key 在这个话题上发布键盘输入的的消息,而 turtlesim 则订阅该话题以接收该消息。下面通过 rqt 功能包和 rostopic 命令来查看相关信息:


如图所示,节点 turtlesim_node 和节点 turtle_teleop_key 正通过一个名为 /turtle1/cmd_vel 的话题来相互通信。
除了使用 rqt_graph ,还可以用 rqt_plot 来实时显示一个发布到某个话题上的数据变化图形。这里我们将
使用 rqt_plot 命令来绘制正在发布到 /turtle1/pose 话题上的数据变化图形。首先,在一个新终端中运行rqt_plot命令。
rosrun rqt_plot rqt_plot
在弹出的新窗口左上角的一个文本框里面可以添加需要绘制的话题。在里面输入/turtle1/pose/x 后按enter 键或点击 “ +”号按钮,并对/turtle1/pose/y 重复相同的过程。就会在图形中看到 turtle 的 x-y 位置坐标图。

2, rostopic list :能够列出所有当前订阅和发布的话题。
先看一下 rostopic list 子命令需要哪些参数。运行命令:
rostopic list -h
使用 verbose 选项,以列出相关话题的详细信息。运行命令:
rostopic list -v
显示了有关所发布和订阅的话题的详细信息,其中方括号中表示的是话题的类型。
3,rostopic type :用来查看所发布话题的消息类型。
用法: rostopic type [topic]运行如下命令:
rostopic type /turtle1/cmd_vel
上面的 geometry_msgs/Twist 即为话题 /turtle1/cmd_vel 的消息类型,这在执行命令 rostopic list -v 时
也有所体现。
下面用 rosmsg 命令来查看消息的详细情况:
rosmsg show geometry_msgs/Twist

4, 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]'```
以上命令会发送一条消息给 turtlesim ( -1 表示命令只发布一次),这样小海龟就会以 2.0 大小的线速度和 1.8 大小的角速度开始移动。要想保持这个运动, turtle 需要一个 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]'

此时,我们再通过 rqt_graph 来查看当前系统的运行情况,即在新的标签页,运行:
`rosrun rqt_graph rqt_graph`
![](https://img.haomeiwen.com/i3846387/a746e2a910fe981b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
由上图可以看出, rostopic pub 发布消息到话题 /turtle1/cmd_vel , rostopic echo 从该话题接收消息输出到终端,所以此时我们可以在新的终端用 rostopic echo 命令查看不断发布到话题的数据。
5, rostopic hz :命令可以用来查看数据发布的频率。
用法: rostopic hz [topic]
之前我们用 rostopic pub -r 命令发布一个 1HZ 的稳定命令流,现在我们用 rostopic hz 命令查看一下 :
`rostopic hz /turtle1/cmd_vel`
上一篇下一篇

猜你喜欢

热点阅读