Skip to main content

Motion Sensors

Accelerometer

Supported on Android & iOS.

Measures the acceleration force applied to a device, including the force of gravity (Unit: m/s2). Data from the accelerometer, together with Gravity, Gyroscope, and Magnetic Field can provide a good estimate of the device's movement, and subsequently estimate the participant's physical activity.

Each accelerometer record includes the following:

X-Axis:
Acceleration force along the x-axis (including gravity), in m/s2. Internally stored as x_axis.

Y-Axis:
Acceleration force along the y-axis (including gravity), in m/s2. Internally stored as y_axis.

Z-Axis:
Acceleration force along the z-axis (including gravity), in m/s2. Internally stored as z_axis.

Accuracy:
The accuracy of the reading. It can be either 1 for low accuracy, 2 for medium accuracy, or 3 for high accuracy. Internally stored as accu.

Magnetic Field

Supported on Android & iOS.

Measures the ambient geomagnetic field in μT.

Each magnetic field record includes the following:

X-Axis:
Geomagnetic field strength along the x-axis, in μT. Internally stored as x_axis.

Y-Axis:
Geomagnetic field strength along the y-axis, in μT. Internally stored as y_axis.

Z-Axis:
Geomagnetic field strength along the z-axis, in μT. Internally stored as z_axis.

Accuracy:
Same as Accuracy in Accelerometer.

Gyroscope

Supported on Android & iOS.

Measures a device's rate of rotation in radians. Usually used for rotation detection (spin, turn, etc.).

Each gyroscope record includes the following:

X-Axis:
The rate of rotation around the x-axis, in rad/s. Internally stored as x_axis.

Y-Axis:
The rate of rotation around the y-axis, in rad/s. Internally stored as y_axis.

Z-Axis:
The rate of rotation around the x-axis, in rad/s. Internally stored as z_axis.

Accuracy:
Same as Accuracy in Accelerometer.

Linear Acceleration

Supported on Android & iOS.

Measures the acceleration force in m/s2 that is applied to a device, excluding the force of gravity. This data source is usually implemented as a software-based data source and does not have a dedicated hardware chip on the smartphone. The device measures acceleration from the Accelerometer sensor, and excludes the gravity measured by the Gravity sensor, in order to calculate the linear acceleration.

Each linear acceleration record includes the following:

X-Axis:
Acceleration force along the x-axis (excluding gravity), in m/s2. Internally stored as x_axis.

Y-Axis:
Acceleration force along the y-axis (excluding gravity), in m/s2. Internally stored as y_axis.

Z-Axis:
Acceleration force along the z-axis (excluding gravity), in m/s2. Internally stored as z_axis.

Accuracy:
Same as Accuracy in Accelerometer.

Gravity

Supported on Android & iOS.

Measures the force of gravity in m/s2 that is applied to a device. Usually used for motion detection (shake, tilt, etc.).

Each gravity record includes the following:

X-Axis:
Force of gravity along the x-axis, in m/s2. Internally stored as x_axis.

Y-Axis:
Force of gravity along the y-axis, in m/s2. Internally stored as y_axis.

Z-Axis:
Force of gravity along the z-axis, in m/s2. Internally stored as z_axis.

Accuracy:
Same as Accuracy in Accelerometer.

Orientation

Supported on Android & iOS.

Measures the orientation of a device by providing the three elements of the device's rotation vector.

Each orientation record includes the following:

X-Axis:
Rotation vector component along the x-axis (x * sin(θ/2)). Internally stored as x_axis.

Y-Axis:
Rotation vector component along the y-axis (y * sin(θ/2)). Internally stored as y_axis.

Z-Axis:
Rotation vector component along the z-axis (z * sin(θ/2)). Internally stored as z_axis.

Vector Size:
Scalar component of the rotation vector (cos(θ/2)). This value might not be provided. Internally stored as vector_size.

Accuracy:
Same as Accuracy in Accelerometer.

Pedometer

Supported on Android & iOS.

Counts the number of steps taken by the participant over a certain duration. Avicenna uses Android and iOS standard algorithms to collect the count of steps taken. Please refer to Google and Apple documentation for implementation details in Android and iPhone devices.

Each pedometer record includes the following:

Duration
The duration over which this record has collected data, in seconds. Internally stored as duration.

Steps
The number of steps taken by the participant over the specified duration. Internally stored as steps.

Accuracy
The accuracy of the record. Android only, iOS records will always store -1. Internally stored as accu.

Average Active Pace
The average pace of the participant, measured in seconds per meter. iOS only, Android records will always store -1. Internally stored as avg_active_pace.

Current Cadence
The rate at which steps are taken, measured in steps per second. iOS only, Android records will always store -1. Internally stored as cur_cadence.

Current Pace
The current pace of the participant, measured in seconds per meter. iOS only, Android records will always store -1. Internally stored as cur_pace.

Distance
The estimated distance (in meters) traveled by the participant. iOS only, Android records will always store -1. Internally stored as distance.

Floor Ascended
The approximate number of floors ascended by walking. iOS only, Android records will always store -1. Internally stored as floor_ascended.

Floor Descended
The approximate number of floors descended by walking. iOS only, Android records will always store -1. Internally stored as floor_descended.

Data Collection Behavior

Android and iOS devices behave differently in collecting pedometer data. In Android, the operating system sends data to the Avicenna app as soon as a step count is available.

On iOS, Avicenna wakes up every five minutes—unless it is terminated—to query all steps taken during the past five minutes. In the event of app termination, Avicenna will collect data from the most recent time it fetched such data. The only limitation is that the iOS provides data for the past seven days.

Motion-Based Activity Recognition

Supported on Android & iOS.

Uses a combination of motion sensors to detect the type of activity that the participant is currently engaged in. Avicenna uses Android and iOS standard algorithms to detect the participant's type of current activity. Please refer to Google and Apple documentation for implementation details in Android and iPhone devices.

Each activity recognition record includes the following:

Activity Type:
The type of recognized activity. Internally stored as activity_type. It can be one of the following values:

  • 0: Unknown. Unable to detect the current activity.
  • 1: Still. The device is still (not moving).
  • 2: Tilting. The device angle relative to gravity changed significantly. This often occurs when a device is picked up from a desk or a user who is sitting stands up.
  • 3: On-Foot. The device is on a participant who is walking or running.
  • 4: Walking. The device is on a user who is walking. This is a sub-activity of On-Foot.
  • 5: Running. The device is on a user who is running. This is a sub-activity of On-Foot.
  • 6: On-Bicycle. The device is on a bicycle.
  • 7: In-Vehicle. The device is in a vehicle, such as a car.

Please note that we can have different activity types at the same time. For example, if the participant is driving and stops in some places during driving, we will have two records at the same time with different activity types: In-Vehicle and Still

Confidence Level

A value that represents the algorithm's confidence in the recognized activity. Internally stored as confidence_level. For Android devices, the confidence level is a value between 0 to 100, and for iOS devices, the confidence level is either 0 (low), 1 (medium), or 2 (high).

Data Collection Behavior

On iOS, Avicenna wakes up every five minutes—unless it is terminated—to query all motion-based activities during the past five minutes. In the event of app termination, Avicenna will collect data from the most recent time it fetched such data. The only limitation is that the iOS provides data for the past seven days.