1. 智能机器人工作流程
2. 基于ROS的实现方式
3. ROS通信层术语
- Resource:构成计算图的一切东西都可以称为资源,比如:node,topic,service,parameter等
- 为了方便使用这些资源,需要对这些资源进行命名,而且要求在系统中具有唯一性
- Namepace:为了避免名字冲突,ROS提出了一种策略:给同一个模块的资源名字加上一个“前缀”,这个前缀就叫做名字空间(Namespace)
- Node:是一个数据处理或者执行动作的进程,是计算图中的独立个体,系统中的独立功能单元。
- Master node:计算图中的管理通信节点所有信息的中心节点(超级节点)
-
- 它跟踪节点中的publisher与subscriber,service 的server与client,记录其他节点的位置(uri标明,host与port),并将这些信息通知给需要建立链接的节点
- ROS 中无时间同步!!ROS time 为当前系统时间!多机需要同步系统时间的工具来实现RPS内时钟同步。
- Topic:ROS中广为使用的publish-subscribe异步的通信模式。这种方式将信息的产生和使用双方解耦,首发双方的信息都是由master node 进行管理。
-
- 常用于不断更新的,含有较少逻辑处理的数据通信
- Service:用于处理ROS通信中的同步通信,采用server/client 语义。
-
- 每个service type拥有 request 与 response两部分,对于service中的Server,ROS不会检查重名(name conflict),只有最后注册的server会生效,与client建立连接。
- 常用于资料量较小,但有强逻辑处理的数据交换。
- Parameter:可以看作为ROS系统运行时中定义的全局变量,而Master node 中有Parameter server 来维护这些变量。
-
- 这些变量的命名同样遵循namespace的命名规则
- namespace的存在使得parameter 拥有非常清晰的层次,有效避免重名
- 而且对parameter访问可以单独访问也可以树状访问(层层解析namespace)
- URI
-
- 作用:定位node在分布式系统中的位置
- 格式为: protocol://host:port
- Protocol一般为http或者 rosrpc,host为 hostname 或者 IP 地址,port则为端口号
- 比如,在多台计算机上运行ROS的时候,通常需要指定ROS Master的位置(整个系统只能有一个)
- ROS_MASTER_URI = http://192.168.2.1:11311
- XML-RPC:ROS 通信网路中的基础,一种通用远程调用协议
-
- ROS通过远程过程调用来建立节点之间的连接以及数据传输,ROS中的远程过程调用通过XML-RPC协议实现
- 用于 master node 与 其他节点之间的信息交换
- 传输文本使用XML支持(支持语言类型多)
- 调用时无状态(逻辑较为简单)
- ROS中topic/service p2p传输时的node name信息交换与parameter server 都是由XML-RPC进行支持
- Parameter server 直接使用XML-RPC的数据类型:
-
- int 或者 i4 是32位的有符号整型,十进制表示中,前缀-号则为负数。
- boolean 只有两种取值,0和1,用于表示布尔类型。
- double 实数类型,前缀-号表示负数。
- dataTime.iso8601 日期时间,用iso-8601格式表示。
- base64 用 base64算法编码的二进制字符串。
- array values组成的表,在data实体下一层
- Struct 又称为map 表示关系的集合,每一个struct实体是由一个 name 与 value的键值对组成。