Rigid Body Node#
Module: mime.nodes.robot.rigid_body
Stability: experimental
Algorithm ID: MIME-NODE-003
Version: 1.0.0
Verification Mode: Mode 2 (Independent)
Summary#
6-DOF rigid body dynamics in the overdamped Stokes regime. At Re << 1, inertia is negligible: velocity is instantaneously proportional to applied force. Position and quaternion orientation are integrated via explicit Euler.
Governing Equations#
Overdamped force balance (low Re):
Prolate ellipsoid resistance (Oberbeck-Stechert):
Coefficients as functions of eccentricity \(e = \sqrt{1 - b^2/a^2}\). The textbook form,
Changed in version v0.2: Reformulated for float32 numerical stability (cancellation-free atanh
series). Previously the naive denominator lost precision near \(e = 0\).
Quaternion integration:
Discretization#
Explicit Euler for position (\(\mathbf{x} += \mathbf{V} \Delta t\)). Exact quaternion rotation for orientation (rotation quaternion from angular velocity, then Hamilton product).
Implementation Mapping#
Equation Term |
Implementation |
Notes |
|---|---|---|
\(\mathbf{V} = \mathbf{F}/R_T\) |
|
Element-wise divide by resistance diagonal |
\(C_1, C_2, C_3\) |
|
Cancellation-free |
\(\Delta\mathbf{q}\) |
|
Exact rotation quaternion |
\(\mathbf{q}\) normalisation |
|
|
Assumptions and Simplifications#
Stokes regime: \(Re \ll 1\), inertia negligible
Rigid body — no deformation
Prolate ellipsoid shape for analytical drag coefficients
Resistance tensor diagonal in body frame (no translation-rotation coupling in current implementation — coupling via R_12 deferred to IB-LBM)
Validated Physical Regimes#
Parameter |
Verified Range |
Notes |
|---|---|---|
Re |
0–0.1 |
Stokes regime |
semi_major_axis |
1–1000 um |
Microrobot size range |
Known Limitations and Failure Modes#
Analytical drag only valid for \(Re < 0.1\)
No near-wall corrections (SurfaceContactNode needed)
No translation-rotation coupling (R_12 block) in analytical mode
Quaternion integration first-order (sufficient for overdamped dynamics)
State Variables#
Field |
Shape |
Units |
Description |
|---|---|---|---|
position |
(3,) |
m |
Centre of mass position |
orientation |
(4,) |
- |
Unit quaternion [w,x,y,z] |
velocity |
(3,) |
m/s |
Translational velocity |
angular_velocity |
(3,) |
rad/s |
Angular velocity |
Parameters#
Parameter |
Type |
Default |
Units |
Description |
|---|---|---|---|---|
semi_major_axis_m |
float |
100e-6 |
m |
Semi-major axis |
semi_minor_axis_m |
float |
100e-6 |
m |
Semi-minor axis (sphere if = a) |
fluid_viscosity_pa_s |
float |
8.5e-4 |
Pa.s |
CSF viscosity |
use_analytical_drag |
bool |
True |
- |
Use Oberbeck-Stechert (vs. IB-LBM) |
Boundary Inputs#
Field |
Shape |
Default |
Coupling Type |
Description |
|---|---|---|---|---|
magnetic_force |
(3,) |
zeros |
additive |
From MagneticResponseNode |
magnetic_torque |
(3,) |
zeros |
additive |
From MagneticResponseNode |
drag_force |
(3,) |
zeros |
additive |
From CSFFlowNode (IB-LBM mode) |
drag_torque |
(3,) |
zeros |
additive |
From CSFFlowNode (IB-LBM mode) |
external_force |
(3,) |
zeros |
additive |
Gravity, contact, etc. |
external_torque |
(3,) |
zeros |
additive |
Additional torques |
MIME-Specific Sections#
Anatomical Operating Context#
Compartment |
Flow Regime |
Re Range |
Viscosity Range |
|---|---|---|---|
CSF |
stagnant/pulsatile |
0–0.1 |
0.7–1.0 mPa.s |
Clinical Relevance#
The most fundamental node. Every microrobot simulation requires tracking position and orientation. All other physics (fluid coupling, drug delivery, sensing) reference the robot’s pose.
References#
[@Lighthill1976] Lighthill, J. (1976). Flagellar Hydrodynamics. — Resistance tensor theory for slender bodies.
[@Rodenborn2013] Rodenborn, B. et al. (2013). Propulsion of microorganisms by a helical flagellum. — Experimental validation data.
Verification Evidence#
MIME-VER-001: Stokes translational drag (< 5% error vs. analytical)
MIME-VER-004: Ellipsoid drag anisotropy
MIME-VER-005: Steady-state velocity consistency
Unit tests:
tests/nodes/test_rigid_body.py(16 tests)
Changelog#
Version |
Date |
Change |
|---|---|---|
1.0.0 |
2026-03-20 |
Initial implementation — analytical Oberbeck-Stechert drag |