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

1. ROS 基本概念:

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

  • 1.1 节点( Node )
    一个节点就是 ROS 功能包中的一个可执行文件,节点之间可以通过 ROS 客户端库(如roscpp 、 rospy )相互通信。一个机器人控制系统由许多节点组成,这些节点各司其职,如,一个节点控制激光距离传感器,一个节点控制轮子的马达,一个节点执行定位,一个节点执行路径规划,一个节点提供系统的整个视图 ......
  • 1.2 节点管理器( Master )
    节点管理器是 ROS 名称服务,能够帮助节点找到彼此。节点通过与节点管理器通信来报告他们的注册信息。值得注意的是,当这些节点和节点管理器通信时,它们可以接受其他注册节点的信息,并能保持通信正常。当这些注册信息改变时,节点管理器也会回调这些节点。所以,没有节点管理器,节点将不能相互找到,也不能进行消息交换或者调用服务。
  • 1.3 参数管理器( Parameter Server )
    是节点管理器的一部分。其允许数据通过在一个中心位置的关键词来存储。
  • 1.4 消息( Message )
    消息是一种 ROS 数据类型,节点之间通过消息来互相通信。
  • 1.5 话题( Topic )
    话题是用于识别消息的名称,节点可以发布消息到话题,也可以订阅话题以接收消息。一个话题可能对应有许多节点作为话题发布者和话题订阅者,当然,一个节点可以发布和订阅许多话题。一个节点对某一类型的数据感兴趣,它只需订阅相关话题即可。一般来说。话题发布者和话题订阅者不知道对方的存在。发布者将信息发布在一个全局的工作区内,当订阅者发现该信息是它所订阅的,就可以接收到这个信息。
  • 1.6 服务( Service )
    我们可以看出,发布 / 订阅模式是一种多对多的传输方式,显然这种传输方式不适用于请求 / 回复的交互方式。请求 / 回复交互方式经常被用于分布式系统中。请求服务通过 Service 来进行, Service 被定义为一对消息结构:一个用于请求,一个用于回复。一个客户通过发送请求信息并等待响应来使用服务。( ROS中的请求 / 回复交互方式好像是一个远程程序调用。)
  • 1.7 消息记录包( Bag )
    消息记录包是一种用于保存和回放 ROS 消息数据的格式。消息记录包是检索传感器数据的重要机制,这些数据虽然很难收集,但是对于发展和测试算法很有必要。
2. 基本命令: roscore, rosnode, rosrun

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

  • 2.1 roscore
    在运行所有有关具体操作的 ROS 程序之前首先要运行该命令,然后打开新标签页运行其他 ROS 程序。
    roscore
  • 2.2 rosnode
    显示当前运行的 ROS 节点信息。
    列出活跃的节点:
rosnode list
rosnode info 命令返回的是关于一个特定节点的信息:
rosnode info /rosout
  • 2.3 rosrun
    rosrun可以运行 package 中的可执行文件 , 不需要知道可执行文件的位置
    用法: rosrun [package_name] [node_name]
    运行 turtlesim 包中的节点 turtlesim_node :
    rosrun turtlesim turtlesim_node
    通过命令来改变节点名称为 my_turtle :
    rosrun turtlesim turtlesim_node __name:=my_turtle
    在新标签页中运行命令:
    rosrun turtlesim turtle_teleop_key
    需要注意的是,应选中 turtle_teleop_key 所在的终端窗口,即最后打开的新标签页,以确保键盘输入能够被捕获。
    在新的标签页用rosnode list命令查看此时运行的 ROS 节点 :
    rosnode list
    可以看到,除了节点 turtlesim ,现在又多出了节点 teleop_turtle 。
    可以用 rosnode ping 命令来测试节点:
    rosnode ping my_turtle
    总结:
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 命令来查看相关信息:

  • 3.1 rqt 功能包
    通过 rqt_graph 来查看当前系统的运行情况。在新的标签页运行如下命令:
    rosrun rqt_graph rqt_graph


如图所示,节点 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 位置坐标图。

  • 3.2 rostopic
    使用 rostopic 命令工具能获取有关 ROS 话题的信息。
    运行下面命令查看 rostopic 子命令:
    rostopic -h
    1, rostopic echo :显示某个话题上发布的数据。
    用法:rostopic echo [topic]
    rostopic echo /turtle1/cmd_vel
    此时终端没有任何数据,切换到 turtle_teleop_key 节点运行时所在的终端窗口,通过键盘方向键控制小海龟移动,然后再切换回原来的终端窗口。此时出现发布到话题上的数据。

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`
![](http://upload-images.jianshu.io/upload_images/3846387-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`
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,583评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,669评论 2 374
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,684评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,682评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,533评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,396评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,814评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,458评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,745评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,789评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,565评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,410评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,828评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,050评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,342评论 1 253
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,793评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,010评论 2 337

推荐阅读更多精彩内容