Bridge family · python-object

OpenMHS family: python-object

Python device SDKs as OpenMHS drivers (direct Driver class)

Recipe published467 packageshardwaresimulated
On this page 9 sections
  1. Launch
  2. Registry coverage
  3. Applicability
  4. Capability mapping
  5. Safety
  6. Fidelity
  7. Pitfalls
  8. First task cards
  9. Sources

Python device SDKs as OpenMHS drivers (direct Driver class)

Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 467 registry records and their task cards. A plan, not a conformance claim.

  • bridge_status: available
  • helper: PythonObjectDriver
  • exemplar: MHS/drivers/labs/tiagocoutinho__julabo

Launch

Every driver package starts the same way; per-repo configuration (environment id, model path, port, baud rate, VISA resource) lives in the package's driver.py, never in launch flags:

text
mhs serve <driver-dir>

A package is done when python3 -m mhs.driver check <driver-dir> --backend fake exits 0 (evidence contract_checked; a fake never yields an MHS-Device level).

Registry coverage

  • Repos: 467
  • Decisions: bridge-runtime 18, direct-driver 212, reference 43, skip 194
  • Waves: 0: 2, 1: 28, 2: 62, 3: 82, 5: 13, 6: 25, 9: 255
  • Dispatchable now: 0
  • Modes: hardware 211, simulated 92

Applicability

A Python package with an AST-parsed device class (score at least 9, at least three device API members) and device evidence: triage rule 10, PY_SDK_WITH_ENTRY. Exemplars: tiagocoutinho/julabo (instruments) and xArm-Developer/xArm-Python-SDK (robot SDKs).

Capability mapping

native callOpenMHS targetnotes
Device(port=..., address=...)lifecycle: the native backend factory in driver.pyconstruction and connection are never capabilities; addresses live in driver.py, not in launch flags
device.get_<quantity>() / device.<quantity>@read: the measure class that fits (cap.measure.*), else cap.sensing.read.v1unit from the vendor documentation or the upstream code (UCUM); a read never changes the device revision
device.set_<parameter>(value)@write: cap.device.configure.v1, or a write class that fits (cap.thermal.setpoint.v1, cap.imaging.illumination.v1)every limit cites source and file:line, or is Limit.operator_required
device.move(...) / start() / acquire()@action: the catalogue class that fits, else x-cap.<owner>.<name>.v1 with an inline schemaadd a RESULT.json catalogue_requests entry for every x-cap id; declare long_running and cancellable for blocking calls
device.stop() / abort() / output_off()@estop plus safe_statethe e-stop is mhs.safety.estop, not a capability
device.close() / disconnect()lifecycle: driver teardownnever a capability (not self_test, not restore)

Class ids come from python3 -m mhs.driver catalog search <words>. The deprecated classes cap.device.describe.v1, cap.world.state.v1, cap.world.snapshot.v1 and cap.world.restore.v1 are replaced by the protocol methods mhs.devices.get, mhs.resource.read, mhs.snapshot and mhs.restore.

Safety

The risk floor of a device is the highest catalogue risk_class of its classes (CAP-017); a driver may declare a higher risk, never a lower one. Hardware at R1 or above needs an @estop and a non-empty safe state. Importability says nothing about hazards. Heaters, motors, pumps, lasers and high-voltage outputs are common; cite every limit from the vendor documentation or the upstream code, or use Limit.operator_required.

Fidelity

A fake backend (a recording fake, or the upstream simulator when the repo ships one) yields contract_checked evidence only.

Pitfalls

Constructors often open ports or start threads: keep them in the hardware backend factory. Optional heavy imports belong in the backend module. Do not claim capabilities from class names alone; confirm each native call in the code.

First task cards

  • gh.tiagocoutinho/julabo: direct-driver, wave 0, rank 3, MHS/registry/tasks/labs/tiagocoutinho__julabo.json
  • gh.xarm-developer/xarm-python-sdk: direct-driver, wave 0, rank 4, MHS/registry/tasks/robots/xarm-developer__xarm-python-sdk.json
  • gh.martinhjelmare/leicacam: direct-driver, wave 1, rank 1, MHS/registry/tasks/labs/martinhjelmare__leicacam.json
  • gh.benpruitt/tecancavro: direct-driver, wave 1, rank 2, MHS/registry/tasks/labs/benpruitt__tecancavro.json
  • gh.pymeasure/pymeasure: direct-driver, wave 1, rank 5, MHS/registry/tasks/labs/pymeasure__pymeasure.json

