research · lisc
Automated Functional Movement Screen
LISC, Dr. Silvia Ferrari · Cornell · Spring 2026 · installable package + CLI
Scores the seven FMS physical-therapy exercises 0–3 from motion-capture data — the analysis core of a VR posture-correction system.
Overview
A person wears an XSens inertial motion-capture suit and performs the seven Functional Movement Screen exercises; the system records each, scores form on the standard 0–3 FMS rubric, and feeds a motion-model/VLM layer that shows corrections in VR. I owned the recording and analysis pipeline: capturing MVNX pose data, computing biomechanical metrics — joint angles, ranges of motion, clearances — and scoring each exercise. Shipped as an installable pip package with a CLI, plus two visualization tools.
Design decisions 06
- Each exercise’s FMS rubric is encoded as data, not code: thresholds live in one YAML file per exercise, evaluated highest-score-first with the first fully-passing rule winning, so the rubric is auditable and tunable by a researcher without touching Python.
- The scoring core is a tiny generic rule interpreter — an operator map, with conditions comparing a named operand against a constant or another operand with an optional multiplier (such as 1.5× hand-length) — so new exercises reuse the same engine and only add operands plus a YAML file.
- Dedicated guard operands reject compensation patterns the primary threshold cannot catch: shoulder mobility flags hands brought together in front of the body, the leg raise flags pelvic rock and floor-heel rise, rotary stability flags an IMU calibration offset — grounding scores in real biomechanical failure modes instead of a single naive threshold.
- Logical landmark names map to a list of candidate MVNX point labels, first match wins, so the same rules run across recordings whose suit exports use different label sets.
- The Windows-only capture path (XSens SDK, voice/keyboard dispatch, UDP control of MVN Studio) is split from a cross-platform analysis CLI, so scoring runs on any machine and only recording needs the hardware.
- Two visualization paths, deliberately separate: a standalone viewer that hand-reconstructs a 3D skeleton from raw quaternions for quick inspection, and a pipeline-integrated viewer that bakes each recording plus its score and reasoning into a single self-contained HTML file — shareable with no server or dependencies.
Python · XSens MVNX · NumPy · quaternion kinematics
listed under research →