跳到主要内容

MHS 相关 GitHub 项目导读

下载文档

可在本站首页 MHS 卡片点击「文档」下载相关文档包(若已提供)。

七天实战

结合 Day 4 Driver 开发,在 MHS 子站 Driver 工作台验证你从开源库封装的 Driver。

如何阅读开源硬件/Agent 项目

评估是否适合 MHS Driver 底层时,用五问:

  1. 协议覆盖:是否支持你的总线(Modbus/CAN/VISA)?
  2. 许可证:MIT/Apache/BSD 优先;GPL 注意传染。
  3. 维护度:近 6 个月是否有 commit 与 release?
  4. 异步模型:是否与 MHS Driver 事件循环兼容?
  5. 错误语义:超时/异常是否可映射为 MHS fault 类型?

MCP 与 Agent 桥接

MCP Python SDK

  • 仓库:modelcontextprotocol/python-sdk
  • 用途:把 MHS Driver 暴露为 MCP Server;实现 tool→write、resource→read 映射。
  • 学习点:Server 生命周期、tool handler、resource 订阅更新。
  • MHS 关系:数字层标准接口;MHS Bridge 在其上增加 verify 与 x-mhs 扩展。

MCP TypeScript SDK

  • 用途:Web/Electron Agent 客户端;实验室控制台可视化。
  • 场景:浏览器内 Agent 通过 MCP 调 MHS 后端。

工业协议与仪器控制

modbus-tk

  • 纯 Python Modbus RTU/TCP
  • 场景:温控、PLC、功率计 MHS Driver
  • 注意:线程安全、超时、字节序;寄存器映射写入 Description

python-can

  • CAN/CAN-FD 抽象,支持 socketcan、USB 适配器
  • 场景:机器人关节、汽车 ECU
  • 配合 DBC 文件解析信号→状态向量

PyVISA

  • GPIB/USB/Ethernet 仪器 SCPI
  • 场景:示波器、源表、光谱仪
  • MHS 封装:SCPI query→read,write→SCPI command;单位标准化

asyncua / opcua-asyncio

  • OPC-UA 客户端/服务端
  • 场景:工厂产线、与 MES 对接的设备
  • MHS 分工:OPC-UA 通信层,MHS 语义+闭环层

机器人与仿真

ROS 2

  • 机器人中间件:话题、服务、Action
  • MHS 关系:互补——关节级实时控制走 ROS;跨设备实验编排走 MHS
  • 桥接:MHS Driver 内调用 rclpy Action client

Gazebo / Ignition

  • 物理仿真与传感器模拟
  • 场景:无真实硬件时的 HIL 前半段;虚拟相机/激光/位移台
  • 注意:仿真时间 vs 墙钟时间;状态向量 time stamp 应对齐 sim clock

MoveIt 2

  • 运动规划;可作为机械臂 Driver 内部依赖
  • MHS write cartesian_move 内部触发 MoveIt pipeline,read 反馈 progress

实验室 Web 控制

LabThings

  • 基于 Web 的实验室设备 REST/WoT 封装
  • 场景:快速原型;可包装为 HTTP MHS Driver
  • 限制:安全边界需自行加强,未必满足 GMP 审计

SiLA 2 / Autonomous Lab 相关项目

  • 实验室自动化互操作;与 MHS 设备描述理念相近
  • 可研究其 Capability 模型,借鉴到 Description schema

编排与工作流

LangGraph / Temporal / Prefect

  • 工作流引擎;可承载 MHS 编排 plan 的执行
  • 注意:LangGraph 名字含 Graph 但侧重 Agent 状态机,非图数据库
  • 模式:每个 node 内调用 mhs.write+read+accept

安全与审计

OpenTelemetry

  • trace MHS read/write span
  • 属性:device.id, verify.pass, confidence.min

Immudb / 审计日志专用库

  • append-only 审计存储,满足 FDA 21 CFR Part 11 意图

