Files
Uni-Lab-OS/unilabos/devices/liquid_handling/laiyu/docs
q434343 448e0074b7 3d sim (#97)
* 修改lh的json启动

* 修改lh的json启动

* 修改backend,做成sim的通用backend

* 修改yaml的地址,3D模型适配网页生产环境

* 添加laiyu硬件连接

* 修改移液枪的状态判断方法,

修改移液枪的状态判断方法,
添加三轴的表定点与零点之间的转换
添加三轴真实移动的backend

* 修改laiyu移液站

简化移动方法,
取消软件限制位置,
修改当值使用Z轴时也需要重新复位Z轴的问题

* 更新lh以及laiyu workshop

1,现在可以直接通过修改backend,适配其他的移液站,主类依旧使用LiquidHandler,不用重新编写

2,修改枪头判断标准,使用枪头自身判断而不是类的判断,

3,将归零参数用毫米计算,方便手动调整,

4,修改归零方式,上电使用机械归零,确定机械零点,手动归零设置工作区域零点方便计算,二者互不干涉

* 修改枪头动作

* 修改虚拟仿真方法

---------

Co-authored-by: zhangshixiang <@zhangshixiang>
Co-authored-by: Junhan Chang <changjh@dp.tech>
2025-11-15 03:11:30 +08:00
..
2025-11-15 03:11:30 +08:00
2025-11-15 03:11:30 +08:00
2025-11-15 03:11:30 +08:00

LaiYu_Liquid 液体处理工作站 - 生产就绪版本

概述

LaiYu_Liquid 是一个完全集成到 UniLabOS 系统的自动化液体处理工作站,基于 RS485 通信协议,专为精确的液体分配和转移操作而设计。本模块已完成生产环境部署准备,提供完整的硬件控制、资源管理和标准化接口。

系统组成

硬件组件

  • XYZ三轴运动平台: 3个RS485步进电机驱动地址X轴=0x01, Y轴=0x02, Z轴=0x03
  • SOPA气动式移液器: RS485总线控制支持精密液体处理操作
  • 通信接口: RS485转USB模块默认波特率115200
  • 机械结构: 稳固工作台面支持离心管架、96孔板等标准实验耗材

软件架构

  • 驱动层: 底层硬件通信驱动支持RS485协议
  • 控制层: 高级控制逻辑和坐标系管理
  • 抽象层: 完全符合UniLabOS标准的液体处理接口
  • 资源层: 标准化的实验器具和耗材管理

🎯 生产就绪组件

核心驱动程序 (drivers/)

  • sopa_pipette_driver.py - SOPA移液器完整驱动

    • 支持液体吸取、分配、检测
    • 完整的错误处理和状态管理
    • 生产级别的通信协议实现
  • xyz_stepper_driver.py - XYZ三轴步进电机驱动

    • 精确的位置控制和运动规划
    • 安全限位和错误检测
    • 高性能运动控制算法

高级控制器 (controllers/)

  • pipette_controller.py - 移液控制器

    • 封装高级液体处理功能
    • 支持多种液体类型和处理参数
    • 智能错误恢复机制
  • xyz_controller.py - XYZ运动控制器

    • 坐标系管理和转换
    • 运动路径优化
    • 安全运动控制

UniLabOS集成 (core/LaiYu_Liquid.py)

  • 完整的液体处理抽象接口
  • 标准化的资源管理系统
  • 与PyLabRobot兼容的后端实现
  • 生产级别的错误处理和日志记录

资源管理系统

  • laiyu_liquid_res.py - 标准化资源定义
    • 96孔板、离心管架、枪头架等标准器具
    • 自动化的资源创建和配置函数
    • 与工作台布局的完美集成

配置管理 (config/)

  • config/deck.json - 工作台布局配置

    • 精确的空间定义和槽位管理
    • 支持多种实验器具的标准化放置
    • 可扩展的配置架构
  • __init__.py - 模块集成和导出

    • 完整的API导出和版本管理
    • 依赖检查和安装验证
    • 专业的模块信息展示

可视化支持

  • rviz_backend.py - RViz可视化后端
    • 实时运动状态可视化
    • 液体处理过程监控
    • 与ROS系统的无缝集成

🚀 核心功能特性

液体处理能力

  • 精密体积控制: 支持1-1000μL精确分配
  • 多种液体类型: 水性、有机溶剂、粘稠液体等
  • 智能检测: 液位检测、气泡检测、堵塞检测
  • 自动化流程: 完整的吸取-转移-分配工作流

运动控制系统

  • 三轴精密定位: 微米级精度控制
  • 路径优化: 智能运动规划和碰撞避免
  • 安全机制: 限位保护、紧急停止、错误恢复
  • 坐标系管理: 工作坐标与机械坐标的自动转换

资源管理

  • 标准化器具: 支持96孔板、离心管架、枪头架等
  • 状态跟踪: 实时监控液体体积、枪头状态等
  • 自动配置: 基于JSON的灵活配置系统
  • 扩展性: 易于添加新的器具类型

📁 目录结构

LaiYu_Liquid/
├── __init__.py              # 模块初始化和API导出
├── readme.md               # 本文档
├── rviz_backend.py         # RViz可视化后端
├── backend/                # 后端驱动模块
│   ├── __init__.py
│   └── laiyu_backend.py    # PyLabRobot兼容后端
├── core/                   # 核心模块
│   ├── core/
│   │   └── LaiYu_Liquid.py    # 主设备类
│   ├── abstract_protocol.py # 抽象协议
│   └── laiyu_liquid_res.py # 设备资源定义
├── config/                 # 配置文件目录
│   └── deck.json          # 工作台布局配置
├── controllers/           # 高级控制器
│   ├── __init__.py
│   ├── pipette_controller.py  # 移液控制器
│   └── xyz_controller.py      # XYZ运动控制器
├── docs/                  # 技术文档
│   ├── SOPA气动式移液器RS485控制指令.md
│   ├── 步进电机控制指令.md
│   └── hardware/          # 硬件相关文档
├── drivers/               # 底层驱动程序
│   ├── __init__.py
│   ├── sopa_pipette_driver.py  # SOPA移液器驱动
│   └── xyz_stepper_driver.py   # XYZ步进电机驱动
└── tests/                 # 测试文件

🔧 快速开始

1. 安装和验证

# 验证模块安装
from unilabos.devices.laiyu_liquid import (
    LaiYuLiquid,
    LaiYuLiquidConfig,
    create_quick_setup,
    print_module_info
)

# 查看模块信息
print_module_info()

# 快速创建默认资源
resources = create_quick_setup()
print(f"已创建 {len(resources)} 个资源")

2. 基本使用示例

from unilabos.devices.LaiYu_Liquid import (
    create_quick_setup, 
    create_96_well_plate,
    create_laiyu_backend
)

# 快速创建默认资源
resources = create_quick_setup()
print(f"创建了以下资源: {list(resources.keys())}")

# 创建96孔板
plate_96 = create_96_well_plate("test_plate")
print(f"96孔板包含 {len(plate_96.children)} 个孔位")

# 创建后端实例用于PyLabRobot集成
backend = create_laiyu_backend("LaiYu_Device")
print(f"后端设备: {backend.name}")

3. 后端驱动使用

from unilabos.devices.laiyu_liquid.backend import create_laiyu_backend

# 创建后端实例
backend = create_laiyu_backend("LaiYu_Liquid_Station")

# 连接设备
await backend.connect()

# 设备归位
await backend.home_device()

# 获取设备状态
status = await backend.get_status()
print(f"设备状态: {status}")

# 断开连接
await backend.disconnect()

4. 资源管理示例

from unilabos.devices.LaiYu_Liquid import (
    create_centrifuge_tube_rack,
    create_tip_rack,
    load_deck_config
)

# 加载工作台配置
deck_config = load_deck_config()
print(f"工作台尺寸: {deck_config['size_x']}x{deck_config['size_y']}mm")

# 创建不同类型的资源
tube_rack = create_centrifuge_tube_rack("sample_rack")
tip_rack = create_tip_rack("tip_rack_200ul")

print(f"离心管架: {tube_rack.name}, 容量: {len(tube_rack.children)} 个位置")
print(f"枪头架: {tip_rack.name}, 容量: {len(tip_rack.children)} 个枪头")

🔍 技术架构

坐标系统

  • 机械坐标: 基于步进电机的原始坐标系统
  • 工作坐标: 用户友好的实验室坐标系统
  • 自动转换: 透明的坐标系转换和校准

通信协议

  • RS485总线: 高可靠性工业通信标准
  • Modbus协议: 标准化的设备通信协议
  • 错误检测: 完整的通信错误检测和恢复

安全机制

  • 限位保护: 硬件和软件双重限位保护
  • 紧急停止: 即时停止所有运动和操作
  • 状态监控: 实时设备状态监控和报警

🧪 验证和测试

功能验证

# 验证模块安装
from unilabos.devices.laiyu_liquid import validate_installation
validate_installation()

# 查看模块信息
from unilabos.devices.laiyu_liquid import print_module_info
print_module_info()

硬件连接测试

# 测试SOPA移液器连接
from unilabos.devices.laiyu_liquid.drivers import SOPAPipette, SOPAConfig

config = SOPAConfig(port="/dev/cu.usbserial-3130", address=4)
pipette = SOPAPipette(config)
success = pipette.connect()
print(f"SOPA连接状态: {'成功' if success else '失败'}")

📚 维护和支持

日志记录

  • 结构化日志: 使用Python logging模块的专业日志记录
  • 错误追踪: 详细的错误信息和堆栈跟踪
  • 性能监控: 操作时间和性能指标记录

配置管理

  • JSON配置: 灵活的JSON格式配置文件
  • 参数验证: 自动配置参数验证和错误提示
  • 热重载: 支持配置文件的动态重载

扩展性

  • 模块化设计: 易于扩展和定制的模块化架构
  • 插件接口: 支持第三方插件和扩展
  • API兼容: 向后兼容的API设计

📞 技术支持

常见问题

  1. 串口权限问题: 确保用户有串口访问权限
  2. 依赖库安装: 使用pip安装所需的Python库
  3. 设备连接: 检查RS485适配器和设备地址配置

联系方式

  • 技术文档: 查看UniLabOS官方文档
  • 问题反馈: 通过GitHub Issues提交问题
  • 社区支持: 加入UniLabOS开发者社区

LaiYu_Liquid v1.0.0 - 生产就绪的液体处理工作站集成模块
© 2024 UniLabOS Project. All rights reserved.