mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
* 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__ 导出列表 - 确保所有主要类都可以正确导入 * 修复大小写文件夹名字
1963 lines
56 KiB
YAML
1963 lines
56 KiB
YAML
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 |