Measurements in degrees
Flexion, angle from vertical and tilt, computed on the 19 body points that Vision detects.
import KinesiaMotionimport KinesiaMotionVision
let session = MotionSession(exercise: ExerciseLibrary.elbowFlexion, side: .right)session.start(with: VisionPoseProvider(camera: .front))
for await event in session.events() { if case .repCompleted(let rep) = event { print("Clean rep: \(Int(rep.peak))°") }}Measurements in degrees
Flexion, angle from vertical and tilt, computed on the 19 body points that Vision detects.
Reps and holds
Counts reps with hysteresis (no false positives from jitter) and times held positions with a clock that restarts if the patient moves.
Live form checks
Each exercise comes with form rules (“keep your upper arm still”, “keep your trunk upright”). Reps done with poor form are rejected, not counted.
Exercises as data
An exercise is plain JSON: add a new one, or download it from your server, without touching the engine.