注册表概述
Uni-Lab-OS注册表系统是一个基于YAML配置的设备和资源类型管理平台,为实验室自动化提供统一的设备定义、发现和管理能力。大大提高了系统的可扩展性和维护性。
核心功能模块
设备类型注册表管理
- 功能描述: 通过YAML文件定义和管理各类实验设备的类型信息
- 技术实现: Registry类的单例模式管理,支持多路径加载
- 支持的设备类型:
- 泵和阀门设备 (pump_and_valve)
- 有机化学杂项设备 (organic_miscellaneous)
- 真空和净化设备 (vacuum_and_purge)
- 通信接口设备 (device_comms)
资源类型注册表管理
- 功能描述: 管理实验室物理资源和耗材的类型定义
- 技术实现: load_resource_types()方法处理resources目录下的YAML文件
动态类型解析和映射
- 功能描述: 将YAML中的字符串类型名称解析为实际的ROS2消息类
- 技术实现: _replace_type_with_class()方法进行类型替换
设备动作映射系统
- 功能描述: 定义设备支持的动作及其目标、反馈和结果参数映射
- 配置示例: action_value_mappings字段定义动作类型和参数映射
技术架构
注册表文件组织结构
registry/
├── devices/ # 设备类型定义
├── device_comms/ # 通信接口定义
└── resources/ # 资源类型定义
设备定义规范
每个设备定义包含以下核心字段:
- class: 设备的模块路径和驱动程序语言
- status_types: 设备状态属性及其ROS2消息类型
- action_value_mappings: 设备动作映射定义
- schema: 设备属性的JSON Schema定义
全局访问模式
单例模式: 通过lab_registry全局实例提供系统级访问
构建函数: build_registry()支持自定义注册表路径
集成接口
ROS2设备框架集成
- 与DeviceNodeResourceTracker集成进行设备资源跟踪
- 支持PyLabRobot资源创建和状态管理
Web API集成
- 提供设备和资源信息查询接口
- 支持JSON Schema生成用于Web界面
扩展性设计
多语言设备驱动支持
- Python类设备驱动
- C#类设备驱动支持
自定义注册表路径
- 支持通过--registry_path参数添加自定义注册表
- 运行时动态路径管理
使用场景
设备接入场景
开发者可通过创建YAML配置文件快速接入新设备类型,无需修改核心代码
实验室配置场景
支持通过图形化配置或JSON文件定义实验室物理布局和设备连接关系