MHS 相关 GitHub 项目导读
可在本站首页 MHS 卡片点击「文档」下载相关文档包(若已提供)。
结合 Day 4 Driver 开发,在 MHS 子站 Driver 工作台验证你从开源库封装的 Driver。
如何阅读开源硬件/Agent 项目
评估是否适合 MHS Driver 底层时,用五问:
- 协议覆盖:是否支持你的总线(Modbus/CAN/VISA)?
- 许可证:MIT/Apache/BSD 优先;GPL 注意传染。
- 维护度:近 6 个月是否有 commit 与 release?
- 异步模型:是否与 MHS Driver 事件循环兼容?
- 错误语义:超时/异常是否可映射为 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 内调用
rclpyAction 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 SDK | Python | MCP Server/Client | 桥接层 |
| modbus-tk | Python | Modbus | 工业传感器 Driver |
| python-can | Python | CAN 总线 | 机器人 Driver |
| PyVISA | Python | VISA 仪器 | 实验室 Driver |
| ROS 2 | C++/Python | 机器人 | 运动控制桥接 |
| Gazebo | C++ | 仿真 | HIL 测试 |
| LabThings | Python | Web 设备 | 快速原型 |
| asyncua | Python | OPC-UA | 工厂设备 |
推荐阅读顺序
- MCP SDK 文档(理解 tool/resource)
- modbus-tk 或 PyVISA 教程(写一个最小 read/write)
- Gazebo 入门(虚拟 HIL)
- ROS 2 概览(若涉及机器人)
- 回到 开发指南 写正式 MHS Driver
与本站其它主题交叉
| 主题 | 交叉点 |
|---|---|
| MCP 协议 | 数字层、MHS Bridge |
| LangChain/LangGraph | Agent 编排宿主 |
| 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 |
| LangGraph | LLM 决策环 | 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 | 推荐项目 | 练习 |
|---|---|---|
| 2 | modbus-tk | 读 holding register → temperature_c |
| 2 | MCP SDK | 注册只读 resource 暴露 state |
| 4 | PyVISA | SCPI oscilloscope read |
| 4 | python-can | 发一帧 CAN 并 decode |
| 4 | Gazebo | 订阅 sim 传感器作 read |
| 5 | MCP SDK | tool handler 内 write+verify |
| 7 | OpenTelemetry | 为 mhs.write 加 span |