Microrobotics Simulation 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:
The base framework. A pure-JAX, autodifferentiable acausal-dataflow runtime where physical models are composed from typed nodes and unit-aware edges.
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.
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.
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 · autodiff · surrogates</i>"]
MIM["MIME<br/><i>physics nodes · control · UQ</i>"]
MR["MICROROBOTICA<br/><i>Qt IDE · registry</i>"]
MAD --> MIM
MIM --> MR
META(["regulatory metadata<br/>biocompat · SOUP · verification · 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 · properties<br/>timeline · 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 · 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.