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 auto-add_resource: feedback: {} goal: {} goal_default: name: null position: null resource_type: null handles: {} placeholder_keys: {} result: {} schema: description: '' properties: feedback: {} goal: properties: name: type: string position: items: type: number type: array resource_type: type: string required: - name - resource_type - position type: object result: {} required: - goal title: add_resource参数 type: object type: UniLabJsonCommand 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_main:LaiYuLiquid status_types: current_position: String current_volume: float is_connected: bool is_initialized: bool status: dict 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: config: type: string required: [] type: object data: properties: current_position: items: type: number type: array current_volume: type: number is_connected: type: boolean is_initialized: type: boolean status: type: object tip_attached: type: boolean required: - current_position - current_volume - is_connected - is_initialized - tip_attached - status type: object model: mesh: laiyu_liquid_handler type: device version: 1.0.0