Preview: this manual is being updated to cover Shimmer3R. Notes marked TODO are open questions our team is still confirming.
1. Introduction
This document is an accompaniment to the following inertial measurement units (IMUs) from Shimmer:
The Shimmer3 Wireless Sensor Unit contains accelerometers, a gyroscope and a magnetometer to enable a complete 9 DoF solution. There are two accelerometers, providing the option for wide range or low noise measurements, allowing the user to tailor the configuration to the needs of the application.
The Shimmer3R Wireless Sensor Unit, the current generation of Shimmer3, offers the same functions with newer sensors: low-noise and wide-range accelerometers, a gyroscope, a magnetometer and a pressure sensor, plus a ±200 g high-g accelerometer on the IMU. The sensors are described in Shimmer3R Capabilities. The theory and applications in Sections 3 to 5 apply to both.
The Shimmer2r Wireless Sensor Unit includes an accelerometer, which measures and records acceleration due to all forces acting on the device.
The Shimmer Gyro IMU daughterboard has a rate gyroscope, which measures angular velocity
The Shimmer 9DoF IMU daughterboard has a both a gyroscope to measure angular velocity and a magnetometer to measure magnetic field, which, combined with the accelerometer on the baseboard, can give a kinematics solution with 9 degrees of freedom (DoF).
It is intended that users refer to this document to help getting started with measuring and processing kinematic data using the Shimmer platform. The document contains theoretical and practical information regarding kinematic signals and sensors, along with a brief description of some common applications for these signals. It also includes technical information about the board layouts and signal quality specifications. Please refer to the Table of Contents on the previous page to find the parts of this document that are most relevant to your needs.
2. General Information
2.1. Pre-Requisites
- A Shimmer3R, Shimmer 3, Shimmer 2, Shimmer 2r* device programmed with appropriate firmware. A Shimmer3R ships with LogAndStream for Shimmer3R, which logs and streams. For example for Shimmer 3, LogAndStream (v0.6.0 or greater) can be used to log data or stream data over Bluetooth while SD Log (v0.12.0 or greater) can be used to log data to the SD card; both are available for download from www.shimmersensing.com. For Shimmer 2r, BtStream (v1.2.0 or greater) can be used to stream data over Bluetooth while SD Log (v1.6 or greater) can be used to log data to the SD card.
If using Shimmer2 or Shimmer2r, the following IMU daughterboards are optional:
A Shimmer Gyro IMU daughterboard.
A Shimmer 9DoF IMU daughterboard.
3. Inertial Measurement Units
This sections provides a brief introduction to IMUs (sometimes known as kinematic sensors) and the signals that they measure.
3.1. Accelerometer
The acceleration, a, of a body can be defined as its rate of change of velocity and it is directly proportional to the forces, F, acting on the body:
$`\underline{a} \propto \underline{F}`$.
An accelerometer is a device which measures acceleration due to all forces acting on the device. Forces acting on a device include both the gravitational force due to the mass of the earth as well as any inertial forces which may be applied to the device.
The two primary components of acceleration are, thus, inertial and gravitational acceleration. Thus, the total acceleration, $`\underline{a}_T`$, measured by the device is the vector sum of these components:
$`\underline{a}_T = \underline{a}_I + \underline{g}`$,
where $`\underline{a}_I`$ is the inertial component and $`\underline{g}`$ is the gravitational component.
Inertial acceleration
Inertial acceleration occurs due to the application of a force other than gravity to a body. Unless a body is completely motionless or moving with a constant velocity, there are inertial forces acting on it. These forces give rise to inertial acceleration. This acceleration is defined as the rate of change of velocity of the body in motion. It is measured in units of m/s2.
Acceleration due to gravity
Gravity is a natural phenomenon by which physical bodies attract each other with a force proportional to their masses. Gravity is most familiar as the agent that gives weight to objects with mass and causes them to fall to the ground when dropped.
The units of gravity are m/s2. Thus, it is a form of acceleration and is measured by an accelerometer. When an accelerometer is completely stationary (i.e. there is no inertial acceleration acting on the device), it measures a constant acceleration equal in magnitude to the acceleration due to gravity (9.81 m/s2 approx). This is often referred to in units labelled “g”, where 1 g ≈ 9.81 m/s2.
It is a common misconception to assume that the direction of the gravity vector measured by an accelerometer is vertically downwards; this is incorrect. In fact, the measured vector of acceleration due to gravity points vertically upwards from the Earth’s surface.
A simple example to help you remember that this is the case is the observation that an accelerometer in free-fall records an acceleration of zero. In this case, the downward inertial acceleration due to motion equals the upward gravitational acceleration.
A good way to understand why the measured acceleration due to gravity points in an upward direction is to imagine that an accelerometer is a hollow cube with a ball inside, as illustrated in Figure 3‑1. The six faces of the cube will measure acceleration in the positive and negative directions of the three sensing axes as illustrated by the X, Y and Z directions in the figure. To begin with, imagine that the ball is weightless – it is suspended in the middle of the hollow cube and not affected by gravity.
In Figure 3‑1, the accelerometer has no forces acting on it – i.e. no inertial acceleration due to movement and no gravitational acceleration. The acceleration measured in each of the axes, $`a_x`$, $`a_y`$ and $`a_z`$, will be zero. This is the case when the device is in free-fall.
Figure 3‑1 Accelerometer in free-fall
Now, continuing to ignore gravity by assuming that the ball is weightless, imagine that the cube is moved to the right; i.e. acceleration in the positive Y-direction, as shown in Figure 3‑2. The accelerometer will detect acceleration in the positive Y-direction by feeling the suspended ball press against the opposite face of the box.
Figure 3‑2 Acceleration in positive Y-direction
Now, let’s lift the assumption that the ball is weightless and include the effect of gravity. If the accelerometer is motionless, the ball will rest on the bottom face of the hollow cube. Just as you have seen that positive acceleration in the Y-axis was detected by the ball pressing against the opposite face, in this case, positive acceleration due to gravity in the Z-axis will be detected by the ball pressing against its opposite face. Thus, it is clear that acceleration due to gravity, measured by the accelerometer, points in an upward direction.
Figure 3‑3 Accelerometer measuring gravity in upward positive Z-direction
Measuring 3D Acceleration
The Shimmer3 is equipped with tri-axial accelerometers (as is the Shimmer2r). The default representation of its reference axes, as assumed in Shimmer applications, is arranged as shown in Figure 9‑2. Thus, the acceleration measured by the Shimmer device has three components, one in each of the X-, Y- and Z-axes.
Figure 3‑4 Shimmer3 default axis directions
To understand how the acceleration is distributed across the axes, we consider, first, a single axis (uni-axial) accelerometer.
Uni-axial accelerometer
A uni-axial accelerometer measures the sum of the inertial acceleration component and gravitational acceleration component acting along its single measuring axis. The left side of Figure 3‑5 shows a uni-axial accelerometer, with measurement axis, $`{\underline{a}}_{x}`$, attached to a leg segment. There is an inertial acceleration of $`{\underline{a}}_{I}`$ acting on the segment, as illustrated. The gravitational acceleration vector, $`\underline{g}`$, is also included in the figure.
Figure 3‑5: Uni-axial accelerometer attached to a leg segment
In the insert at the left side of the figure, the sum of the inertial and gravitational acceleration vectors is illustrated by a dashed arrow, $`{\underline{a}}_{I} + \underline{g}`$. This vector is the total acceleration acting on the device. The sensor axis, $`{\underline{a}}_{x}`$, measures a component of this acceleration, whose magnitude is given by:
$`{\underline{a}}_{x} = \left\| {\underline{a}}_{I} + \underline{g} \right\|\cos(\gamma)`$ ,
where $`\left\| x \right\|`$ denotes the magnitude of the vector $`\underline{x}`$, and $`\gamma`$ is the angle between the measurement axis, $`{\underline{a}}_{x}`$, and the total acceleration vector*,* $`{\underline{a}}_{I} + \underline{g}`$. Alternatively, $`{\underline{a}}_{x}`$ can be written as:
$`{\underline{a}}_{x} = a_{I}\cos{\left( \theta_{x} \right) + g\cos\left( \varphi_{x} \right)}`$ ,
where $`\theta_{x}`$ and $`\varphi_{x}`$ are the angles that the axis, $`{\underline{a}}_{x}`$, makes with the inertial acceleration vector, $`{\underline{a}}_{I}`$, and the gravity vector, $`\underline{g}`$, respectively, $`a_{I} = \left\| {\underline{a}}_{I} \right\|`$ is the magnitude of inertial acceleration vector and $`g = 9.81`$ m/s2 is the magnitude of the gravity vector.
In the right side of Figure 3‑5, the leg segment (and, hence, the uni-axial accelerometer) has moved and come to rest in the position shown. In this case, the inertial acceleration is zero ($`{\underline{a}}_{I} = 0`$). Thus, gravity is the only acceleration component felt by the device. Due to the rotation of the sensor cause by the movement of the leg segment, the accelerometer measurement axis is now perfectly aligned with the gravity vector. In this case, $`{\underline{a}}_{x} = \underline{g}`$, as illustrated in the insert on the right side of the figure.
Bi-axial accelerometer
A bi-axial accelerometer consists of two uni-axial accelerometers arranged at a right angle to one another, as illustrated in Figure 3‑6. This device measures the sum of the inertial acceleration component and gravitational acceleration component acting along each of its two measuring axis. The bi-axial accelerometer in Figure 3‑6 is measuring acceleration under the same conditions as described for Figure 3‑5.
Figure 3‑6: Bi-axial accelerometer attached to a leg segment
The insert at the left side of the figure shows the vector sum of the inertial and gravitational acceleration components, as in Figure 3‑5. This time, the acceleration will be measured in two axes. However, the acceleration measured by the X-axis ($`{\underline{a}}_{x}`$) will be exactly the same as that measured by the uni-axial accelerometer in the same position; the two axes of the accelerometer act independently of each other. The Y-axis ($`{\underline{a}}_{y}`$) will measure the acceleration perpendicular to $`{\underline{a}}_{x}`$, whose magnitude is given by:
$`{\underline{a}}_{y} = \left\| {\underline{a}}_{I} + \underline{g} \right\|\sin(\gamma)`$ ,
where $`\gamma`$ is the angle between the measurement axis, $`{\underline{a}}_{x}`$, and the total acceleration vector*,* $`{\underline{a}}_{I} + \underline{g}`$, as described previously (note, that this angle is defined from the X-axis). Alternatively, $`{\underline{a}}_{y}`$ can be written as:
$`{\underline{a}}_{y} = a_{I}\cos{\left( \theta_{y} \right) + g\cos\left( \varphi_{y} \right)}`$ ,
where $`\theta_{y}`$ and $`\varphi_{y}`$ are the angles that the axis, $`{\underline{a}}_{y}`$, makes with the inertial acceleration vector, $`{\underline{a}}_{I}`$, and the gravity vector, $`\underline{g}`$, respectively.
Now, consider the right side of Figure 3‑6, in which the inertial acceleration is zero and the X-axis is parallel to the gravity vector. In this situation, the Y-axis is perpendicular to the gravity vector (i.e. at an angle of 90°) and, thus, the Y-axis will measure $`{\underline{a}}_{y} = 0`$ because the gravity vector has no component perpendicular to itself. Indeed, the component of any vector acting perpendicular to the vector itself is always zero.
The total acceleration measured by the bi-axial accelerometer may be written as a vector:
$`\underline{a} = \begin{bmatrix} a_{x} \\ a_{y} \end{bmatrix} = \begin{bmatrix} \left\| {\underline{a}}_{I} + \underline{g} \right\|\cos(\gamma) \\ \left\| {\underline{a}}_{I} + \underline{g} \right\|\sin(\gamma) \end{bmatrix} = \begin{bmatrix} a_{I}\cos{\left( \theta_{x} \right) + g\cos\left( \varphi_{x} \right)} \\ a_{I}\cos{\left( \theta_{y} \right) + g\cos\left( \varphi_{y} \right)} \end{bmatrix}`$ .
A bi-axial accelerometer can be used to measure the inclination angle of the body to which it is attached, if its measurement axes are located in the plane of the gravity vector and the only force acting on the device is gravity. In the case shown on the right-hand side of Figure 3‑6, $`{\underline{a}}_{I} = 0`$ and the angle of inclination, $`\gamma`$, of the device, with respect to the gravity vector is given by:
$`\gamma = \tan^{- 1}\left( \frac{a_{y}}{a_{x}} \right)`$.
Tri-axial accelerometer
A tri-axial accelerometer is formed of three mutually orthogonal uni-axial accelerometers (i.e. three accelerometer components arranged such that each axis is at a right angle to the other two axes). As in the case of the uni-axial and bi-axial accelerometers, each axis measures a certain proportion of both the gravitational acceleration and the inertial acceleration. The proportions measured by a given axis depend on the angles between that axis and the directions of the acceleration components. The total acceleration vector can be written as:
$`\underline{a} = \left\lbrack \begin{array}{r} \begin{matrix} a_{x} \\ a_{y} \end{matrix} \\ a_{z} \end{array} \right\rbrack = \left\lbrack \begin{array}{r} \begin{matrix} a_{I}\cos{\left( \theta_{x} \right) + g\cos\left( \varphi_{x} \right)} \\ a_{I}\cos{\left( \theta_{y} \right) + g\cos\left( \varphi_{y} \right)} \end{matrix} \\ a_{I}\cos{\left( \theta_{z} \right) + g\cos\left( \varphi_{z} \right)} \end{array} \right\rbrack`$ ,
where the same notation that has previously been used for the X- and Y-axes is followed for the Z-axis.
3.2. Angular rate gyroscope
The angular velocity of a body can be described as the rate at which the object is rotating, in terms of both the speed of rotation and the axis about which it is rotating. A rate gyroscope can be used to measure angular velocity.
The Shimmer3 is equipped with a tri-axial rate gyroscope to measure angular velocity in three dimensions. (For Shimmer2r, the 9DoF IMU daughterboard or Gyro IMU daughterboard is required.) To understand what component of angular velocity each of the three axes measures, it is useful to, first, consider a uni-axial gyroscope.
Uni-axial rate gyroscope
A uni-axial rate gyroscope measures the angular velocity acting along a single measuring axis. Figure 3‑7 shows a uni-axial gyroscope attached to a rotating plate, rotating with angular velocity $`\underline{\omega}`$, whose magnitude is $`\omega`$ and direction is perpendicular to the plate, as illustrated.
Figure 3‑7: Uni-axial rate gyroscope attached to a rotating plate
The angular velocity measured by the gyroscope, whose measurement axis, $`\omega_{x}`$, makes an angle, $`\beta`$, with the axis about which the plate is rotating, is given by:
$`\omega_{x} = \omega\cos(\beta)`$,
where
$`\omega_{x}`$ is the magnitude of the angular velocity vector component along the measuring axis of the rate gyroscope,
$`\beta`$ is the inclination of the measuring axis with respect to the angular velocity vector,
$`\omega`$ is the magnitude of the angular velocity acting on the sensor.
If the measurement axis is aligned parallel with the rotation axis, then the measured angular velocity will be equal to $`\omega`$. If, on the other hand, the measurement axis is perpendicular to the rotation axis, then it will measure an angular velocity of zero.
Tri-axial rate gyroscope
A tri-axial rate gyroscope is formed by three orthogonal uni-axial rate gyroscopes. A 3-dimensional angular velocity vector is obtained from a tri-axial rate gyroscope. The angular velocity vector measured by a tri-axial rate gyroscope is given by:
$`\underline{\omega} = \left\lbrack \begin{array}{r} \begin{matrix} \omega_{x} \\ \omega_{y} \end{matrix} \\ \omega_{z} \end{array} \right\rbrack = \left\lbrack \begin{array}{r} \begin{matrix} \omega\cos\left( \beta_{x} \right) \\ \omega\cos\left( \beta_{y} \right) \end{matrix} \\ \omega\cos\left( \beta_{z} \right) \end{array} \right\rbrack`$ ,
where $`\beta_{x}`$, $`\beta_{y}`$ and $`\beta_{z}`$ are the angles that the measurement axes, $`\omega_{x}`$, $`\omega_{y}`$ and $`\omega_{z}`$ make with the rotation axis, respectively.
3.3. Magnetometer
Magnetic fields describe the influence of electric currents and magnetic materials on objects around them. The Earth has its own permanent magnetic field whose direction runs from the magnetic South pole to the magnetic North pole and which influences all magnetic objects. This magnetic field can be exploited to determine the heading of an object, using a compass. Large metal objects and sources of electromagnetic interference (such as lights or electronic devices) can distort the local effect of the Earth’s magnetic field, resulting in heading errors, so it is best to use compasses as far away from these sources of interference as possible.
A magnetometer is a sensor which is used to measure the direction and/or the strength of the local magnetic field. If the only magnetic field acting on the magnetometer is the Earth’s magnetic field, then it can be used as a compass to determine the direction in which the sensor is facing, relative to the Earth’s magnetic North pole.
The Earth’s magnetic field does not act parallel to the Earth’s surface. Instead, there is a magnetic inclination (also known as magnetic dip) angle, which causes the compass needle to point upwards or downwards (relative to the horizontal plane of the Earth’s surface), depending on where in the world the compass is. At the magnetic equator, the angle is zero and the magnetic field does act exactly parallel to the Earth’s surface. In the Northern hemisphere, the North end of the compass needle begins to point downwards more and more as one approaches the magnetic North Pole. In the Southern hemisphere, the North end of the compass needle points increasingly upwards as one approaches the magnetic South pole. When using a magnetometer to measure the magnetic field in three dimensions, the appropriate magnetic inclination angle for the geographic location should be taken into account. For example, in Dublin, Ireland, the angle is approximately 68°.
The Shimmer3 is equipped with a tri-axial magnetometer to measure the local magnetic field in three-dimensions. (For Shimmer2r, the 9DoF IMU daughterboard is required,) To understand how the magnetic field measurement is distributed over the three sensing axes, it is useful to, first, consider a uni-axial magnetometer.
Uni-axial magnetometer
A uni-axial magnetometer measures the magnetic field vector acting along its measuring axis. Figure 3‑8 shows a uni-axial magnetometer attached to a leg segment.
Figure 3‑8: Uni-axial magnetometer attached to a leg segment
The magnetic field measured by the magnetometer, whose measurement axis, $`{\underline{m}}_{x}`$, makes an angle, $`\alpha`$, with the magnetic field vector, $`\underline{m}`$, is given by:
$`m_{x} = m\cos(\alpha)`$,
where
$`m_{x}`$ is the magnitude of the magnetic field vector component along the measuring axis of the magnetometer,
$`\alpha`$ is the angle between the magnetometer measuring axis and the magnetic field vector,
$`m`$ is the magnitude of the magnetic field acting on the sensor.
If the measurement axis is aligned parallel with the magnetic field vector, then the measured magnetic field component will be equal to $`m`$. If, on the other hand, the measurement axis is perpendicular to the magnetic field vector, then it will measure a magnetic field of zero.
Bi-axial magnetometer
A bi-axial magnetometer consists of two uni-axial magnetometer components arranged perpendicular to each other. The magnetic field component measured by the X-axis remains unchanged from the uni-axial case. The component measured by the Y-axis is given by:
$`m_{y} = m\sin(\alpha)`$,
where $`\alpha`$ is the same angle that was defined previously and illustrated in Figure 3‑8.
A bi-axial magnetometer can be used to measure the inclination angle of the body to which it is attached, if its measurement axes are located in the plane of the magnetic field vector. In this case, the heading angle, $`\alpha`$, of the device, with respect to the magnetic field vector is given by:
$`\alpha = \tan^{- 1}\left( \frac{m_{y}}{m_{x}} \right)`$.
If the local magnetic field is equal to the Earth’s magnetic field (i.e. there are no sources of interference), then $`\alpha`$ is the heading angle of the sensor, relative to the Earth’s magnetic North pole.
Tri-axial magnetometer
A tri-axial magnetometer is formed by three orthogonal uni-axial magnetometers. A 3-dimensional magnetic field vector is obtained from a tri-axial magnetometer. The magnetic field vector, $`\underline{m}`$, measured by a tri-axial magnetometer is given by:
$`\underline{m} = \left\lbrack \begin{array}{r} \begin{matrix} m_{x} \\ m_{y} \end{matrix} \\ m_{z} \end{array} \right\rbrack = \left\lbrack \begin{array}{r} \begin{matrix} m\cos\left( \alpha_{x} \right) \\ m\cos\left( \alpha_{y} \right) \end{matrix} \\ m\cos\left( \alpha_{z} \right) \end{array} \right\rbrack`$ ,
where $`\alpha_{x}`$, $`\alpha_{y}`$ and $`\alpha_{z}`$ are the angles that the measurement axes, $`m_{x}`$, $`m_{y}`$ and $`m_{z}`$ make with the magnetic field vector, $`\underline{m}`$, respectively.
4. Inertial Sensor Signals
4.1. The IMU Signal
IMUs, like all sensors, are subject to noise and other errors, like offset bias and axis alignment errors. Furthermore, sensor measurements are limited to values in a finite range, whilst most physical phenomena have an infinite range. Also, if the output of the sensor is digital, quantisation introduces noise in the measurements. Thus, the value measured by any sensor is not exactly equal to the value of the phenomenon being measured.
Uni-axial sensor measurement
For a uni-axial sensor, if the value of the sensed phenomenon along the sensor measurement axis is $`\upsilon`$, then the sensor output, $`\Upsilon`$, can be described by:
$`\Upsilon = k\upsilon + b + n`$,
where $`k`$ is the sensor scale factor, $`b`$ is the offset bias and $`n`$ is noise. Ignoring noise, which is usually random and cannot be estimated, the scale factor is the value by which the sensor output will increase for an increase of one unit in the sensed phenomenon and the offset bias is the value of the sensor output when the sensed phenomenon is equal to zero; these quantities can both be estimated by calibrating the sensor1.
Tri-axial sensor measurement
Ideally, a tri-axial IMU should consist of three mutually orthogonal uni-axial sensors (i.e. each axis makes a right angle with the other two axes). However, real sensors tend to be subject to misalignment errors due to minor errors in the placement of sensors, meaning that the sensor axes are not precisely orthogonal to each other. Also, the assumed orientation of the sensor may not be aligned with its true orientation when it is placed inside its casing.
The result of this misalignment error is that it is necessary to define a rotation operation which relates the assumed sensitivity axes with the actual sensitivity axes of the sensor. In fact, the user may define any set of assumed sensitivity axes and calculate the required rotation during the calibration process2. The rotation can be easily described by a rotation matrix, $`R`$.
For a tri-axial sensor, if the value of the sensed phenomenon vector is $`\underline{\upsilon}`$, then the sensor output, $`\underline{\Upsilon}`$, can be described by:
$`\underline{\Upsilon} = KR\underline{\upsilon} + \underline{b} + \underline{n}`$,
where
$`\underline{\Upsilon} = \begin{bmatrix} \Upsilon_{x} \\ \Upsilon_{y} \\ \Upsilon_{z} \end{bmatrix}`$ is the sensor output,
$`\underline{\upsilon} = \begin{bmatrix} \upsilon_{x} \\ \upsilon_{y} \\ \upsilon_{z} \end{bmatrix}`$ is the vector value of the sensed phenomenon,
$`K = \begin{bmatrix} k_{x} & 0 & 0 \\ 0 & k_{y} & 0 \\ 0 & 0 & k_{z} \end{bmatrix}`$ is the diagonal matrix of sensor axis scale factors,
$`R = \begin{bmatrix} r_{x’x} & r_{x’y} & r_{x’z} \\ r_{y’x} & r_{y’y} & r_{y’z} \\ r_{z’x} & r_{z’y} & r_{z’z} \end{bmatrix}`$ is the rotation matrix which defines the actual sensor axes ($`x`$, $`y`$ and $`z`$) with respect to the assumed sensitivity axes ($`x’`$, $`y’`$ and $`z’`$),
$`\underline{b} = \begin{bmatrix} b_{x} \\ b_{y} \\ b_{z} \end{bmatrix}`$ is the offset bias vector, and
$`\underline{n} = \begin{bmatrix} n_{x} \\ n_{y} \\ n_{z} \end{bmatrix}`$ is the noise vector.
The average noise affecting the kinematic sensors on the Shimmer3, Shimmer2r, Gyro IMU daughterboard and 9DoF IMU daughterboard is summarised in Section 6.1 and Appendix 9.1.
4.2. Kinematic Parameters
The complete kinematics of a body in three-dimensional space can be described using the following 15 variables (Winter, 1990):
Linear displacement of body’s centre of mass ($`x`$, $`y`$ and $`z`$),
Linear velocity of the body’s centre of mass ($`\dot{x}`$, $`\dot{y}`$ and $`\dot{z}`$),
Linear acceleration of the body’s centre of mass ($`\ddot{x}`$, $`\ddot{y}`$ and $`\ddot{z}`$),
Angular displacement of the body in two planes ($`\theta_{xy}`$,$`\ \theta_{yz}`$),
Angular velocity of the body in two planes ($`\omega_{xy},\ \omega_{yz}`$),
Angular acceleration of the body in two planes ($`\alpha_{xy},\ \alpha_{yz}`$).
These parameters can be estimated using IMUs with varying levels of difficulty. For example, linear acceleration and angular velocity can be directly estimated from the accelerometer and gyroscope observations, respectively. Angular acceleration can be determined by calculating the derivative of angular velocity, taking care to deal with high frequency noise introduced by the derivative. Angular displacement can be instantaneously estimated using a stationary accelerometer and/or magnetometer, as outlined in Sections 3.1 and 3.3, whilst sensor fusion of at least accelerometer and gyroscope is required to accurately estimate continuous angular displacement for moving bodies. Linear velocity is the integral of linear acceleration, but measures to eliminate errors due to accelerometer offset bias and noise must be taken to ensure accurate estimation. Finally, estimation of linear displacement requires complicated sensor fusion algorithms; this topic is briefly discussed in Section 5.2.
4.3. Coordinate Systems
The coordinate system used to define the variables above must be defined relative to some reference system; if the coordinate system is defined relative to a constant external reference system, then the reference is known as the global system. One of most commonly used global reference systems is the Earth’s {North, East, Down} frame. If, on the other hand, the coordinate system for one body is described relative to the coordinate system of another body (which may itself be variable), then it is known as a relative system.
For example, imagine that two sensors are attached to a person’s arm, with one below the elbow and the other above the elbow, and the person moves his/her arm whilst walking through a building. The relative kinematics describe the linear and angular displacements, velocities and accelerations between the two arm segments, regardless of where in the building the person is, in which direction they are facing, or whether they are moving or still. The global kinematics describe the linear and angular displacement, velocity and acceleration of each sensor, independent of the other sensor, describing where in the building the person is, etc.
The angular displacement of one coordinate system, relative to another system, can be described by a rotation matrix of dimension, 3×3. For more detail on how to construct this matrix, see (Craig, 1989), for example. There are also other formats for describing the angular displacement between to coordinate systems, including angle-axis, Euler angles and quaternions. The preference for one format over another depends largely on the application and its storage and computational requirements and limitations.
5. Applications of IMUs
The following are examples of problems for which IMU-based solutions are often sought. A very brief outline of the suitability of IMUs for these problems is provided, along with some references to help the new user to get started with investigating these topics. Please note that solutions to these applications are not directly supported by Shimmer and the information below is intended as a starting point for the new user, unfamiliar with the relevant literature.
5.1. Gait analysis
Inertial sensors are ideal for measuring the temporal parameters of gait (stride time, step time, stance time). The following paper describes methods by which this can be achieved using a gyroscope (Greene, McGrath, O’Neill, O’Donovan, Burns, & Caulfield, 2010). Determining spatial parameters (e.g. step length and stride length) from inertial sensors is non-trivial due to the problems of drift associated with double integration of the noisy accelerometer signal. Examples of publications which attempt to estimate the spatio-temporal parameters using inertial sensors include (Doheny, Foran, & Greene, 2010), (Bugané, et al., 2012), (Zijlstra, 2004), (Sabatini, Martelloni, Scapellato, & Cavallo, 2005).
5.2. Displacement estimation
Noise and other error sources (e.g. offset bias) in accelerometers mean that it is not possible to accurately estimate displacement by direct double integration of accelerometer observations alone. Indeed, the problem of estimating displacement is not a trivial one and there is vast literature available on the subject. A recently published review of displacement estimation systems (Harle, 2013) and the references therein provide a good starting point for understanding the subject.
Most successful displacement estimation systems rely on fusion of multiple sensors – including accelerometers, gyroscopes and magnetometers, as well as video, GPS, and infra-red position sensors, to name just a few examples. They also involve elaborate processing of the inertial observations, with Kalman filters and their derivatives being among the most popular approaches, e.g. (Won, Melek, & Golnaraghi, 2010). Other ad hoc approaches, such as the use of zero velocity updates for walking data (Skog, Nilsson, & Handel, 2010), or constrained sensor placement (Yadav & Bleakley, 2011) can also help to limit the growth of errors. The required level of accuracy and, more significantly, the length of time over which accurate continuous displacement estimation is needed, determines how complicated the solution needs to be.
5.3. Orientation estimation
Estimation of the orientation of an object in three-dimensional space can be calculated using IMUs. Using accelerometers and gyroscopes, the orientation of the object, relative to its initial orientation, can be determined. For a full orientation solution, estimating absolute instead of relative orientation, magnetometers are also required. There are many such algorithms in the literature – an example of both a relative algorithm and an absolute orientation algorithm can be found in (Madgwick, Harrison, & Vaidyanathan, 2011).
5.4. Fall detection
Fall detection is a common application of IMUs in healthcare, with concerns about an ageing population generating significant research interest in recent years. A basic but over-simplistic method for detecting falls using an accelerometer alone, would be to calculate the magnitude of the measured acceleration and compare this to a threshold to detect a large spike due to an impact. A recent review on fall detection (Mubashir, Shao, & Seed, 2013) contains a section on various accelerometer-based methods and a comprehensive list of references. Other articles describing how IMUs can be used for fall detection include (Bourke, et al., 2010), (Bourke, O’Donovan, & OLaighin, 2008), (Nyan, Tay, & Murugasu, 2008) and the references therein.
6. Practical Usage Considerations
6.1. Shimmer3 Capabilities
Low Noise Accelerometer
The output of the low noise accelerometer device on the Shimmer3 is analog. A KXRB5-2042 device from Kionix is used. The following approximate values apply to this device:
Zero-output: 1.5 V.
Full scale range: ±2.0 g.
Sensitivity: 600 mV/g.
Please refer to the manufacturer’s datasheets for detailed information.
Wide Range Accelerometer
The output of the wide range accelerometer device on the Shimmer3 is digital. An LSM303DLHC device from STMicro is used (this chip also gives magnetic sensing output). The following approximate values apply to this device:
Full scale range: ±2.0 g; ±4.0 g; ±8.0 g; ±16.0 g.
Sensitivity (LSB/g): 1000 (±2.0 g); 500 (±4.0 g); 250 (±8.0 g); 83.3 (±16.0 g).
Output: 16 bit output2.
Please refer to the manufacturer’s datasheets for detailed information.
Gyroscope
The output of the gyroscope device on the Shimmer3 is digital. The gyroscope on the MPU-9150 chip from Invensense is used. The following approximate values apply to these devices:
- Full scale range (deg/sec): ±250; ± 500; ±1000; ±2000.
Sensitivity (LSB/(deg/sec)): 131 (±250); 65.5 (±500); 32.8 (±1000); 16.4 (±2000).
Output: 16 bits.
Please refer to the manufacturer’s datasheets for detailed information.
Magnetometer
The output of the magnetometer device on the Shimmer3 is digital. An LSM303DLHC device from STMicroelectronics is used (this chip also gives wide range accelerometer output). The following approximate values apply to this device:
Full scale range (Ga): ±1.3; ±1.9; ±2.5; ±4.0; ±4.7; ±5.6; ±8.1.
Sensitivity (X,Y/Z) (LSB/Ga): 1100/980 (±1.3); 855/760 (±1.9); 670/600(±2.5); 450/400 (±4.0); 400/355(±4.7); 330/295 (±5.6); 230/205 (±8.1).
Output: 16 bits3.
Please refer to the manufacturer’s datasheets for detailed information.
6.2. Shimmer3R Capabilities
All the kinematic sensors on the Shimmer3R are digital, including the low-noise accelerometer, which on Shimmer3 is analogue. The ranges and sampling rates below are those offered in Consensys and the Shimmer APIs. Please refer to the manufacturers’ datasheets for sensitivities and detailed information; calibration in Consensys accounts for the sensitivity of each range.
| Function | Device | Full scale range | Sampling rate |
|---|---|---|---|
| Low noise accelerometer | LSM6DSV (STMicroelectronics) | ±2.0 g; ±4.0 g; ±8.0 g; ±16.0 g | Shared with the gyroscope |
| Gyroscope | LSM6DSV (STMicroelectronics) | ±125; ±250; ±500; ±1000; ±2000; ±4000 deg/sec | 1.875 Hz to 7680 Hz |
| Wide range accelerometer | LIS2DW12 (STMicroelectronics) | ±2.0 g; ±4.0 g; ±8.0 g; ±16.0 g | 12.5 Hz to 1600 Hz (high-performance mode); 1.6 Hz to 200 Hz (low-power mode) |
| Magnetometer | LIS2MDL (STMicroelectronics) | ±49.152 Ga (one range) | 10, 20, 50 or 100 Hz |
| High-g accelerometer (IMU only) | ADXL371 (Analog Devices) | ±200 g | 320, 640, 1280 or 2560 Hz |
| Pressure and temperature | BMP390, or BMP581 on later boards (Bosch) | 300 hPa to 1250 hPa | 0.0015 Hz to 200 Hz |
The low noise accelerometer and the gyroscope are one device, so they share a sampling rate. Whatever the sensors allow, the Shimmer samples at no more than 4096 Hz.
Compared with Shimmer3:
- Magnetometer: there is a single range, ±49.152 Ga, wider than the widest Shimmer3 range (±8.1 Ga), so there is no range to choose.
- Gyroscope: a ±125 deg/sec range for slow movements and a ±4000 deg/sec range for fast ones are added.
- High-g accelerometer: this is new, for impacts well beyond ±16 g.
- Data order: Shimmer3R sends pressure before temperature, and its temperature value is 3 bytes rather than 2. Consensys and the Shimmer APIs handle this; it matters only to software that parses raw packets itself.
TODO(S3R): Confirm the following before publishing:
- whether the alternate LIS3MDL magnetometer fitted on early Shimmer3R boards needs mentioning;
- whether every Shimmer3R IMU carries the ADXL371;
- that the sensor axis directions match the Shimmer3 figures in this guide;
- whether the FAQ below about a -4096 magnetometer reading applies to the LIS2MDL.
6.3. Noise Specifications
Table 1 shows the noise performance that can be expected at varying signal bandwidths for the IMU devices on a Shimmer3 unit. The sampling rate in each case was 500 Hz and a low-pass filter was used to vary the bandwidth.
| Bandwidth (Hz) | 50 | 100 | 250 |
|---|---|---|---|
| Low Noise Accelerometer RMS noise (m/s2) | 3.51 x 10-3 | 5.09 x 10-3 | 8.12 x 10-3 |
| Wide Range Accelerometer RMS noise (m/s2) | 18.6 x 10-3 | 27.5 x 10-3 | 37.2 x 10-3 |
| Gyroscope RMS noise (deg/s) | 0.0322 | 0.0481 | 0.0785 |
| Magnetometer RMS noise (normalised local flux) | 0.0050 | 0.0081 | 0.0129 |
Table 1 : Measured RMS noise for Shimmer3
TODO(S3R): Measure, or obtain, the corresponding noise figures for Shimmer3R at the same bandwidths and sampling rate, and add them as a second table.
6.4. Safety Considerations
None.
6.5. Firmware
Developers should leverage the driver and test application code in the Shimmer github repository for Shimmer3. The Shimmer User Manual also includes useful information in the embedded firmware section.
For Shimmer3R, the sensor drivers are in https://github.com/ShimmerResearch/shimmer3r-firmware. The sensing, configuration and data-format behaviour common to both generations is documented in https://github.com/ShimmerResearch/log-and-stream-common/tree/main/docs.
7. FAQs
I have set the accelerometer range to ±1.5g; why can I get readings of up to 2g?
The selected range of the accelerometer is the range over which the measurements are reliable and performance is guaranteed by the sensor manufacturer. The sensor can operate beyond these limits but it is not recommendable to rely on out-of-range measurements.
I have configured my Shimmer2/Shimmer2r Wireless Sensor Unit to stream accel, gyro and mag data, but only the accel data looks meaningful – why is this?
Ensure that you have attached a Shimmer 9DoF IMU daughterboard to the Shimmer baseboard before you try to stream or log magnetometer data and that you have attached either a 9DoF IMU daughterboard or a Gyro IMU daughterboard to the Shimmer baseboard before you try to stream or log gyroscope data.
Can I use IMUs to analyse gait?
IMUs are commonly used for gait analysis. Please see Section 5.1 for a brief discussion of this subject and some references to point you to recent literature on the topic.
Can I use accelerometer data to measure displacement?
This is a non-trivial problem. Please see Section 5.2 for a brief discussion of this problem and some references to point you to recent literature on the topic.
Why does a Shimmer3 magnetometer axis sometimes read as -4096?
In the event of a data overflow on a magnetometer axis – as would be the case if the local magnetic field strength exceeds the configured magnetometer range – the corresponding axis channel will read as a value of -4096 in 2s complement form. To overcome this, simply increase the magnetometer range.
8. References
Bourke, A. K., O’Donovan, K. J., & O Laighin, G. (2008). The identification of vertical velocity profiles using an inertial sensor to investigate pre-impact detection of falls. Medical Engineering & Physics , 30 (7), 937-946.
Bourke, A. K., van de Ven, P., Gamble, M., O’Connor, R., Murphy, K., Bogan, E., et al. (2010). Evaluation of waist-mounted tri-axial accelerometer based fall-detection algorithms during scripted and continuous unscripted activities. Journal of Biomechanics , 43 (15), 3051-3057.
Bugané, F., Benedetti, M. G., Casadio, G., Attala, S., Biagi, F., Manca, M., et al. (2012). Estimation of spatial-temporal gait parameters in level walking based on a single accelerometer: Validation on normal subjects by standard gait analysis. Computer Methods and Programs in Biomedicine , 108 (1), 129-137.
Craig, J. (1989). Introduction to Robotics: Mechanics and Control (2nd edition ed.). (J. Craig, Ed.) New York: Addison-Wesley.
Doheny, E. P., Foran, T. G., & Greene, B. R. (2010). A single gyroscope method for spatial gait analysis. Annual International Conference of the IEEE Engineering in Medicine and Biology Society EMBC 2010. Buenos Aires, Agentina.
Greene, B. R., McGrath, D., O’Neill, R., O’Donovan, K. J., Burns, A., & Caulfield, B. (2010). An adaptive gyroscope-based algorithm for temporal gait analysis. Medical & Biological Engineering & Computing , 48 (12), 1251 – 1260.
Harle, R. (2013). A Survey of Indoor Inertial Positioning Systems for Pedestrians. IEEE Communications Surveys & Tutorials , PP (99), 1 – 13.
Madgwick, S., Harrison, A. J., & Vaidyanathan, R. (2011). Estimation of IMU and MARG orientation using a gradient descent algorithm. IEEE International Conference on Rehabilitation Robotics (ICORR), (pp. 1-7).
Mubashir, M., Shao, L., & Seed, L. (2013). A survey on fall detection: Principles and approaches. Neurocomputing , 100 (Special Issue: Behaviours in Video), 144-152.
Nyan, M. N., Tay, F. E., & Murugasu, E. (2008). A wearable system for pre-impact fall detection. Jounral of Biomechancis , 41 (16), 3475-3481.
Sabatini, A., Martelloni, C., Scapellato, S., & Cavallo, F. (2005). Assessment of walking features from foot inertial sensing. IEEE Transactions on Biomedical Engineering , 52 (3), 486 – 494.
Skog, I., Nilsson, J. O., & Handel, P. (2010). Evaluation of zero-velocity detectors for foot-mounted inertial navigation systems. International Conference on Indoor Positioning and Navigation IPIN2010. Zurich, Switzerland.
Winter, D. (1990). Biomechanics and Motor Control of Human Movement, Second Edition. New York: Wiley.
Won, S. H., Melek, W. W., & Golnaraghi, F. (2010). A Kalman/Particle Filter-Based Position and Orientation Estimation Method Using a Position Sensor/Inertial Measurement Unit Hybrid System. IEEE Transactions on Industrial Electronics , 57 (5), 1787-1798.
Yadav, N., & Bleakley, C. (2011). Two stage Kalman filtering for position estimation using dual Inertial Measurement Units. 2011 IEEE SENSORS. Limerick, Ireland.
Zijlstra, W. (2004). Assessment of spatio-temporal parameters during unconstrained walking. European Jorunal of Applied Physiology , 92 (1-2), 36-44.
9. Appendix
9.1. Legacy hardware: Shimmer2/Shimmer2r
Shimmer2r IMU Daughterboard Configuration
This appendix is written generically and may describe some capabilities that are not present on your board. Please refer to your purchase record or to Figure 9‑1, below, to identify which of the following capabilities apply to your device:
3-axis Gyroscope with User Interaction controls
3-axis Magnetic Sensor with User Interaction controls
3-axis Magnetic Sensor and 3-axis Gyroscope with User Interaction controls
All of the configurations extend the capabilities of the Shimmer platform. Note that Figure 9‑1 and the notes in this section refer to current production hardware only, i.e. SR16-6 or later. For older hardware, please refer to Section 9.2 Legacy Hardware: Shimmer IMU daughterboards. See the marking on the board for hardware revision number (SR16-x or SR2-x).


