本科毕设——ROS学习(一)
目录
ROS概念
ROS是一个分布式的进程(也就是节点)框架,进程被封装在易于被分享和发布的程序包和功能包集中。
ROS具有语言独立性,对C++、Python都有适配。
ROS 有三个层次的概念: 文件系统层次、计算图层次和社区层次。
文件系统层次
文件系统级别的概念主要包括在磁盘上遇到的 ROS 资源,例如:
功能包(packages)
消息格式(msg)
服务格式(srv)
ROS计算图层次
计算图是一个由 ROS 进程组成的点对点网络,它们共同处理数据。ROS 的基本计算图概念是:
节点(Nodes):节点是执行计算的进程。
主节点(Master):提供名称注册和查找计算图的其余部分。
参数服务器(Parameter Server):允许在中心位置按键(key)存储数据。它目前是Master的一部分。
消息(Messages):节点通过传递消息相互通信。
话题(Topics):消息通过具有发布/订阅语义的传输系统进行路由。节点通过将消息发布到给定的话题来发送消息。话题是用于标识消息内容的名称。对某种类型的数据感兴趣的节点将订阅相应的话题。
服务(Services):请求/应答通过服务完成,服务由一对消息结构定义: 一个用于请求,一个用于应答。
Bags:一种保存和回放 ROS 信息数据的格式。
Master在计算图中充当名称(Names)服务器,存储 ROS 节点的主话题和服务注册信息。节点与主节点通信以报告它们的注册信息。当这些节点与主节点通信时,它们可以接收关于其他已注册节点的信息,并根据需要建立连接。
节点直接连接到其他节点;。Master 只提供查找信息,很像 DNS 服务器。订阅话题的节点将请求来自发布该主题的节点的连接,并将通过商定的连接协议建立该连接。ROS 中最常用的协议为 TCPROS,它使用标准的 TCP/IP 套接字。
ROS社区层次
发行版(Distribution)
The ROS Wiki
名称(Names)
图资源名称(Graph Resource Names)
图资源名称提供了一个层次化的命名结构,用于 ROS 计算图中的所有资源,如节点、参数、主题和服务。
在 ROS 中有四种类型的图资源名称: base、 relative、 global 和 private,它们具有以下语法:
Node | Relative (default) | Global | Private |
---|---|---|---|
/node1 | bar -> /bar | /bar -> /bar | ~bar -> /node1/bar |
/wg/node2 | bar -> /wg/bar | /bar -> /bar | ~bar -> /wg/node2/bar |
/wg/node3 | foo/bar -> /wg/foo/bar | /foo/bar -> /foo/bar | ~foo/bar -> /wg/node3/foo/bar |
包资源名称(Package Resource Names)
包资源名称与文件路径非常相似,只是它们要短得多。这是由于 ROS 能够在磁盘上定位软件包并对其内容做出额外的假设。
包资源名称非常简单: 它们只是资源所在的包的名称加上资源的名称。
例如,名称“ std_msgs/String”指的是“ std_msgs”包中的“ String”消息类型。