Prepare for measurement
Make sure you have already set up your notches and calibrated them well. You can follow this document if you need any help.
Once you have the pre requisites you can start the capture flow
- Create a workout
- Setup the Notch network
- Wear the devices
- Steady
- Do the capture
- Download
Create a workout
To make a measurement first you need to obtain a NotchWorkout
object. You need for this a skeleton and a workout descriptor. See skeleton & workout loading in the utils.
The default configuration for the chest and the skeleton can be found in the tutorial application after you have a valid licence code by buying one of our kits.
Init workout
Workout is the measurement setting for tracking pre-set motion or group of motions (e.g. baseball swing, punching drill, shoulder mobility test). Workout is the core element of Notch-compatible app architecture.
-
Skeleton skeleton = Skeleton.from( new InputStreamReader( mApplicationContext.getResources().openRawResource(R.raw.skeleton_male), "UTF-8")); Workout workout = Workout.from( "Demo_config", skeleton, IOUtil.readAll( new InputStreamReader( mApplicationContext.getResources().openRawResource(R.raw.config_1_chest))));
-
let workout = NotchWorkout.from( name: "The name of the measurement", skeleton: NotchSkeleton.from( configJsonString: stringSkeletonJson), configString: workoutJson)
Then you can:
- Either call
NotchService.initWithWorkout(...)
with the created workout - Call with channel setting if it is possible that more than one Notch networks are around:
NotchService.initWithChannelAndWorkout(...)
.
Wait until success, progress can be shown based on the progress callbacks parameter. After connecting your devices are tight to the bones they will measure.
Wear devices
Here is the time to put on all the notches. You can easily match where to put them by following the colors of the Notches.
Note that blinking Notches even if have the same colors are different.
Steady
The Steady phase is a brief sensor alignment procedure that the user must perform at the very beginning of the recording session. During steady phase, the user must stand with the arms straightened and legs shoulder-width for about 2 seconds. Once the Steady phase is completed, the user can perform as many recordings as necessary until they remove or move the Notch sensors.
Notches store their previous steady information in the NotchDevice
object. Please make sure you either start from the very same pose and placement every time or the data could be corrupted and the visualization might fail to render correctly.
We highly suggest you refreshing the steady pose before each measurement.
- Call
NotchService.configureSteady(...)
.- To color the notches you should pass true to the
isShowingColors
parameter. - The user has to attach the notches to his/her body according to the specified colors.
- To color the notches you should pass true to the
- Call
NotchService..steady(...)
and wait for the result.- The user has to stay in the steady pose still until the ‘success’ or ‘failure’ callback is called.
- Upon success call
NotchService.getSteadyData(...)
to verify the results
Capture
You have various options to start a capture:
- Time capture:
Before the start, you configure how long this measurement will take. After the specified timeout has reached all the notches will be stopped.- There is no real-time feedback.
- Can be configured to work as a remote (device disconnection will not interrupt your current measurement)
- Stopwatch capture:
After you have started your measurement you can stop at any time.- There is no real-time feedback.
- Real-time capture:
After the start, you receive periodically the recorded and processed measurement data. If the notches reach out of sight the operation stops.- This can be done with a maximum of 4 notches. Note Some Android devices can perform a 6 Notch real-time capture. This varies from device to device due to hardware, firmware and software distribution.
After the 1 & 2 options, you receive a NotchMeasurement
on success which contains useful information about the latest measurement.
See more at download
Timed capture
- Call
NotchService.configureTimedCapture(...)
and wait for the success callback. - Call
NotchService.timedCapture(...)
, the success/failure callbacks are called after the timer ends. - Do your measurement
Remote timed capture
- Call
NotchService.configureTimedCapture(...)
and wait for the success callback. - Call
NotchService.remoteCapture(...)
, the success/failure callbacks are called immediately. - Do your measurement
Upon success, you get a NotchMeasurement
object of the calculated final state. If something goes wrong (for example a Notch turned off) this measurement file will contain bad information.
Capture with stopwatch
- Call
NotchService.configureCapture(...)
and wait for the success callback. - Call
NotchService.capture(...)
, the success/failure callbacks are called after start. - Do your measurement
- Stop the measurement by calling
NotchService.stop(...)
.
Real time
During real-time-capture, the notches send a NotchVisualiserData
object of the current state.
The process is the same as for the stopwatch capture. DO NOT call stop at the end, rather cancel the measurement to finish it.
In the progress callback of the ‘capture’ service operation, you can get access to the ‘realtimeData’ property, which holds the corresponding movement data for the last time frame.
Download a measurement
Great, by now you should know how to properly create a measurement.
To download the notch measurement, either save the NotchMeasurement
from the success block of the capture
call or the result of stop
operation.
Download IImmediatelyAfter Capture
Use the immediate download to acquire the motion data right after the capture was taken and stopped:
- Call the
download
operation with your desired target URL. - Wait for the success.
Download Later
The recorded measurement contains various information about the workout. Call serialize
, to serialize the result to a file.
Save measurement information
- Call the
serializeMeasurement
operation with your desired target URL. - Save the URL somewhere for later usage.
Load measurement information
- Call the
deserializeMeasurement
operation with your desired source URL. - Make sure that the notches that were used for this measurement are turned on.
- Use the loaded object to download the measurements from the devices. See immediate download
Check the results
By acquiring the NotchMeasurement
object of your recording you can check if any of the sensor data became corrupted. Load the getStatus()
method of the measurement and check if it contains the following phrase: Sensor Test
.
If so, we highly suggest you to make a new sensor test to re-calibrate your sensors. Check NotchService.getSensorTestData(...)
.