实测案例相关技术栈(推断)

机构可能涉及的开源/标准栈
QuEra激光控制 SDK + 闭环 PID
CMU液体处理 + LIMS 接口
Janelia显微镜控制 + 多相机 sync
Genentech蛋白纯化仪器 + 视觉 QC

阅读案例时关注:闭环验证点在哪一层实现,而非具体品牌 SDK。

项目对照表

项目语言能力MHS 场景
MCP Python SDKPythonMCP Server/Client桥接层
modbus-tkPythonModbus工业传感器 Driver
python-canPythonCAN 总线机器人 Driver
PyVISAPythonVISA 仪器实验室 Driver
ROS 2C++/Python机器人运动控制桥接
GazeboC++仿真HIL 测试
LabThingsPythonWeb 设备快速原型
asyncuaPythonOPC-UA工厂设备

推荐阅读顺序

  1. MCP SDK 文档(理解 tool/resource)
  2. modbus-tk 或 PyVISA 教程(写一个最小 read/write)
  3. Gazebo 入门(虚拟 HIL)
  4. ROS 2 概览(若涉及机器人)
  5. 回到 开发指南 写正式 MHS Driver

与本站其它主题交叉

主题交叉点
MCP 协议数字层、MHS Bridge
LangChain/LangGraphAgent 编排宿主
RAG实验日志检索,非替代 MHS
Graph Engineering设备拓扑可建模为图,编排是遍历

贡献开源 Driver 的建议结构

my-laser-mhs-driver/
description/
vl800.yaml
driver/
__init__.py
laser.py
tests/
test_bounds.py
test_hil_sim.py
README.md
LICENSE

许可证与合规

商业实验室注意:部分厂商 SDK 禁止逆向或限制 redistribution。Driver 开源时需 legal review;Description 通常不含 SDK 二进制。

版本 pinning

生产环境 lock 依赖版本;Driver CI 矩阵测试 Python 3.11/3.12 与主要依赖 minor 版本。

社区与标准组织

  • OPC Foundation:OPC-UA 规范
  • ROS Industrial:制造机器人
  • IEEE RAS:安全与互操作
  • OASIS MQTT:IoT 消息

详见 MHS 子站 Resources 标准组织列表。

下一步

深度导读:MCP Python SDK

安装与最小 Server:

pip install mcp

核心概念:@server.list_tools() 注册 tool;handler 内调用 MHS Driver。Resource 可暴露 mhs://device/state 的 JSON 快照,供 Agent 订阅变化。

设计模式:一个物理设备一个 MCP Server 实例 vs 单 Server 多设备——后者适合实验室网关,需注意权限隔离。

深度导读:modbus-tk

import modbus_tk.defines as cst
from modbus_tk import modbus_tcp

master = modbus_tcp.TcpMaster(host="192.168.1.50", port=502)
raw = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1)

封装要点:execute 超时、重试、异常码映射。单元测试可用 modbus simulator 容器。

深度导读:PyVISA

rm = pyvisa.ResourceManager()
inst = rm.open_resource("USB0::0x1234::0x5678::INSTR")
inst.query("*IDN?")

MHS Driver 在 initialize 做 *IDN? 与 Description 中 vendor/model 校验,防止接错设备。

深度导读:python-can

import can
bus = can.interface.Bus(channel="can0", bustype="socketcan")
msg = can.Message(arbitration_id=0x100, data=[0,1,2,3])
bus.send(msg)

DBC 解析可用 cantools 库,与 python-can 配合。

深度导读:ROS 2 桥接示例

MHS write 触发 FollowJointTrajectory action;read 订阅 /joint_states。Latency 要求高的场景,Description 标注 delegates_realtime_to: ros2

仿真栈:Gazebo + ros2_control

虚拟机械臂/相机可在 Gazebo 中生成传感器话题,MHS Driver 订阅 Gazebo 插件发布的 ground truth 作为 read(confidence=1.0 sim)。