Figure 9‑1: Board layout
If the locations marked U1 and U2 are empty, then there is no gyroscope capability on your device.
If the location marked U5 is empty, then there is no magnetometer capability on your device.
Accelerometer
The output of the accelerometer device on the Shimmer2 and Shimmer2r baseboards is analog. An MMA7361 device from Freescale is used. The following approximate values apply to this device:
Zero-output: 1.5 V.
Full scale range: ±1.5 g; ±6.0g.
- Factory option: ±4.0 g; ±12.0 g.
Sensitivity: 727 mV/g (±1.5 g); 187 mV/g (±6.0 g).
Note that the above specifications are derived from the datasheet for the MMA7361, which assumes a supply voltage of 3.3V, by scaling the values appropriately for Shimmer2/2r, on which the MMA7361 is running from a supply voltage of 3V.
Please refer to the manufacturer’s datasheets for detailed information.
Magnetometer
A highly integrated MEMs sensor provides 3-axis magnetic field sensing capabilities (digital compassing) on the Shimmer 9DoF IMU daughterboard. A HMC5883L4 device from Honeywell is used. The Shimmer’s I2C interface is used to configure and communicate with the sensor. The key features are listed below:
Resolution: 2 mGa.
Full Scale Measurement range: selectable up to ±8 Ga measurement range.
Digital interface supports .75-75 Hz Output Data Rate (ODR).
Power consumption increases rapidly above the default ODR setting (15Hz).
Software interface for gain/rate selection, bias, and power control.
Dedicated micro-power regulator for lowest power User Interface.
Please refer to the manufacturer’s datasheets for detailed information.
Gyroscope
The output of the Gyro MEMs devices on the Shimmer 9DoF IMU daughterboard and Shimmer Gyro IMU daughterboard is analog. Both boards have a fixed reference output and run off of a secondary LDO for improved power-supply noise rejection. LPR450AL and LPY450AL devices from ST Micro are used5. The following approximate values apply to these devices:
Zero-output: 1.5 V 6.
Sensitivity: 2 mV/(deg/sec).
Full scale range: ± 500 deg/sec.
- Factory option: 2000 deg/sec
Please refer to the manufacturer’s datasheets for detailed information.
Gain selection
With reference to Figure 9‑1, the following parts indicate the full scale range for your board:
Factory default: (500deg/sec)
R6, R9, R12 installed.
R7, R11, R3 not installed.
Customised option: (2000deg/sec)
R6, R9, R12 not installed.
R7, R11, R3 installed.
Gyro Input Multiplexer
An analog multiplexer (MUX) provides additional signals for applications based on the logic signal SEL_A0:
| Shimmer Signal | Gyro Input Mode, SEL_A0 = 0 | Aux-input Mode, SEL_A0 = 1 |
|---|---|---|
| ADC6 | Y Rotation | X/Y Gyro Zero-voltage VREF |
| ADC1 | X Rotation | X/Y Gyro Zero-voltage VREF7 |
| ADC2 | Z Rotation | Z Gyro Zero-voltage VREF |
Table 2 : Gyro board multiplexer settings
User Interface
The top-side components on the Shimmer 9DoF IMU and Shimmer Gyro IMU daughterboards provide two switches and an LED indicator.
Switch, SW1, is application specific; it is pulled high. Its function can be changed by moving resistors as follows:
Factory setting: SW1 is user pushbutton (wired to USER_PB/SER0_RTS).
R24 installed.
R14 installed.
R23 not installed.
Functionality is SW defined, eg. start-stop control in logging FW.
Optional setting: SW1 is reset/power.
R23 installed.
R24 not installed.
R14 not installed.
This configuration can be used when easy user power on/off is desired.
Notes:
R23, R24 are zero-ohm SMT0603 jumpers.
R14 is a 100k SMT resistor.
Switch, SW2, is always tied to Shimmer baseboard reset and can be used to reset/power on/off a Shimmer2/Shimmer2r.
The indicator, D1, is active low and tied to USER_LED/SER0_RXD on the Shimmer baseboard.
The LED should not be confused with the coloured indicators on the Shimmer baseboard (which are exercised by the sample program blink).
Possible uses for the UI components on the board, in a logging or streaming application, are:
Reset Button press: Restart application.
User Button press: Start/Stop logging or data transmission.
LED: On when logging or streaming data.
Noise Specifications
Table 3 shows the noise performance that can be expected at varying signal bandwidths for the accelerometer on a Shimmer2r unit and the gyroscope and magnetometer on an SR16-6 daughterboard (illustrated in Figure 9‑1). The sampling rate in each case was 500 Hz and a low-pass filter was used to vary the bandwidth.
| Bandwidth (Hz) | 50 | 100 | 250 |
|---|---|---|---|
| Accelerometer RMS noise (m/s2) | 24.2 x 10-3 | 36.8 x 10-3 | 60.9 x 10-3 |
| Gyroscope RMS noise (deg/s) | 0.185 | 0.297 | 0.480 |
| Magnetometer RMS noise (normalised local flux) | 0.0123 | 0.0138 | 0.0139 |
Table 3 : Measured RMS noise for Shimmer2r with SR16-6 daughterboard8
Expansion Connector Pin-Out for Shimmer2 and Shimmer2r
| SHIMMER Net name | SHIMMER Pin Number | Expansion Pin Number | Expansion Function |
|---|---|---|---|
| PV | 1 | 20 | PV Supply |
| GND | 2 | 19 | GND |
| SER0_RTS | 3 | 18 | USER_PB |
| VSENSE_ADC6 | 4 | 17 | ADC6 (Y-axis Rotation or XY VREF) |
| VSENSE_ADC2 | 5 | 16 | ADC2 (X-axis Rotation or XY VREF) |
| VSENSE_ADC1 | 6 | 15 | ADC1 (Z -axis Rotation or Z VREF) |
| BSL_TX | 7 | 14 | GYRO_PWREN_N (Low = Enabled) |
| SER0_CTS | 8 | 13 | SEL_A0 (MUX) (Low=Gyro; High= Aux) |
| GPIO_INTERNAL | 9 | 12 | No Connect |
| BSL_RX | 10 | 11 | No Connect |
| PV_CHG | 11 | 10 | No Connect |
| SER0_RXD | 12 | 9 | USER_LED |
| SER0_TXD | 13 | 8 | GYRO ZERO (Gyro HPF RESET) (Low = normal operation; High = reset external high-pass filter) |
| SPI0_SCLK_EXP | 14 | 7 | I2C SCL line for Magnetic sensor |
| JTAG_MSP_TCK | 15 | 6 | No Connect |
| MSP_RESET_N | 16 | 5 | Reset Button |
| SPI0_SOMI | 17 | 4 | No Connect |
| SPI0_SIMO | 18 | 3 | I2C SDA line for Magnetic Sensor |
| GND | 19 | 2 | GND |
| 20 | 1 | No Connect |
Table 4: Expansion Connector Pin-Out
Firmware
Developers should leverage the driver and test application code in the TinyOS and Shimmer github repositories for Shimmer2r. The Shimmer User Manual also includes tutorial information in the embedded firmware section.
The I2C interface used for magnetic sensing is on USART0, a shared resource with the microSD card on Shimmer, Shimmer2 and Shimmer2r platforms. There are non-trivial timing constraints when use of both peripherals is desired.
Gyro reference applications use an abstraction to configure Shimmer to sample 3 channels of Gyro data:
call shimmerAnalogSetup.addGyroInputs();
If the Gyro is installed, the three ADC signals from the GyroMux board are analog outputs from the board that can’t be disabled. Applications that do not directly configure the Gyro board (e.g. Blink, JustFATLogging, Null) should include the following lines:
TOSH_MAKE_ADC_1_INPUT();
TOSH_MAKE_ADC_2_INPUT();
TOSH_MAKE_ADC_6_INPUT();
If the user button is installed, it is connected to SER0_RTS with a weak pull-up resistor on the Shimmer 9DoF IMU and Shimmer Gyro IMU daughterboards. When depressed, the signal is grounded. This pin should be defined as an input in deployments where the button is user accessible to avoid brownouts or increased power consumption.
TOSH_MAKE_SER0_RTS_INPUT();
9.2. Legacy Hardware: Shimmer IMU daughterboards
Previous hardware revisions of Shimmer 9DoF IMU daughterboards (SR16-1, SR16-2, SR16-3, SR16-4, SR16-5) and Shimmer Gyro IMU daughterboards (SR2-1, SR2-2, SR2-3) used a HMC5843 magnetometer device from Honeywell and IDG-500 and ISZ-500 MEMs gyroscope devices from Invensense, with hardware configurable gyroscope signal range and optional user interaction controls. The following information is provided as legacy support for these devices.
Component locations for boards without magnetic sensing


