ROS的分布式架构主要通过以下几个方面实现:
节点与节点管理器
节点(Node):ROS系统由多个节点组成,每个节点是一个执行特定功能的进程,可通过发布和订阅消息与其他节点通信。节点可以用C++、Python等多种编程语言编写,运行在不同的计算机上。
节点管理器(Node Master):在ROS中,节点管理器负责管理节点的注册和通信。节点在启动时向节点管理器注册自己的信息,包括节点名称、话题和服务等。节点管理器维护着节点的注册表,使得节点之间能够相互发现和通信。
通信机制
话题(Topic)通信:话题是ROS中最常见的通信方式,用于节点之间的异步通信。节点可以发布消息到特定话题,也可以订阅特定话题以接收消息。话题通信模式基于发布-订阅模型,发布者和订阅者之间解耦,适合不需要即时响应的场景。
服务(Service)通信:服务提供了一种请求-响应的同步通信机制。客户端发送请求到服务端,服务端处理请求并返回响应,适用于需要即时反馈的场景。
操作(Action)通信:操作是一种用于执行长时间运行任务的通信机制,结合了话题和服务的特点。客户端发送目标请求给操作服务器,接收任务进度反馈以及最终结果。
分布式网络搭建
IP地址设置:确保不同计算机的底层链路联通,设置对方的IP地址和计算机名,通过Ping命令测试网络是否联通。
ROS_MASTER_URI设置:在从机端设置ROS_MASTER_URI环境变量,指定ROS Master的位置,以便从机能够找到ROS Master并进行通信。
参数服务器
ROS的参数服务器允许节点在全局范围内存储和检索参数,节点可以通过rospy库中的API来设置和获取参数。参数服务器使得节点可以共享配置信息、初始化数据以及其他需要在多个节点间共享的数据。