Microrobotics Simulation Framework#

Closed-loop control of a magnetically actuated microrobot tracked by a robot-arm-mounted dipole field source.
MIME replication of the de Jongh et al. (2025) helical-UMR propulsion experiment, end-to-end inside the framework.

An end-to-end, autodifferentiable simulation framework for magnetically actuated microrobots in confined biological flows. Implemented on top of a modular graphs-based physics system that couples low-Reynolds hydrodynamics, magnetic response, Stokeslet-based drag, and robot kinematics/dynamics through closed-loop control — all of it autodifferentiable end-to-end and wired into a regulated IDE.

The framework is three layered projects:

MADDENING

The base framework. A pure-JAX, autodifferentiable acausal-dataflow runtime where physical models are composed from typed nodes and unit-aware edges.

../maddening/
MIME

The physics. A library of MADDENING nodes for rigid-body chains, magnetic response, low-Reynolds hydrodynamics (Stokeslet / IBM-FVM with optional GNN correction), and the actuation chain.

../mime/
MICROROBOTICA

The IDE. A Qt application that loads MIME experiments, drives live parameter edits, scrubs USD recordings, and produces the IEC-62304 audit trail for clinical-grade adoption.

User Guide

Architecture#

The stack is intentionally one-way: the runtime knows nothing about the domain, the domain knows nothing about the IDE, and the IDE knows nothing about a downstream commercial product. Each layer also emits metadata that flows orthogonally into a shared regulatory audit trail — so the IEC 62304 evidence at the bottom of the pipe doesn’t appear from nowhere.

        flowchart LR
    MAD["MADDENING<br/><i>graph runtime &middot; autodiff &middot; surrogates</i>"]
    MIM["MIME<br/><i>physics nodes &middot; control &middot; UQ</i>"]
    MR["MICROROBOTICA<br/><i>Qt IDE &middot; registry</i>"]

    MAD --> MIM
    MIM --> MR

    META(["regulatory metadata<br/>biocompat &middot; SOUP &middot; verification &middot; anomalies"]):::meta
    AUDIT[["IEC 62304 / EU MDR<br/>audit package"]]:::audit
    PROD["CE-marked device"]:::ext

    MAD -. SBOM + V&V .-> META
    MIM -. AssetSchema .-> META
    MR  -. ComponentMeta .-> META
    META --> AUDIT
    AUDIT --> PROD

    click MAD href "maddening/"
    click MIM href "mime/"
    click MR href "user_guide/index.html"

    classDef meta stroke-width:1.5px
    classDef audit stroke-width:1.5px
    classDef ext stroke-dasharray:5 3
    

How MICROROBOTICA is wired internally#

The IDE is a Qt 6 / C++17 desktop application with an embedded Python console. Its job is to load a MIME experiment, drive it through a non-blocking PhysicsProcess, and let the user scrub the resulting USD trajectory — all while leaving an audit trail.

        flowchart LR
    subgraph QT["Qt application shell"]
      direction TB
      Panels["panels<br/><i>hierarchy &middot; properties<br/>timeline &middot; console</i>"]
      Viewport["viewport<br/><i>OpenGL / software</i>"]
    end

    subgraph CORE["core (no Qt / USD / Python)"]
      direction TB
      ICore["interfaces<br/>ComponentMeta"]
      DCore["typed data &middot; benchmarks"]
    end

    Scene["scene<br/><i>USD three-layer composition</i>"]
    Sim["simulation<br/><i>SimulationController<br/>async result queue</i>"]
    Script["scripting<br/><i>embedded Python<br/>(pybind11)</i>"]
    Phys["PhysicsProcess<br/><i>abstract backend</i>"]:::iface
    MIM["MIME runner"]:::ext

    Panels --> Sim
    Panels --> Scene
    Sim --> Phys
    Phys --> Sim
    Phys --> MIM
    Scene --> Viewport
    Scene -. USD stages .-> Phys
    Sim --> ICore
    Scene --> ICore
    Script --> ICore
    Script --> Sim

    classDef ext stroke-dasharray:5 3
    classDef iface stroke-width:1.5px
    

Documentation map#

The framework’s documentation is split across the three projects’ own docs trees, which all share this site’s theme. Use the navbar to jump between them. A shared Glossary defines the recurring jargon.

Note

Status: scaffolding. Most pages are placeholders and will fill in over the coming weeks. Source for every page lives in the project repos linked in the cards above — contributions welcome.