mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-08 16:05:14 +00:00
Compare commits
91 Commits
v0.9.7
...
4decd9a174
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4decd9a174 | ||
|
|
83c765f0ab | ||
|
|
3600b6f934 | ||
|
|
f0576e5666 | ||
|
|
8e1dbb56b1 | ||
|
|
013c25f3aa | ||
|
|
3d71c8bc78 | ||
|
|
42f0994147 | ||
|
|
4223f9b72c | ||
|
|
bec58e1301 | ||
|
|
6f9773157c | ||
|
|
da50e435c1 | ||
|
|
34e03bbd6e | ||
|
|
ad5168c3eb | ||
|
|
2dde5b6aae | ||
|
|
45a73e2f6d | ||
|
|
fbff27a52d | ||
|
|
1b190ee62f | ||
|
|
83abf877b5 | ||
|
|
f3637d4043 | ||
|
|
c12c2a876c | ||
|
|
6cdd8c18e8 | ||
|
|
3d60cb36b8 | ||
|
|
5df304bc64 | ||
|
|
6d5ada06de | ||
|
|
aad23596b6 | ||
|
|
b43f2321cd | ||
|
|
8617b1284f | ||
|
|
cd1e9a9f7d | ||
|
|
3d607db49a | ||
|
|
3dc62e3e99 | ||
|
|
d199fda9a5 | ||
|
|
ed2858a610 | ||
|
|
de28c50d8b | ||
|
|
e373220ce3 | ||
|
|
b6a3f17e9b | ||
|
|
49a9f05c51 | ||
|
|
32e370a562 | ||
|
|
852d10d751 | ||
|
|
b47f67d129 | ||
|
|
194985222e | ||
|
|
948f590b47 | ||
|
|
164417e1cf | ||
|
|
1a107cfd18 | ||
|
|
65d0cbe28a | ||
|
|
3c98c77cab | ||
|
|
d6b8104824 | ||
|
|
1223e05dcc | ||
|
|
a52133b7d0 | ||
|
|
80380d1f4b | ||
|
|
5668310401 | ||
|
|
78239ab1a3 | ||
|
|
fa5db06347 | ||
|
|
2b428080e7 | ||
|
|
9eb271f64e | ||
|
|
752442cb37 | ||
|
|
9d2bfec1dd | ||
|
|
5212d2d8eb | ||
|
|
44c191fe90 | ||
|
|
7a51b2adc1 | ||
|
|
2d034f728a | ||
|
|
8ab108c489 | ||
|
|
4dbb6649b4 | ||
|
|
dc197bffe8 | ||
|
|
49bb11b2a3 | ||
|
|
d407423aaa | ||
|
|
111c3f42e4 | ||
|
|
2990e70c25 | ||
|
|
0d24606d46 | ||
|
|
2baa232b86 | ||
|
|
b7a16cdfc8 | ||
|
|
8921bcd9fb | ||
|
|
5038219fe6 | ||
|
|
0d2f1be37a | ||
|
|
6b649bfdec | ||
|
|
ba6a43c594 | ||
|
|
ea6f25d1ce | ||
|
|
e5749a8058 | ||
|
|
09fc17429e | ||
|
|
bdf97be256 | ||
|
|
dbd1557095 | ||
|
|
ff8b75bf1f | ||
|
|
bed9720de3 | ||
|
|
1e01eae896 | ||
|
|
6155ec2798 | ||
|
|
279c5ed519 | ||
|
|
5b4f580a6f | ||
|
|
e971424220 | ||
|
|
82881f5882 | ||
|
|
bb1cac0dbd | ||
|
|
275e3a36f7 |
@@ -18,7 +18,6 @@ if unilabos_dir not in sys.path:
|
|||||||
|
|
||||||
from unilabos.config.config import load_config, BasicConfig, _update_config_from_env
|
from unilabos.config.config import load_config, BasicConfig, _update_config_from_env
|
||||||
from unilabos.utils.banner_print import print_status, print_unilab_banner
|
from unilabos.utils.banner_print import print_status, print_unilab_banner
|
||||||
from unilabos.device_mesh.resource_visalization import ResourceVisualization
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
@@ -188,6 +187,7 @@ def main():
|
|||||||
if args_dict["visual"] != "disable":
|
if args_dict["visual"] != "disable":
|
||||||
enable_rviz = args_dict["visual"] == "rviz"
|
enable_rviz = args_dict["visual"] == "rviz"
|
||||||
if devices_and_resources is not None:
|
if devices_and_resources is not None:
|
||||||
|
from unilabos.device_mesh.resource_visalization import ResourceVisualization # 此处开启后,logger会变更为INFO,有需要请调整
|
||||||
resource_visualization = ResourceVisualization(devices_and_resources, args_dict["resources_config"] ,enable_rviz=enable_rviz)
|
resource_visualization = ResourceVisualization(devices_and_resources, args_dict["resources_config"] ,enable_rviz=enable_rviz)
|
||||||
args_dict["resources_mesh_config"] = resource_visualization.resource_model
|
args_dict["resources_mesh_config"] = resource_visualization.resource_model
|
||||||
start_backend(**args_dict)
|
start_backend(**args_dict)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class MQTTClient:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mqtt_disable = not MQConfig.lab_id
|
self.mqtt_disable = not MQConfig.lab_id
|
||||||
self.client_id = f"{MQConfig.group_id}@@@{MQConfig.lab_id}{uuid.uuid4()}"
|
self.client_id = f"{MQConfig.group_id}@@@{MQConfig.lab_id}{uuid.uuid4()}"
|
||||||
|
logger.info("[MQTT] Client_id: " + self.client_id)
|
||||||
self.client = mqtt.Client(CallbackAPIVersion.VERSION2, client_id=self.client_id, protocol=mqtt.MQTTv5)
|
self.client = mqtt.Client(CallbackAPIVersion.VERSION2, client_id=self.client_id, protocol=mqtt.MQTTv5)
|
||||||
self._setup_callbacks()
|
self._setup_callbacks()
|
||||||
|
|
||||||
|
|||||||
0
unilabos/devices/laiyu_add_solid/__init__.py
Normal file
0
unilabos/devices/laiyu_add_solid/__init__.py
Normal file
@@ -14,7 +14,7 @@ from pylabrobot.resources import (
|
|||||||
Well
|
Well
|
||||||
)
|
)
|
||||||
|
|
||||||
class DPLiquidHandler(LiquidHandler):
|
class LiquidHandlerAbstract(LiquidHandler):
|
||||||
"""Extended LiquidHandler with additional operations."""
|
"""Extended LiquidHandler with additional operations."""
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
@@ -1,11 +1,96 @@
|
|||||||
liquid_handler:
|
liquid_handler:
|
||||||
description: Liquid handler device controlled by pylabrobot
|
description: Liquid handler device controlled by pylabrobot
|
||||||
class:
|
class:
|
||||||
module: pylabrobot.liquid_handling:LiquidHandler
|
module: unilabos.devices.liquid_handling.liquid_handler_abstract:LiquidHandlerAbstract
|
||||||
type: python
|
type: python
|
||||||
status_types:
|
status_types:
|
||||||
name: String
|
name: String
|
||||||
action_value_mappings:
|
action_value_mappings:
|
||||||
|
remove:
|
||||||
|
type: LiquidHandlerRemove
|
||||||
|
goal:
|
||||||
|
vols: vols
|
||||||
|
sources: sources
|
||||||
|
waste_liquid: waste_liquid
|
||||||
|
use_channels: use_channels
|
||||||
|
flow_rates: flow_rates
|
||||||
|
offsets: offsets
|
||||||
|
liquid_height: liquid_height
|
||||||
|
blow_out_air_volume: blow_out_air_volume
|
||||||
|
spread: spread
|
||||||
|
delays: delays
|
||||||
|
is_96_well: is_96_well
|
||||||
|
top: top
|
||||||
|
none_keys: none_keys
|
||||||
|
feedback: { }
|
||||||
|
result: { }
|
||||||
|
add_liquid:
|
||||||
|
type: LiquidHandlerAdd
|
||||||
|
goal:
|
||||||
|
asp_vols: asp_vols
|
||||||
|
dis_vols: dis_vols
|
||||||
|
reagent_sources: reagent_sources
|
||||||
|
targets: targets
|
||||||
|
use_channels: use_channels
|
||||||
|
flow_rates: flow_rates
|
||||||
|
offsets: offsets
|
||||||
|
liquid_height: liquid_height
|
||||||
|
blow_out_air_volume: blow_out_air_volume
|
||||||
|
spread: spread
|
||||||
|
is_96_well: is_96_well
|
||||||
|
mix_time: mix_time
|
||||||
|
mix_vol: mix_vol
|
||||||
|
mix_rate: mix_rate
|
||||||
|
mix_liquid_height: mix_liquid_height
|
||||||
|
none_keys: none_keys
|
||||||
|
feedback: { }
|
||||||
|
result: { }
|
||||||
|
transfer_liquid:
|
||||||
|
type: LiquidHandlerTransfer
|
||||||
|
goal:
|
||||||
|
asp_vols: asp_vols
|
||||||
|
dis_vols: dis_vols
|
||||||
|
sources: sources
|
||||||
|
targets: targets
|
||||||
|
tip_racks: tip_racks
|
||||||
|
use_channels: use_channels
|
||||||
|
asp_flow_rates: asp_flow_rates
|
||||||
|
dis_flow_rates: dis_flow_rates
|
||||||
|
offsets: offsets
|
||||||
|
touch_tip: touch_tip
|
||||||
|
liquid_height: liquid_height
|
||||||
|
blow_out_air_volume: blow_out_air_volume
|
||||||
|
spread: spread
|
||||||
|
is_96_well: is_96_well
|
||||||
|
mix_stage: mix_stage
|
||||||
|
mix_times: mix_times
|
||||||
|
mix_vol: mix_vol
|
||||||
|
mix_rate: mix_rate
|
||||||
|
mix_liquid_height: mix_liquid_height
|
||||||
|
delays: delays
|
||||||
|
none_keys: none_keys
|
||||||
|
feedback: { }
|
||||||
|
result: { }
|
||||||
|
mix:
|
||||||
|
type: DPLiquidHandlerMix
|
||||||
|
goal:
|
||||||
|
targets: targets
|
||||||
|
mix_time: mix_time
|
||||||
|
mix_vol: mix_vol
|
||||||
|
height_to_bottom: height_to_bottom
|
||||||
|
offsets: offsets
|
||||||
|
mix_rate: mix_rate
|
||||||
|
none_keys: none_keys
|
||||||
|
feedback: { }
|
||||||
|
result: { }
|
||||||
|
move_to:
|
||||||
|
type: LiquidHandlerMoveTo
|
||||||
|
goal:
|
||||||
|
well: well
|
||||||
|
dis_to_top: dis_to_top
|
||||||
|
channel: channel
|
||||||
|
feedback: { }
|
||||||
|
result: { }
|
||||||
aspirate:
|
aspirate:
|
||||||
type: LiquidHandlerAspirate
|
type: LiquidHandlerAspirate
|
||||||
goal:
|
goal:
|
||||||
@@ -178,110 +263,7 @@ dp_liquid_handler:
|
|||||||
status_types:
|
status_types:
|
||||||
status: String
|
status: String
|
||||||
action_value_mappings:
|
action_value_mappings:
|
||||||
remove_liquid:
|
|
||||||
type: DPLiquidHandlerRemoveLiquid
|
|
||||||
goal:
|
|
||||||
vols: vols
|
|
||||||
sources: sources
|
|
||||||
waste_liquid: waste_liquid
|
|
||||||
use_channels: use_channels
|
|
||||||
flow_rates: flow_rates
|
|
||||||
offsets: offsets
|
|
||||||
liquid_height: liquid_height
|
|
||||||
blow_out_air_volume: blow_out_air_volume
|
|
||||||
spread: spread
|
|
||||||
delays: delays
|
|
||||||
is_96_well: is_96_well
|
|
||||||
top: top
|
|
||||||
none_keys: none_keys
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
add_liquid:
|
|
||||||
type: DPLiquidHandlerAddLiquid
|
|
||||||
goal:
|
|
||||||
asp_vols: asp_vols
|
|
||||||
dis_vols: dis_vols
|
|
||||||
reagent_sources: reagent_sources
|
|
||||||
targets: targets
|
|
||||||
use_channels: use_channels
|
|
||||||
flow_rates: flow_rates
|
|
||||||
offsets: offsets
|
|
||||||
liquid_height: liquid_height
|
|
||||||
blow_out_air_volume: blow_out_air_volume
|
|
||||||
spread: spread
|
|
||||||
is_96_well: is_96_well
|
|
||||||
mix_time: mix_time
|
|
||||||
mix_vol: mix_vol
|
|
||||||
mix_rate: mix_rate
|
|
||||||
mix_liquid_height: mix_liquid_height
|
|
||||||
none_keys: none_keys
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
transfer_liquid:
|
|
||||||
type: DPLiquidHandlerTransferLiquid
|
|
||||||
goal:
|
|
||||||
asp_vols: asp_vols
|
|
||||||
dis_vols: dis_vols
|
|
||||||
sources: sources
|
|
||||||
targets: targets
|
|
||||||
tip_racks: tip_racks
|
|
||||||
use_channels: use_channels
|
|
||||||
asp_flow_rates: asp_flow_rates
|
|
||||||
dis_flow_rates: dis_flow_rates
|
|
||||||
offsets: offsets
|
|
||||||
touch_tip: touch_tip
|
|
||||||
liquid_height: liquid_height
|
|
||||||
blow_out_air_volume: blow_out_air_volume
|
|
||||||
spread: spread
|
|
||||||
is_96_well: is_96_well
|
|
||||||
mix_stage: mix_stage
|
|
||||||
mix_times: mix_times
|
|
||||||
mix_vol: mix_vol
|
|
||||||
mix_rate: mix_rate
|
|
||||||
mix_liquid_height: mix_liquid_height
|
|
||||||
delays: delays
|
|
||||||
none_keys: none_keys
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
custom_delay:
|
|
||||||
type: DPLiquidHandlerCustomDelay
|
|
||||||
goal:
|
|
||||||
seconds: seconds
|
|
||||||
msg: msg
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
touch_tip:
|
|
||||||
type: DPLiquidHandlerTouchTip
|
|
||||||
goal:
|
|
||||||
targets: targets
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
mix:
|
|
||||||
type: DPLiquidHandlerMix
|
|
||||||
goal:
|
|
||||||
targets: targets
|
|
||||||
mix_time: mix_time
|
|
||||||
mix_vol: mix_vol
|
|
||||||
height_to_bottom: height_to_bottom
|
|
||||||
offsets: offsets
|
|
||||||
mix_rate: mix_rate
|
|
||||||
none_keys: none_keys
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
set_tiprack:
|
|
||||||
type: DPLiquidHandlerSetTiprack
|
|
||||||
goal:
|
|
||||||
tip_racks: tip_racks
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
move_to:
|
|
||||||
type: DPLiquidHandlerMoveTo
|
|
||||||
goal:
|
|
||||||
well: well
|
|
||||||
dis_to_top: dis_to_top
|
|
||||||
channel: channel
|
|
||||||
feedback: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
@@ -43,14 +43,10 @@ set(action_files
|
|||||||
"action/LiquidHandlerStamp.action"
|
"action/LiquidHandlerStamp.action"
|
||||||
"action/LiquidHandlerTransfer.action"
|
"action/LiquidHandlerTransfer.action"
|
||||||
|
|
||||||
"action/DPLiquidHandlerAddLiquid.action"
|
"action/LiquidHandlerAdd.action"
|
||||||
"action/DPLiquidHandlerCustomDelay.action"
|
"action/LiquidHandlerMix.action"
|
||||||
"action/DPLiquidHandlerMix.action"
|
"action/LiquidHandlerMoveTo.action"
|
||||||
"action/DPLiquidHandlerMoveTo.action"
|
"action/LiquidHandlerRemove.action"
|
||||||
"action/DPLiquidHandlerRemoveLiquid.action"
|
|
||||||
"action/DPLiquidHandlerSetTiprack.action"
|
|
||||||
"action/DPLiquidHandlerTouchTip.action"
|
|
||||||
"action/DPLiquidHandlerTransferLiquid.action"
|
|
||||||
|
|
||||||
"action/EmptyIn.action"
|
"action/EmptyIn.action"
|
||||||
"action/FloatSingleInput.action"
|
"action/FloatSingleInput.action"
|
||||||
@@ -61,7 +57,7 @@ set(action_files
|
|||||||
"action/ResourceCreateFromOuter.action"
|
"action/ResourceCreateFromOuter.action"
|
||||||
|
|
||||||
"action/SolidDispenseAddPowderTube.action"
|
"action/SolidDispenseAddPowderTube.action"
|
||||||
|
|
||||||
"action/PumpTransfer.action"
|
"action/PumpTransfer.action"
|
||||||
"action/Clean.action"
|
"action/Clean.action"
|
||||||
"action/Separate.action"
|
"action/Separate.action"
|
||||||
|
|||||||
20
unilabos_msgs/action/LiquidHandlerAdd.action
Normal file
20
unilabos_msgs/action/LiquidHandlerAdd.action
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
float64[] asp_vols
|
||||||
|
float64[] dis_vols
|
||||||
|
Resource[] reagent_sources
|
||||||
|
Resource[] targets
|
||||||
|
int32[] use_channels
|
||||||
|
float64[] flow_rates
|
||||||
|
geometry_msgs/Point[] offsets
|
||||||
|
float64[] liquid_height
|
||||||
|
float64[] blow_out_air_volume
|
||||||
|
string spread
|
||||||
|
bool is_96_well
|
||||||
|
int32 mix_time
|
||||||
|
int32 mix_vol
|
||||||
|
int32 mix_rate
|
||||||
|
float64 mix_liquid_height
|
||||||
|
string[] none_keys
|
||||||
|
---
|
||||||
|
bool success
|
||||||
|
---
|
||||||
|
# 反馈
|
||||||
11
unilabos_msgs/action/LiquidHandlerMix.action
Normal file
11
unilabos_msgs/action/LiquidHandlerMix.action
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Resource[] targets
|
||||||
|
int32 mix_time
|
||||||
|
int32 mix_vol
|
||||||
|
float64 height_to_bottom
|
||||||
|
geometry_msgs/Point[] offsets
|
||||||
|
float64 mix_rate
|
||||||
|
string[] none_keys
|
||||||
|
---
|
||||||
|
bool success
|
||||||
|
---
|
||||||
|
# 反馈
|
||||||
7
unilabos_msgs/action/LiquidHandlerMoveTo.action
Normal file
7
unilabos_msgs/action/LiquidHandlerMoveTo.action
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Resource well
|
||||||
|
float64 dis_to_top
|
||||||
|
int32 channel
|
||||||
|
---
|
||||||
|
bool success
|
||||||
|
---
|
||||||
|
# 反馈
|
||||||
17
unilabos_msgs/action/LiquidHandlerRemove.action
Normal file
17
unilabos_msgs/action/LiquidHandlerRemove.action
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
float64[] vols
|
||||||
|
Resource[] sources
|
||||||
|
Resource waste_liquid
|
||||||
|
int32[] use_channels
|
||||||
|
float64[] flow_rates
|
||||||
|
geometry_msgs/Point[] offsets
|
||||||
|
float64[] liquid_height
|
||||||
|
float64[] blow_out_air_volume
|
||||||
|
string spread
|
||||||
|
int32[] delays
|
||||||
|
bool is_96_well
|
||||||
|
float64[] top
|
||||||
|
string[] none_keys
|
||||||
|
---
|
||||||
|
bool success
|
||||||
|
---
|
||||||
|
# 反馈
|
||||||
@@ -1,11 +1,25 @@
|
|||||||
# Bio
|
float64[] asp_vols
|
||||||
Resource source
|
float64[] dis_vols
|
||||||
|
Resource[] sources
|
||||||
Resource[] targets
|
Resource[] targets
|
||||||
float64 source_vol
|
Resource[] tip_racks
|
||||||
float64[] ratios
|
int32[] use_channels
|
||||||
float64[] target_vols
|
float64[] asp_flow_rates
|
||||||
float64 aspiration_flow_rate
|
float64[] dis_flow_rates
|
||||||
float64[] dispense_flow_rates
|
geometry_msgs/Point[] offsets
|
||||||
|
bool touch_tip
|
||||||
|
float64[] liquid_height
|
||||||
|
float64[] blow_out_air_volume
|
||||||
|
string spread
|
||||||
|
bool is_96_well
|
||||||
|
string mix_stage
|
||||||
|
int32[] mix_times
|
||||||
|
int32 mix_vol
|
||||||
|
int32 mix_rate
|
||||||
|
float64 mix_liquid_height
|
||||||
|
int32[] delays
|
||||||
|
string[] none_keys
|
||||||
---
|
---
|
||||||
bool success
|
bool success
|
||||||
---
|
---
|
||||||
|
# 反馈
|
||||||
10
unilabos_msgs/action/ResourceCreateFromOuterEasy.action
Normal file
10
unilabos_msgs/action/ResourceCreateFromOuterEasy.action
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
string id
|
||||||
|
string class
|
||||||
|
string parent
|
||||||
|
geometry_msgs/Point bind_locations
|
||||||
|
int32[] liquid_input_slot
|
||||||
|
string[] liquid_type
|
||||||
|
float32[] liquid_volume
|
||||||
|
---
|
||||||
|
bool success
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user