设备抽象、指令集与通信中间件

Uni-Lab 操作系统的目的是将不同类型和厂家的实验仪器进行抽象统一,对应用层提供服务。因此,理清实验室设备之间的业务逻辑至关重要。

设备间通信模式

话题(一对多发送,一对多订阅)

典型的话题通信有:

  • 传感器连续发送设备状态和数据;

  • 连续时间控制器发送控制指令,如控温、连续称量、机械臂轨迹跟随、视觉识别操作等

服务(短时请求与响应)

典型的服务通信有:

  • 查/改全局参数如物料、设备

  • 使用其他通信接口发送/接收数据

动作(长时任务启动,随后连续收到反馈值,直到达到目标)

动作机制主要用于处理运行时长较长的单点任务或任务组合,如:

  • 执行工作流

  • 执行工作流的子动作

通信指令集

Uni-Lab 目前使用 ROS2 作为通信中间件,因此大量使用其标准消息作为话题、服务、动作。新增指令位于仓库中的 unilabos_msgs ,各类实验动作指令集分类整理于 Uni-Lab 动作指令集

通信中间件层

通信中间件层的一个重要设计思想是:将业务逻辑开发,与实际部署中的通信和运行解耦。开发者在实现具体业务逻辑时,可以不用关心最终运行时的 部署方式通信方式 。当用户开发完成后,再根据实际情况决定部署、通信方案。

  • 对于 “流动化学实验室”和“桌面机器人” 来说,一台电脑通过串口控制所有设备足够。此时在这台电脑启动 Uni-Lab 作为 Server 即可。

  • 对于 “移动机器人”大型实验室 ,典型场景是,一个实验室由多台不同位置的工作站组成,每台大型设备有一台工控机,通过串口再控制子设备。同时有 AGV/机械臂 负责转运。此时,在每台工控机启动 Uni-Lab,完成通信中间件层的包装之后,只要处于同一局域网下,他们将能自动互相发现并组成分布式的“Uni-Lab-Edge Server”。

  • 通信中间件层的分布式机制,使得 Node 之间做好了隔离,一台设备故障时只需重启单个 Node。很像微服务、微内核的设计理念。