工业 IoT:MQTT + Node-RED

Node-RED 可快速 glue MQTT 设备;生产环境仍建议 MHS Driver 统一边界校验,避免 Node-RED flow 绕过互锁。

数据记录:InfluxDB / TimescaleDB

状态向量时序写入 TSDB,供预测性维护与 QuEra 式微调分析。字段:device_id, channel, value, confidence, ts。

视觉 QC:OpenCV / cellpose

Genentech 式气泡检测可作为 Driver 内 read 通道 sample_quality 的来源,不必让 LLM 直接看图像。

编排宿主对比

引擎适合MHS 集成
自研 Python async实验原型直接 await mhs
Temporal长流程、重试Activity 内 mhs
LangGraphLLM 决策环Tool node 调 MCP/MHS

安全扫描

依赖漏洞:pip-audit、Dependabot。Driver 代码:Bandit。容器:Trivy。物理安全不依赖扫描,但供应链安全必要。

书籍与论文

  • Ha & Schmidhuber, World Models — NSP 与 Physical AI
  • Battaglia et al., Graph networks — 结构化物理推理
  • Corke, Robotics, Vision and Control — 运动学与视觉
  • Buttazzo, Real-Time Systems — 调度与 deadline

参与社区

MHS 子站 Community 板块:Driver 诊所、编排复盘、安全边界 peer review。提交 Driver 前建议先发 Description 草案评审。

附录 A:EtherCAT 生态

  • SOEM、IgH EtherCAT Master:C 库;Python 封装需 ctypes
  • MHS Driver 通常运行在 RT 内核或 dedicated gateway
  • 与 MHS 关系:Agent 不直连 EtherCAT,经 gateway Driver read/write

附录 B:VISA 模拟器

PyVISA-sim 可在无硬件时跑 SCPI 测试,配合 pytest 做 Driver 回归。

附录 C:容器化 Driver

每个 Driver 一容器,通过 host network 访问 Modbus/CAN;Kubernetes 部署时注意 USB 设备 passthrough 与特权模式安全。

附录 D:Windows vs Linux

实验室仪器驱动在 Windows 上常见(厂商 DLL);生产推荐 Linux gateway + MHS 统一 API,Windows 仅作协议转换节点。

附录 E:star 数之外的信号

  • Issue 响应时间
  • 是否有 CVE 历史
  • 文档完整度
  • 与 Python 3.12+ 兼容性

按 Day 映射的开源练习

Day推荐项目练习
2modbus-tk读 holding register → temperature_c
2MCP SDK注册只读 resource 暴露 state
4PyVISASCPI oscilloscope read
4python-can发一帧 CAN 并 decode
4Gazebo订阅 sim 传感器作 read
5MCP SDKtool handler 内 write+verify
7OpenTelemetry为 mhs.write 加 span

依赖安全与 SBOM

生产 Driver 镜像应生成 SBOM(CycloneDX);CI 跑 pip-audit。厂商 DLL 需单独漏洞跟踪。

多语言 Driver

核心规范语言无关;社区已有 Python/C++/Rust Driver 讨论。Rust 适合 RT gateway;Python 适合实验室快速迭代。

硬件抽象层对比

代表MHS 位置
总线驱动modbus-tkDriver 内部
仪器抽象PyVISADriver 内部
Agent 语义MHS对外接口
LLM 工具MCPAgent 侧

案例库:Cold Spring Harbor

神经突触追踪全自动成像强调多厂商设备状态语义统一——不同显微镜、载物台、相机通过统一 StateVector 通道命名(如 stage_x_um)降低编排复杂度。开源层面可借鉴 LabThings 的 WoT Thing Description,但 MHS 的安全与 verify 语义更严格。

wget 清单(离线环境)

实验室 OT 常无外网:预下载 PyPI wheels、MCP SDK、modbus-tk、PyVISA 及 visa 后端驱动文档。Description 与 Driver 源码走 internal Git。

