Session State
Session states are introduced to describe in what situation of the exercise the user is. The following session states are defined:
NO_HUMAN
: The user is not recognized.POSITIONING
: The user's pose does not match the pattern of the current exercise. In order to change toEXERCISING
, the user must reach starting position for the exercise.EXERCISING
: The user reached the starting position and can conduct the exercise.
The ultimate goal for the user is to be in the session state EXERCISING
to
conduct the exercise, profit from our form coaching and repetition count. In
each session state, our system provides appropriate feedback to explain why the
user is in this state or what to do next to reach the state EXERCISING
.
If the session state changes, the new session state is received within the
onSessionStateChanged
listener.
In an ideal case, the user follows the guidance instructions, reaches the state
EXERCISING
and does not leave this session state anymore until all repetitions
are performed. However, if the user moves out of frame, is suddenly hidden
behind an obstacle or is for example not anymore positioned frontal to the
camera, the user will leave the session state EXERCISING
. In this case, the
user will be informed why she or he has fallen into POSITIONING
or NO_HUMAN
state and will again receive guidance how to position correctly to continue
exercising.
How are the feedback provided?
All feedback that guide the user into the session state EXERCISING
are
received within the onFeedback
listener.
Please note that the UX has to filter the feedback because they are received with every analysed frame. We recommend not to display all received feedback and change the displayed feedback only every second for example. However, we intend to change this in the near future for better usability.
How are feedback received in session state EXERCISING?
The onFeedback
listener also provides real time form coaching feedback for
every analysed frame in session state EXERCISING
. This is another option to
coach the user during an exercise instead of listening to the onRepetition
callback that provides the same feedback summarized after each repetition.
Listening to onRepetition
is however still recommended in session state
EXERCISING
because no advanced feedback handling is needed on the UX side.
Additional important UX information
If the session state changes from EXERCISING
to POSITIONING
because the
user left the optimal position for the exercise, a feedback explaining the
reason for this state change is received. This feedback is however only
received for one analysed frame exactly when the session state changes. Hence,
to filter the feedback for this state change, the UX has to check
the onFeedback
when the onSessionStateChanged
reported the new session state
POSITIONING
. The same applies for the session state change from POSITIONING
to NO_HUMAN
.
For example in a squat exercise, the user has to be positioned sideways to be in
session state EXERCISING
. If she or he is in session state EXERCISING
and then positions frontal to the camera, the following unfiltered feedback are
received:
- Frame:
EXERCISING - No feedback
- Frame:
POSITIONING - "You're not standing sideways, position yourself again" - Key = 3581
- Frame:
POSITIONING - "Position yourself sideways to the camera" - Key = 2042
- Frame:
POSITIONING - "Position yourself sideways to the camera" - Key = 2042
- Frame:
POSITIONING - "Position yourself sideways to the camera" - Key = 2042
- Frame: ...