KinesteX

Real-Time Motion Events

Launch options that turn on or shape the real-time motion events (reps and holds, form state, feedback, presence, framing, gestures, inactivity) and the raw pose data. The Camera component always sends the real-time events; workout flows send them only when includePoseData contains "events". For the Camera component walkthrough, see Camera Component: real-time events.


Workout flows here means every view that runs the KinesteX exercise player: Main, Workout, Plan, Personalized Plan, Custom Workout, Challenge, AI Trainer workouts and the Box and Training experiences. Assessments and games send none of these events.


OptionTypeDefaultCamera componentWorkout flows
includePoseDatastring[]none"poseLandmarks": a pose_landmarks event every frame with a person. "worldLandmarks": world_landmarks (meters, hip-centered). "angles": adds 2D and 3D joint angles to those events. "events" is not needed: the real-time events are always on"events": turns the real-time events on, plus exercise_setup when each exercise starts and successful_repeat / action per rep. "poseLandmarks" / "worldLandmarks": every frame of the check frame and the exercises (not on rest screens), with exercise (null during the check frame); 2D angles are always included and "angles" adds 3D
inactivityTimeoutnumber (seconds)15Idle seconds before activity INACTIVESame, with "events"
includeFramingHintsbooleanfalseframing_hint (missing body parts, step back or move to center) while the positioning check is openSame, with "events"
includeFormStatebooleanfalseform_state (GOOD, ADJUST, OUT_OF_POSITION)Same, with "events"
enableGestureControlbooleanfalsePosts gesture_detected (PAUSE or RESUME) when the user makes the hands pause gesture. KinesteX does not pause: your app decidesNot used. The workout pauses and resumes on the gesture itself (unless preventGestureControl), and with "events" posts gesture_detected when it does
frameExitPromptbooleanfalsePlays the spoken prompt asking the user to come back when they leave the view (presence LEFT)Not used: the workout already pauses and plays the prompt when the user leaves the frame
frameExitPausebooleanfalseNo reps count while the user is out of view (from presence LEFT to RETURNED); a rep half done when they left is not countedNot used: the workout pauses itself
showSilhouettebooleantruetrue: the positioning check opens before tracking. false: tracking starts at once, and framing_hint / person_in_frame are sent only during a check you open with reset_check_framefalse skips the positioning check
includeRealtimeAccuracybooleanfalsetrue streams correct_position_accuracy (accuracy) on every frame matched against the exercise's positionsSame

In the URL: includePoseData also takes a comma list (?includePoseData=poseLandmarks,events); inactivityTimeout is read as a number and the booleans accept true / false. See URL Parameters.


Workouts: add includePoseData: ["events"] (plus any opt-in above) to the custom params of your workout, plan, challenge or custom workout view. The workout's own events (exercise_completed, workout_progress, ...) are sent either way. See Workout Events.


Related: streamFormGuidance streams the depth-bar data (Camera & Pose Detection). pauseCamera and muteWorkout start the Camera component with the camera off or muted (Camera Component parameters).

Real-time motion events in the Camera component
Swift example:
1kinestex.createCameraView(
2    exercises: ["model-id-1", "model-id-2"],
3    currentExercise: $currentExercise,
4    user: nil,
5    style: nil,
6    isLoading: $isLoading,
7    customParams: [
8        "includePoseData": ["poseLandmarks"], // workouts: ["events"]
9        "inactivityTimeout": 20,
10        "includeFramingHints": true,
11        "includeFormState": true,
12        "enableGestureControl": true,
13        "frameExitPrompt": true,
14        "frameExitPause": true,
15        "includeRealtimeAccuracy": true
16    ],
17    onMessageReceived: { message in
18        // form_state, activity, presence, ... arrive as .custom_type
19    }
20)