常见问题

能否用 Node.js 写 Driver? 可以,MHS 语义不限语言;注意实时性与 USB 驱动生态。

Gazebo 与真实设备 gap? sim confidence=1.0 不代表真实 noise;HIL 后半段必须真机。

ROS package 算 MHS Driver 吗? 需再封装 read/write 与 Description,不能直接暴露 topic 给 Agent。

cantools 与 DBC 工作流

CAN-FD Driver 常用 cantools 解析 DBC:

import cantools
db = cantools.database.load_file("robot_arm.dbc")
msg = db.decode_message(0x100, data)
# 映射 msg 字段 → StateVector joint_1_deg 等

版本 pin DBC 与固件一致;Description 引用 dbc_hash

asyncua 订阅模式

async with Client(url=...) as client:
sub = await client.create_subscription(500, handler)
await sub.subscribe_data_change(nodeid)

handler 更新 Driver 缓存;read 返回最新向量。注意 OPC-UA 证书轮换。

SiLA 2 与 MHS 对比

维度SiLA 2MHS
受众实验室自动化Physical AI Agent
操作原语多种 Featureread/write
闭环 verify实现相关一等公民
安全边界Feature 约束Description 互锁

可研究 SiLA Feature 映射到 MHS capabilities。

FreeRTOS / Zephyr 边缘 Driver

资源受限 MCU 上跑 C Driver,通过 MQTT 向 MHS gateway 上报 state。Agent 仍见统一 read/write。

Jupyter + PyVISA 原型陷阱

Notebook 里直接 inst.write() 适合探索,生产必须 MHS Driver + Description + audit。原型代码不要直接进编排器。

推荐 GitHub 搜索关键词

  • modbus python driver template
  • pyvisa scpi wrapper
  • mcp server hardware
  • ros2 mhs bridge(社区演进中)
  • lab automation closed loop

论文实现:World Models

Ha & Schmidhuber 2018 世界模型可用于编排前 roll-out;实现可选 PyTorch,输入 MHS 状态历史,输出预测下一状态。与 MHS 只接口 state,不替代 verify。

许可证速查

项目许可证
modbus-tkLGPL
PyVISAMIT
python-canLGPL v3
MCP SDKMIT
ROS 2Apache 2.0

GPL/LGPL 注意静态链接与分发义务。

pymodbus 与 modbus-tk 选型

特点
modbus-tk纯 Python,轻量,教学友好
pymodbus异步支持,生态大

MHS Modbus Driver 任选其一;Description 声明 endianness 与 unit_id。

pymodbus 异步 read 示例

from pymodbus.client import AsyncModbusTcpClient
client = AsyncModbusTcpClient("192.168.1.50")
await client.connect()
rr = await client.read_holding_registers(0, 1, slave=1)

封装进 async Driver,read 返回 StateVector。

MoveIt 2 与 MHS

MoveIt 规划轨迹;MHS write 触发执行;read 订阅 /joint_statesmove_group/status。实时性要求标注 delegates_to: ros2

Ignition Gazebo 传感器插件

camera、imu、lidar 插件发布 ROS/GZ 话题;MHS sim Driver 订阅并映射为 state 通道,confidence 固定 1.0 并标注 simulated: true

HiveMQ / Mosquitto MQTT broker

IoT 设备经 MQTT Driver 接入;topic 规范 mhs/{site}/{device_id}/state|cmd。TLS + ACL 按 device_id。

InfluxDB line protocol 示例

power_w,device=laser-001 value=2.48,confidence=0.97 1700000000000000000

Grafana 面板监控 verify 失败率与 P95 延迟。

GitHub Actions 模板(概念)

jobs:
driver-test:
runs-on: ubuntu-latest
services:
modbus-simulator:
image: oitc/modbus-server
steps:
- run: pytest tests/ -m "not hil_hardware"

延伸阅读链接