From 4355135c80fb22f50d55834a23313df1f413291c Mon Sep 17 00:00:00 2001 From: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Date: Wed, 14 May 2025 22:36:41 +0800 Subject: [PATCH] Dev Sync (#25) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id --------- Co-authored-by: Harvey Que Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> --- unilabos/app/main.py | 2 +- unilabos/app/mq.py | 1 + unilabos/devices/laiyu_add_solid/__init__.py | 0 unilabos_msgs/CMakeLists.txt | 2 +- .../action/DPLiquidHandlerAddLiquid.action | 20 +++++++++++++++ .../action/DPLiquidHandlerCustomDelay.action | 6 +++++ .../action/DPLiquidHandlerMix.action | 11 ++++++++ .../action/DPLiquidHandlerMoveTo.action | 7 ++++++ .../action/DPLiquidHandlerRemoveLiquid.action | 17 +++++++++++++ .../action/DPLiquidHandlerSetTiprack.action | 5 ++++ .../action/DPLiquidHandlerTouchTip.action | 5 ++++ .../DPLiquidHandlerTransferLiquid.action | 25 +++++++++++++++++++ .../action/ResourceCreateFromOuterEasy.action | 10 ++++++++ 13 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 unilabos/devices/laiyu_add_solid/__init__.py create mode 100644 unilabos_msgs/action/DPLiquidHandlerAddLiquid.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerCustomDelay.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerMix.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerMoveTo.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerRemoveLiquid.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerSetTiprack.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerTouchTip.action create mode 100644 unilabos_msgs/action/DPLiquidHandlerTransferLiquid.action create mode 100644 unilabos_msgs/action/ResourceCreateFromOuterEasy.action diff --git a/unilabos/app/main.py b/unilabos/app/main.py index ebee015e..c08c1b49 100644 --- a/unilabos/app/main.py +++ b/unilabos/app/main.py @@ -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.utils.banner_print import print_status, print_unilab_banner -from unilabos.device_mesh.resource_visalization import ResourceVisualization def parse_args(): @@ -188,6 +187,7 @@ def main(): if args_dict["visual"] != "disable": enable_rviz = args_dict["visual"] == "rviz" 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) args_dict["resources_mesh_config"] = resource_visualization.resource_model start_backend(**args_dict) diff --git a/unilabos/app/mq.py b/unilabos/app/mq.py index 018c65cb..afdde3b4 100644 --- a/unilabos/app/mq.py +++ b/unilabos/app/mq.py @@ -26,6 +26,7 @@ class MQTTClient: def __init__(self): self.mqtt_disable = not MQConfig.lab_id 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._setup_callbacks() diff --git a/unilabos/devices/laiyu_add_solid/__init__.py b/unilabos/devices/laiyu_add_solid/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/unilabos_msgs/CMakeLists.txt b/unilabos_msgs/CMakeLists.txt index 49406931..134dbbb6 100644 --- a/unilabos_msgs/CMakeLists.txt +++ b/unilabos_msgs/CMakeLists.txt @@ -57,7 +57,7 @@ set(action_files "action/ResourceCreateFromOuter.action" "action/SolidDispenseAddPowderTube.action" - + "action/PumpTransfer.action" "action/Clean.action" "action/Separate.action" diff --git a/unilabos_msgs/action/DPLiquidHandlerAddLiquid.action b/unilabos_msgs/action/DPLiquidHandlerAddLiquid.action new file mode 100644 index 00000000..0611b276 --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerAddLiquid.action @@ -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 +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerCustomDelay.action b/unilabos_msgs/action/DPLiquidHandlerCustomDelay.action new file mode 100644 index 00000000..29f9b45b --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerCustomDelay.action @@ -0,0 +1,6 @@ +float64 seconds +string msg +--- +bool success +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerMix.action b/unilabos_msgs/action/DPLiquidHandlerMix.action new file mode 100644 index 00000000..81d1b71c --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerMix.action @@ -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 +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerMoveTo.action b/unilabos_msgs/action/DPLiquidHandlerMoveTo.action new file mode 100644 index 00000000..740d0fc6 --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerMoveTo.action @@ -0,0 +1,7 @@ +Resource well +float64 dis_to_top +int32 channel +--- +bool success +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerRemoveLiquid.action b/unilabos_msgs/action/DPLiquidHandlerRemoveLiquid.action new file mode 100644 index 00000000..e6b43c53 --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerRemoveLiquid.action @@ -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 +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerSetTiprack.action b/unilabos_msgs/action/DPLiquidHandlerSetTiprack.action new file mode 100644 index 00000000..437d3e3f --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerSetTiprack.action @@ -0,0 +1,5 @@ +Resource[] tip_racks +--- +bool success +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerTouchTip.action b/unilabos_msgs/action/DPLiquidHandlerTouchTip.action new file mode 100644 index 00000000..e0c31046 --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerTouchTip.action @@ -0,0 +1,5 @@ +Resource[] targets +--- +bool success +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/DPLiquidHandlerTransferLiquid.action b/unilabos_msgs/action/DPLiquidHandlerTransferLiquid.action new file mode 100644 index 00000000..39df59bb --- /dev/null +++ b/unilabos_msgs/action/DPLiquidHandlerTransferLiquid.action @@ -0,0 +1,25 @@ +float64[] asp_vols +float64[] dis_vols +Resource[] sources +Resource[] targets +Resource[] tip_racks +int32[] use_channels +float64[] asp_flow_rates +float64[] dis_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 +--- +# 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/ResourceCreateFromOuterEasy.action b/unilabos_msgs/action/ResourceCreateFromOuterEasy.action new file mode 100644 index 00000000..f92ec2b4 --- /dev/null +++ b/unilabos_msgs/action/ResourceCreateFromOuterEasy.action @@ -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 +---