**The original BPMpro technology came from pioneering work carried out in the design of the first motion-based mobile phones. This required unique, very small yet high performance motion sensors to be specifically developed and these form part of the 30+ patents and patents pending covering the technology behind BPMpro.**

BPMpro operates in a real world co-ordinate system where gravity defines the exact orientation of its vertical (Y) axis. The sensors can provide raw and filtered data including Quaternion and Euler information covering all axes of movement. The orientation of the X and Z axes are additionally defined by the Earth’s magnetic field. Rotation and acceleration in all 3 axes are measured:

- Real-time 3-axis adapted acceleration, resolution 0.001g, 0-10g with filtered and raw data being accessible
- Real-time 3-axis orientation, relative to a reference direction and gravity (filtered and compensated) are all measured and computed
- Real-time air pressure inside the sensor, variable based on external interaction which increases the internal air pressure

The core data format used in by BPMpro is based on Quaternion analysis and Euler angles. These mathematical models describe how to measure a moving body.

#### Quaternion analysis ...

A quaternion, a rotation matrix and a set of Euler angles all specify a rotation operation; i.e. an operation that rotates an object from one (base) orientation to another (final) orientation. Therefore a quaternion does not specify an orientation in space, only the change in orientation from a previous orientation.

A quaternion has 4 components, (qw, qx, qy, qz). Visualizing a quaternion rotation can be done as follows:

- Visualize the point in space specified by qx, qy, qz
- Visualize the axis formed by drawing a line from the origin to the point (qx, qy, qz)
- Visualize a rotation about that axis, following the right-hand rule. qw is the cosine of half the rotation angle, therefore the amount of rotation about the rotation axis is 2 * arc_cos(qw)

As an example, consider the quaternion q = (0.8, 0.0, 0.6, 0.0). Looking at the (qx, qy, qz) we see a point on the Y-axis at 0.6 units from the origin. The rotation axis points away from the origin along the Y-axis. The arc_cos(0.8) is approximately 37 degrees; the rotation is therefore 74 degrees (37×2) about the positive Y-axis.

**Quaternion data is, therefore, needed when trying to measure the orientation of a moving body.**

#### Euler angles ...

Euler angles are three angles introduced by Leonhard Euler to describe the orientation (geometry) of a rigid body.

Euler angles also represent three composed rotations that move a reference frame to a given referred frame. This is equivalent to saying that any orientation can be achieved by composing three elemental rotations (rotations around a single axis), and also equivalent to saying that any rotation matrix can be broken down as a product of three elemental rotation matrices.

Euler rotations are defined as the movement obtained by changing one of the Euler angles while leaving the other two constant. Euler rotations are never expressed in terms of the external frame, or in terms of the co-moving rotated body frame, but in a mixture. They constitute mixed axes of a rotation system, where the first angle moves the line of nodes around the external axis z, the second rotates around the line of nodes and the third one is an intrinsic rotation around an axis fixed in the body that moves.

The most popular application is to describe aircraft attitudes, where zero degrees elevation represents the horizontal attitude. The Euler angles represent the orientation of the aircraft in respect a reference axis system (world frame) with three angles, which in the context of an aircraft are normally called Heading, Elevation and Bank or ‘Yaw, Pitch and Roll’.

Calculations involving acceleration, angular velocity, angular momentum and kinetic energy are often easiest in-body coordinates, because then the moment of inertia tensor does not change in time. The angular velocity of a rigid body takes a simple form using Euler angles in the moving frame. Also Euler’s rigid body equations are simpler because the inertia tensor is constant in that frame.

Euler angles are used in robotics for describing the degrees of freedom of a wrist joint. They are also used in electronic stability control in a similar way.

**Euler angles are, therefore, ideal for the measurement of limb angles on a moving body.**