MIME-VER-121 — RobotArmNode Mass-Matrix Symmetry & PD#
Date: 2026-04-30
Node under test: mime.nodes.actuation.robot_arm.RobotArmNode
Algorithm ID: MIME-NODE-102
Benchmark type: Analytical (Mode 2 independent)
Test file: tests/verification/test_robot_arm.py::test_ver121_mass_matrix_symmetric_pd
Acceptance: $|M - M^{!\top}|F < 10^{-12}$ and $\lambda{\min}(M) > 0$
Goal#
Confirm that the joint-space mass matrix $M(q)$ produced by the
CRBA-based mime.control.kinematics.crba.mass_matrix is symmetric
and positive-definite at five random configurations on the 3-link
planar fixture. These are necessary conditions for the forward-
dynamics solve $M\ddot q = \mathrm{rhs}$ to be well-posed.
Configuration#
Parameter |
Value |
|---|---|
URDF |
|
Configurations |
5 samples from $\mathcal{U}[-\pi, \pi]^3$ (seed 20260430) |
JAX precision |
x64 enabled at module load |
Procedure#
For each random $q$:
Compute $M = \texttt{mass_matrix}(\mathrm{tree}, q)$ as a NumPy array.
Verify $|M - M^{!\top}|_F < 10^{-12}$.
Verify $\lambda_{\min}(M) > 0$ via
numpy.linalg.eigvalsh.
Result#
PASS. Symmetric to within machine precision and PD across all 5 sampled configurations.
Scope and Limitations#
Five random configs is a smoke-grade sample. Adding configs is cheap but tests are already comprehensive across the kinematics-package suite.
Does not verify scale (numerical magnitude vs. analytical reference); scale is exercised indirectly by MIME-VER-122 / 123 / 124 where a wrong $M$ would produce wrong dynamics.
Reproducibility#
Seed: NumPy
default_rng(20260430).Run:
JAX_PLATFORMS=cpu .venv/bin/python -m pytest tests/verification/test_robot_arm.py::test_ver121_mass_matrix_symmetric_pd -x -q.