Sources

  • Task cards: MHS/registry/tasks/<track>/<owner>__<repo>.json (schema/taskcard.schema.json).
  • Triage rules and the helper table: MHS/registry/triage.py; curated decisions: MHS/registry/overrides/.
  • Driver API and gate: MHS/sdk/docs/driver-authoring.md; exemplars: MHS/drivers/.

Packages

Top 24 of 467 by stars. Filter the full list.

PackageTierRingEvidenceStars
atsushisakai/pythonrobotics
atsushisakai/pythonrobotics: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:periphera
Tier D3static scan30,651
nvidia/warp
nvidia/warp: physics engines for general (robotics track). OpenMHS plan: SDK bridge runtime, not a per-repo driver. Cata
Tier C3static scan7,179
rlinf/rlinf
rlinf/rlinf: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). Language: Py
Tier D3static scan5,467
nvidia-omniverse/physx
nvidia-omniverse/physx: physics engines for general (robotics track). OpenMHS plan: SDK bridge runtime, not a per-repo d
Tier C3static scan4,784
stack-of-tasks/pinocchio
stack-of-tasks/pinocchio: physics engines for general (robotics track). OpenMHS plan: not integrated (override:recon). L
Tier D3static scan3,784
leggedrobotics/rsl_rl
leggedrobotics/rsl_rl: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). La
Tier D3static scan3,051
tonyzhaozh/aloha
tonyzhaozh/aloha: device SDK for robot manipulation (robotics track). OpenMHS plan: direct-driver with PythonObjectDrive
Tier B3static scan2,343
jsbsim-team/jsbsim
jsbsim-team/jsbsim: physics engines for UAVs (robotics track). OpenMHS plan: not integrated (skip:peripheral). Language:
Tier D3static scan2,289
interactivecomputergraphics/positionbaseddynamics
interactivecomputergraphics/positionbaseddynamics: physics engines for general (robotics track). OpenMHS plan: not integ
Tier D3static scan2,286
ompl/ompl
ompl/ompl: control framework for robot arm manipulation (robotics track). OpenMHS plan: not integrated (skip:peripheral)
Tier D3static scan2,167
shisatoyano/autonomousvehiclecontrolbeginnersguide
shisatoyano/autonomousvehiclecontrolbeginnersguide: complete environment for mobile robots (robotics track). OpenMHS pla
Tier D3static scan1,660
opntec/open-spectrometer-python
opntec/open-spectrometer-python: device backend for optics (lab instrumentation track). OpenMHS plan: direct-driver with
Tier B1contract checked1,386
kratosmultiphysics/kratos
kratosmultiphysics/kratos: physics engines for materials (lab instrumentation track). OpenMHS plan: not integrated (skip
Tier D3static scan1,373
loco-3d/crocoddyl
loco-3d/crocoddyl: control framework for legged robots (robotics track). OpenMHS plan: not integrated (skip:peripheral).
Tier D3static scan1,317
rl-tools/rl-tools
rl-tools/rl-tools: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). Langua
Tier D3static scan1,034
ur-whitelab/chemcrow-public
ur-whitelab/chemcrow-public: agent framework for chemistry (lab instrumentation track). OpenMHS plan: reference only (ho
Tier D3static scan957
capgym/cap-x
capgym/cap-x: complete environment for robot arm manipulation (robotics track). OpenMHS plan: reference only (host). Lan
Tier D3static scan845
pymeasure/pymeasure
pymeasure/pymeasure: repository for microscopy imaging; optics; electronic measurement and DAQ (lab instrumentation trac
Tier B1contract checked785
zou-group/virtual-lab
zou-group/virtual-lab: agent framework for biology (lab instrumentation track). OpenMHS plan: reference only (host). Lan
Tier D3static scan742
facebookresearch/project_superdex
facebookresearch/project_superdex: physics engines for robot arm manipulation (robotics track). OpenMHS plan: SDK bridge
Tier C3static scan720
nominal-io/instro
nominal-io/instro: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-driver wi
Tier B1contract checked718
robocurve/inspect-robots
robocurve/inspect-robots: orchestration/scheduling for general (robotics track). OpenMHS plan: reference only (host). La
Tier D3static scan654
henryhuyu/diffphysdrone
henryhuyu/diffphysdrone: policy/algorithm for UAVs (robotics track). OpenMHS plan: not integrated (skip:peripheral). Lan
Tier D3static scan634
ni/nidaqmx-python
ni/nidaqmx-python: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-driver wi
Tier B1contract checked590