mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 21:11:12 +00:00
Add high-level PLR functions Add Laiyu/Zhida driver support Fix ROS node discovery issues Add hostname and resource query support Fix ROS message conversion logic Support configuration via environment variables * 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 --------- Co-authored-by: Harvey Que <Q-Query@outlook.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com>
140 lines
5.0 KiB
Python
140 lines
5.0 KiB
Python
import traceback
|
|
from unilabos.utils.log import logger
|
|
|
|
resource_schema = {
|
|
"workstation": {"type": "object", "properties": {}},
|
|
"work_station.aichemeco_hiwo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
"tasks": {"type": "string", "description": "任务列表"},
|
|
}
|
|
},
|
|
"work_station.revvity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
"tasks": {"type": "string", "description": "任务列表"},
|
|
}
|
|
},
|
|
"syringepump.runze": {
|
|
"type": "object",
|
|
"properties": {
|
|
"max_velocity": {"type": "number", "description": "活塞最大速度"},
|
|
"position": {"type": "number", "description": "活塞当前位置"},
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
"valve_position": {"type": "string", "description": "阀门当前位置"},
|
|
},
|
|
"required": ["max_velocity", "position", "status", "valve_position"],
|
|
},
|
|
"heaterstirrer.dalong": {
|
|
"type": "object",
|
|
"properties": {
|
|
"stir_speed": {"type": "number", "description": "搅拌器转速"},
|
|
"temp": {"type": "number", "description": "搅拌器温度"},
|
|
"temp_target": {"type": "number", "description": "搅拌器温度目标值"},
|
|
"temp_warning": {"type": "number", "description": "搅拌器温度警告值"},
|
|
},
|
|
"required": ["temp"],
|
|
},
|
|
"separator_controller": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sensordata": {"type": "number", "description": "电导传感器数据"},
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
},
|
|
"required": ["sensordata", "status"],
|
|
},
|
|
"rotavap": {
|
|
"type": "object",
|
|
"properties": {
|
|
"temperature": {"type": "number", "description": "蒸发器温度"},
|
|
"rotate_time": {"type": "number", "description": "蒸发器转速"},
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
},
|
|
"required": ["temperature", "rotate_time", "status"],
|
|
},
|
|
"container": {
|
|
"type": "object",
|
|
"properties": {
|
|
"liquid": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"liquid_type": {"type": "string"},
|
|
"liquid_volume": {"type": "number"},
|
|
},
|
|
},
|
|
},
|
|
"max_volume": {
|
|
"type": "number",
|
|
},
|
|
},
|
|
},
|
|
"plate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"layout": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gridCount": "number",
|
|
"gridColumnNumber": "number"
|
|
},
|
|
}
|
|
},
|
|
},
|
|
"serial": None,
|
|
"gripper.mock": None,
|
|
"solenoid_valve.mock": None,
|
|
"vacuum_pump.mock": None,
|
|
"gas_source.mock": None,
|
|
"zhixing_agv": {
|
|
"type": "object",
|
|
"properties": {
|
|
|
|
"status": {"type": "string", "description": "设备状态"},
|
|
},
|
|
"required": ["status"],
|
|
},
|
|
"zhixing_ur_arm": {
|
|
"type": "object",
|
|
"properties": {
|
|
"arm_status": {"type": "string", "description": "机械臂设备状态"},
|
|
"gripper_status": {"type": "string", "description": "夹爪设备状态"},
|
|
},
|
|
"required": ["arm_status"],
|
|
},
|
|
"hplc": {
|
|
"type": "object",
|
|
"properties": {
|
|
"device_status": {"type": "string", "description": "机械臂设备状态"},
|
|
"could_run": {"type": "bool", "description": "机械臂设备状态"},
|
|
"driver_init_ok": {"type": "bool", "description": "机械臂设备状态"},
|
|
"is_running": {"type": "bool", "description": "机械臂设备状态"},
|
|
"finish_status": {"type": "string", "description": "机械臂设备状态"},
|
|
"status_text": {"type": "string", "description": "机械臂设备状态"}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
def add_schema(resources_config: list[dict]) -> list[dict]:
|
|
for resource in resources_config:
|
|
if "type" not in resource:
|
|
resource["type"] = str(resource["class"])
|
|
if resource["type"].lower() == "container":
|
|
resource["schema"] = resource_schema["container"]
|
|
elif resource["type"].lower() == "device":
|
|
resource["schema"] = resource_schema.get(resource["class"], None)
|
|
|
|
if len(resource["children"]) > 0:
|
|
try:
|
|
if type(resource["children"][0]) == dict:
|
|
resource["children"] = add_schema(resource["children"])
|
|
except Exception as ex:
|
|
logger.error("添加物料schema时出错")
|
|
traceback.print_exc()
|
|
|
|
return resources_config
|