If the locations marked U1 and U2 are empty, there is no gyro capability on your device.
If the location marked SW1 is empty, there is no user interaction control on your device.
For 500°/sec gyro: R3,R7 and R11 are populated and R6,R9 and R12 are not.
For 110°/sec gyro: R6,R9 and R12 are populated and R3,R7 and R11 are not.
Component locations for boards with magnetic sensing
If the locations marked U1 and U2 are empty, there is no Gyro capability on your device.
If the location marked SW1 is empty, there is no user interaction control on your device.
For 500°/sec gyro: R3,R7 and R11 are populated and R6,R9 and R12 are not.
For 110°/sec gyro: R6,R9 and R12 are populated and R3,R7 and R11 are not.
Magnetometer Specifications
Resolution: 7 mGa.
Full Scale Measurement range: selectable up to ±4.5 Ga measurement range.
Digital interface supports .5-50 Hz Output Data Rate (ODR).
Power consumption increases rapidly above the default ODR setting (10Hz).
Software interface for gain/rate selection, bias, and power control.
Dedicated micro-power regulator for lowest power consumption.
Please refer to the manufacturer’s datasheets for detailed information.
Gyro Signal Range
The output of the Gyro MEMs devices is analog. The Shimmer 9DoF IMU daughterboard has a fixed reference output and runs off of a secondary LDO for improved power-supply noise rejection. Zero-output will be approximately 1.35V vs. 1.50V on the Shimmer Gyro IMU daughterboard. In 500°/sec mode, the sensitivity is 2mV/°/sec. In 110°/sec that value is 9.1 mv/°/sec. In both cases, the full scale range is .35V-2.35V, well within the range of the Shimmer’s ADC. IDG-500 and ISZ-500 MEMs devices from Invensense are used. Please refer to the manufacturer’s datasheets for detailed information.
Gyro Calibration
The board has an auto-zero feature for use in the more sensitive 110°/sec configuration. While the gyro is stationary, a 20-500µS pulse on the Gyro_Zero signal will initiate the auto-zero function and null any zero-rate offset.
Gyro Input Mux
An analog multiplexer provides additional signals for applications based on the logic signal SEL_A0:
| Shimmer Signal | Gyro Input Mode, SEL_A0 = 0 | Aux-input Mode, SEL_A0 = 1 |
|---|---|---|
| ADC6 | Y Rotation | X/Y Gyro Zero-voltage VREF |
| ADC1 | X Rotation | X/Y Gyro Temperature Sense |
| ADC2 | Z Rotation | Z Gyro Zero-voltage VREF |
The temperature sensor has a 1.25V offset at room temperature and a 4mV per degree C sensitivity. For precision measurements, the zero-offset should be calibrated against an external thermometer.
Other component Options
C3 is a high-frequency shunt on the temperature sensor (output impedance is 12k).
R8 and C12 provide additional filtering on a buffered version of the signal (R8 = 10 ohms, C12 is .1µF)
C2,C5,C13 are filtering external capacitors for the high-sensitivity mode of the gyro. For more information see the IDG-500 Datasheet at www.invensense.com
9.3. Legacy sensor axis directions
The Shimmer2 or Shimmer2r is equipped with three single-axis accelerometers, such that its reference axes are arranged as in Figure 9‑2; the figure shows the axes relative to two of the available Shimmer2/Shimmer2r enclosures so that it can easily be matched up to any device.


Figure 9‑2: Shimmer accelerometer axis directions – Shimmer baseboard only enclosure (left) and Shimmer IMU enclosure (right)
9.4. Errata and Updates
The accelerometer RMS noise values quoted in Table 6.2 of v1.0 of this User Guide were erroneously labelled as having units of m/s2, when, in fact, the numerical values were in units of g (the gravitational constant ≈ 9.81 m/s2). This has been corrected in the current document and the numerical values are now quoted in m/s2.
Legal notices
IMU User Guide
Revision 1.4
Legal Notices and Disclaimer
Redistribution IS permitted provided that the following conditions are met:
Redistributions must retain the copyright notice, and the following disclaimer. Redistributions in electronic form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the document.
Neither the name of Shimmer Research, or Realtime Technologies Ltd. nor the names of its contributors may be used to endorse or promote products derived from this document without specific prior written permission.
THIS DOCUMENT IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
