Files
Uni-Lab-OS/unilabos/registry/devices/laiyu_liquid.yaml
ZiWei b263a7e679 Workshop bj (#99)
* Add LaiYu Liquid device integration and tests

Introduce LaiYu Liquid device implementation, including backend, controllers, drivers, configuration, and resource files. Add hardware connection, tip pickup, and simplified test scripts, as well as experiment and registry configuration for LaiYu Liquid. Documentation and .gitignore for the device are also included.

* feat(LaiYu_Liquid): 重构设备模块结构并添加硬件文档

refactor: 重新组织LaiYu_Liquid模块目录结构
docs: 添加SOPA移液器和步进电机控制指令文档
fix: 修正设备配置中的最大体积默认值
test: 新增工作台配置测试用例
chore: 删除过时的测试脚本和配置文件

* add

* 重构: 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py 并更新所有导入引用

- 使用 git mv 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py
- 更新所有相关文件中的导入引用
- 保持代码功能不变,仅改善命名一致性
- 测试确认所有导入正常工作

* 修复: 在 core/__init__.py 中添加 LaiYuLiquidBackend 导出

- 添加 LaiYuLiquidBackend 到导入列表
- 添加 LaiYuLiquidBackend 到 __all__ 导出列表
- 确保所有主要类都可以正确导入

* 修复大小写文件夹名字
2025-10-12 22:54:38 +08:00

1963 lines
56 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

laiyu_liquid:
category:
- liquid_handler
- workstation
- laiyu_liquid
class:
action_value_mappings:
add_liquid:
feedback: {}
goal:
asp_vols: asp_vols
dis_vols: dis_vols
flow_rates: flow_rates
offsets: offsets
reagent_sources: reagent_sources
targets: targets
use_channels: use_channels
goal_default:
asp_vols:
- 0.0
blow_out_air_volume:
- 0.0
dis_vols:
- 0.0
flow_rates:
- 0.0
is_96_well: false
liquid_height:
- 0.0
mix_liquid_height: 0.0
mix_rate: 0
mix_time: 0
mix_vol: 0
none_keys:
- ''
offsets:
- x: 0.0
y: 0.0
z: 0.0
reagent_sources:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
spread: ''
targets:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
use_channels:
- 0
handles: {}
placeholder_keys:
reagent_sources: unilabos_resources
targets: unilabos_resources
result: {}
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerAdd_Feedback
type: object
goal:
properties:
asp_vols:
items:
type: number
type: array
blow_out_air_volume:
items:
type: number
type: array
dis_vols:
items:
type: number
type: array
flow_rates:
items:
type: number
type: array
is_96_well:
type: boolean
liquid_height:
items:
type: number
type: array
mix_liquid_height:
type: number
mix_rate:
maximum: 2147483647
minimum: -2147483648
type: integer
mix_time:
maximum: 2147483647
minimum: -2147483648
type: integer
mix_vol:
maximum: 2147483647
minimum: -2147483648
type: integer
none_keys:
items:
type: string
type: array
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
reagent_sources:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: reagent_sources
type: object
type: array
spread:
type: string
targets:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: targets
type: object
type: array
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
required:
- asp_vols
- dis_vols
- reagent_sources
- targets
- use_channels
- flow_rates
- offsets
- liquid_height
- blow_out_air_volume
- spread
- is_96_well
- mix_time
- mix_vol
- mix_rate
- mix_liquid_height
- none_keys
title: LiquidHandlerAdd_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerAdd_Result
type: object
required:
- goal
title: LiquidHandlerAdd
type: object
type: LiquidHandlerAdd
aspirate:
feedback: {}
goal:
flow_rates: flow_rates
resources: resources
use_channels: use_channels
vols: vols
goal_default:
blow_out_air_volume:
- 0.0
flow_rates:
- 0.0
liquid_height:
- 0.0
offsets:
- x: 0.0
y: 0.0
z: 0.0
resources:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
spread: ''
use_channels:
- 0
vols:
- 0.0
handles: {}
placeholder_keys:
resources: unilabos_resources
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerAspirate_Feedback
type: object
goal:
properties:
blow_out_air_volume:
items:
type: number
type: array
flow_rates:
items:
type: number
type: array
liquid_height:
items:
type: number
type: array
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
resources:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: resources
type: object
type: array
spread:
type: string
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
vols:
items:
type: number
type: array
required:
- resources
- vols
- use_channels
- flow_rates
- offsets
- liquid_height
- blow_out_air_volume
- spread
title: LiquidHandlerAspirate_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerAspirate_Result
type: object
required:
- goal
title: LiquidHandlerAspirate
type: object
type: LiquidHandlerAspirate
dispense:
feedback: {}
goal:
flow_rates: flow_rates
resources: resources
use_channels: use_channels
vols: vols
goal_default:
blow_out_air_volume:
- 0
flow_rates:
- 0.0
offsets:
- x: 0.0
y: 0.0
z: 0.0
resources:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
spread: ''
use_channels:
- 0
vols:
- 0.0
handles: {}
placeholder_keys:
resources: unilabos_resources
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerDispense_Feedback
type: object
goal:
properties:
blow_out_air_volume:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
flow_rates:
items:
type: number
type: array
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
resources:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: resources
type: object
type: array
spread:
type: string
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
vols:
items:
type: number
type: array
required:
- resources
- vols
- use_channels
- flow_rates
- offsets
- blow_out_air_volume
- spread
title: LiquidHandlerDispense_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerDispense_Result
type: object
required:
- goal
title: LiquidHandlerDispense
type: object
type: LiquidHandlerDispense
drop_tip:
feedback: {}
goal:
use_channels: use_channels
goal_default:
allow_nonzero_volume: false
offsets:
- x: 0.0
y: 0.0
z: 0.0
tip_spots:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
use_channels:
- 0
handles: {}
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerDropTips_Feedback
type: object
goal:
properties:
allow_nonzero_volume:
type: boolean
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
tip_spots:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: tip_spots
type: object
type: array
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
required:
- tip_spots
- use_channels
- offsets
- allow_nonzero_volume
title: LiquidHandlerDropTips_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerDropTips_Result
type: object
required:
- goal
title: LiquidHandlerDropTips
type: object
type: LiquidHandlerDropTips
move_to:
feedback: {}
goal:
channel: channel
dis_to_top: dis_to_top
well: well
goal_default:
channel: 0
dis_to_top: 0.0
well:
category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
handles: {}
placeholder_keys:
well: unilabos_resources
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerMoveTo_Feedback
type: object
goal:
properties:
channel:
maximum: 2147483647
minimum: -2147483648
type: integer
dis_to_top:
type: number
well:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: well
type: object
required:
- well
- dis_to_top
- channel
title: LiquidHandlerMoveTo_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerMoveTo_Result
type: object
required:
- goal
title: LiquidHandlerMoveTo
type: object
type: LiquidHandlerMoveTo
pick_up_tip:
feedback: {}
goal:
tip_rack: tip_rack
use_channels: use_channels
goal_default:
offsets:
- x: 0.0
y: 0.0
z: 0.0
tip_spots:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
use_channels:
- 0
handles: {}
placeholder_keys:
tip_rack: unilabos_resources
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerPickUpTips_Feedback
type: object
goal:
properties:
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
tip_spots:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: tip_spots
type: object
type: array
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
required:
- tip_spots
- use_channels
- offsets
title: LiquidHandlerPickUpTips_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerPickUpTips_Result
type: object
required:
- goal
title: LiquidHandlerPickUpTips
type: object
type: LiquidHandlerPickUpTips
setup:
feedback: {}
goal:
string: string
goal_default:
string: ''
handles: {}
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: StrSingleInput_Feedback
type: object
goal:
properties:
string:
type: string
required:
- string
title: StrSingleInput_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: StrSingleInput_Result
type: object
required:
- goal
title: StrSingleInput
type: object
type: StrSingleInput
stop:
feedback: {}
goal:
string: string
goal_default:
string: ''
handles: {}
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: StrSingleInput_Feedback
type: object
goal:
properties:
string:
type: string
required:
- string
title: StrSingleInput_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: StrSingleInput_Result
type: object
required:
- goal
title: StrSingleInput
type: object
type: StrSingleInput
transfer:
feedback: {}
goal:
source: source
target: target
tip_position: tip_position
tip_rack: tip_rack
volume: volume
goal_default:
asp_flow_rates:
- 0.0
asp_vols:
- 0.0
blow_out_air_volume:
- 0.0
delays:
- 0
dis_flow_rates:
- 0.0
dis_vols:
- 0.0
is_96_well: false
liquid_height:
- 0.0
mix_liquid_height: 0.0
mix_rate: 0
mix_stage: ''
mix_times:
- 0
mix_vol: 0
none_keys:
- ''
offsets:
- x: 0.0
y: 0.0
z: 0.0
sources:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
spread: ''
targets:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
tip_racks:
- category: ''
children: []
config: ''
data: ''
id: ''
name: ''
parent: ''
pose:
orientation:
w: 1.0
x: 0.0
y: 0.0
z: 0.0
position:
x: 0.0
y: 0.0
z: 0.0
sample_id: ''
type: ''
touch_tip: false
use_channels:
- 0
handles: {}
placeholder_keys:
source: unilabos_resources
target: unilabos_resources
tip_rack: unilabos_resources
result:
success: success
schema:
description: ''
properties:
feedback:
properties: {}
required: []
title: LiquidHandlerTransfer_Feedback
type: object
goal:
properties:
asp_flow_rates:
items:
type: number
type: array
asp_vols:
items:
type: number
type: array
blow_out_air_volume:
items:
type: number
type: array
delays:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
dis_flow_rates:
items:
type: number
type: array
dis_vols:
items:
type: number
type: array
is_96_well:
type: boolean
liquid_height:
items:
type: number
type: array
mix_liquid_height:
type: number
mix_rate:
maximum: 2147483647
minimum: -2147483648
type: integer
mix_stage:
type: string
mix_times:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
mix_vol:
maximum: 2147483647
minimum: -2147483648
type: integer
none_keys:
items:
type: string
type: array
offsets:
items:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: offsets
type: object
type: array
sources:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: sources
type: object
type: array
spread:
type: string
targets:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: targets
type: object
type: array
tip_racks:
items:
properties:
category:
type: string
children:
items:
type: string
type: array
config:
type: string
data:
type: string
id:
type: string
name:
type: string
parent:
type: string
pose:
properties:
orientation:
properties:
w:
type: number
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
- w
title: orientation
type: object
position:
properties:
x:
type: number
y:
type: number
z:
type: number
required:
- x
- y
- z
title: position
type: object
required:
- position
- orientation
title: pose
type: object
sample_id:
type: string
type:
type: string
required:
- id
- name
- sample_id
- children
- parent
- type
- category
- pose
- config
- data
title: tip_racks
type: object
type: array
touch_tip:
type: boolean
use_channels:
items:
maximum: 2147483647
minimum: -2147483648
type: integer
type: array
required:
- asp_vols
- dis_vols
- sources
- targets
- tip_racks
- use_channels
- asp_flow_rates
- dis_flow_rates
- offsets
- touch_tip
- liquid_height
- blow_out_air_volume
- spread
- is_96_well
- mix_stage
- mix_times
- mix_vol
- mix_rate
- mix_liquid_height
- delays
- none_keys
title: LiquidHandlerTransfer_Goal
type: object
result:
properties:
return_info:
type: string
success:
type: boolean
required:
- return_info
- success
title: LiquidHandlerTransfer_Result
type: object
required:
- goal
title: LiquidHandlerTransfer
type: object
type: LiquidHandlerTransfer
module: unilabos.devices.laiyu_liquid.core.LaiYu_Liquid:LaiYuLiquid
status_types:
current_position: list
current_volume: float
is_connected: bool
is_initialized: bool
tip_attached: bool
type: python
config_info:
- default: /dev/cu.usbserial-3130
description: RS485转USB端口
name: port
type: string
- default: 1
description: 设备地址
name: address
type: integer
- default: 9600
description: 波特率
name: baudrate
type: integer
- default: 5.0
description: 通信超时时间 (秒)
name: timeout
type: number
- default: 340.0
description: 工作台宽度 (mm)
name: deck_width
type: number
- default: 250.0
description: 工作台高度 (mm)
name: deck_height
type: number
- default: 160.0
description: 工作台深度 (mm)
name: deck_depth
type: number
- default: 77000.0
description: 最大体积 (μL)
name: max_volume
type: number
- default: 0.1
description: 最小体积 (μL)
name: min_volume
type: number
- default: 100.0
description: 最大速度 (mm/s)
name: max_speed
type: number
- default: 50.0
description: 加速度 (mm/s²)
name: acceleration
type: number
- default: 50.0
description: 安全高度 (mm)
name: safe_height
type: number
- default: 10.0
description: 吸头拾取深度 (mm)
name: tip_pickup_depth
type: number
- default: true
description: 液面检测功能
name: liquid_detection
type: boolean
- default: 10.0
description: X轴最小安全边距 (mm)
name: safety_margin_x_min
type: number
- default: 10.0
description: X轴最大安全边距 (mm)
name: safety_margin_x_max
type: number
- default: 10.0
description: Y轴最小安全边距 (mm)
name: safety_margin_y_min
type: number
- default: 10.0
description: Y轴最大安全边距 (mm)
name: safety_margin_y_max
type: number
- default: 20.0
description: Z轴安全间隙 (mm)
name: safety_margin_z_clearance
type: number
description: LaiYu液体处理工作站基于RS485通信协议的自动化液体处理设备。集成XYZ三轴运动平台和SOPA气动式移液器支持精确的液体分配和转移操作。具备完整的硬件控制、资源管理和标准化接口适用于实验室自动化液体处理、样品制备、试剂分配等应用场景。设备通过RS485总线控制步进电机和移液器提供高精度的位置控制和液体处理能力。
handles: []
icon: ''
init_param_schema:
config:
properties:
acceleration:
default: 50.0
description: 加速度
type: number
address:
default: 1
description: 设备地址
type: integer
baudrate:
default: 9600
description: 波特率
type: integer
deck_depth:
default: 160.0
description: 工作台深度
type: number
deck_height:
default: 250.0
description: 工作台高度
type: number
deck_width:
default: 340.0
description: 工作台宽度
type: number
liquid_detection:
default: true
description: 液面检测功能
type: boolean
max_speed:
default: 100.0
description: 最大速度
type: number
max_volume:
default: 77000.0
description: 最大体积
type: number
min_volume:
default: 0.1
description: 最小体积
type: number
port:
default: /dev/cu.usbserial-3130
description: RS485转USB端口
type: string
safe_height:
default: 50.0
description: 安全高度
type: number
safety_margin_x_max:
default: 10.0
description: X轴最大安全边距
type: number
safety_margin_x_min:
default: 10.0
description: X轴最小安全边距
type: number
safety_margin_y_max:
default: 10.0
description: Y轴最大安全边距
type: number
safety_margin_y_min:
default: 10.0
description: Y轴最小安全边距
type: number
safety_margin_z_clearance:
default: 20.0
description: Z轴安全间隙
type: number
timeout:
default: 5.0
description: 通信超时时间
type: number
tip_pickup_depth:
default: 10.0
description: 吸头拾取深度
type: number
required:
- port
type: object
data:
properties:
current_position:
description: 当前XYZ位置
items:
type: number
type: array
current_volume:
description: 当前液体体积
type: number
is_connected:
description: 设备连接状态
type: boolean
is_initialized:
description: 设备初始化状态
type: boolean
tip_attached:
description: 是否装载吸头
type: boolean
required:
- current_position
- tip_attached
- current_volume
- is_connected
- is_initialized
type: object
model:
mesh: laiyu_liquid_handler
type: device
version: 1.0.0