Frequently Asked Questions InvenSense Develpoers Corner


  • Basics of Motion Application Development

    • Why would I want to use a gyroscope if I already use an accelerometer and magnetometer?

      Both accelerometers and magnetometers are noisy sensors, which means they exhibit a slow response rate (due to noisy filtering) in fast moving systems. Accelerometer measurements are also affected by motion. By using a gyroscope and MotionFusion, the MotionFusion solution will have a faster response rate and track small, quick movements much more quickly. Gyroscope MotionFusion also makes it possible to sense linear acceleration separately from gravity.

    • What is heading drift?

      Because 6 axis MotionFusion has no way to directly sense the earth’s magnetic field, it estimates heading by integrating the gyroscope sensor outputs. The gyroscope sensor will have some small amount of noise and may have small biases. Since the technique of gyroscope integration keeps a running sum of gyroscope sensor outputs and those sensor outputs include small errors, the sum will slowly accumulate an error over time. 6-axis MotionFusion can only correct part of this error using information from the accelerometer.

    • What are Euler angles? How do I use Euler angles?

      Euler angles are a representation of an angular frame, as are quaternions and rotation matrices.

      Euler angles are a set of three angles, corresponding to pitch, roll, and yaw.

      Euler angles may be constructed according to many conventions. The axes of and ordering of ordering of pitch, roll, and yaw vary by convention. The Embedded MotionApps Platform makes Euler angles available in the three most common conventions with MLGetEulerAnglesX, MLGetEulerAnglesY, and MLGetEulerAnglesZ. See the Embedded MotionApps Platform Functional Specification for specific details on the definition of these conventions.

      Euler angles are not commutative. For any Euler angles A, B, a rotation A followed by B is not (B + A) is necessarily equal a rotation B followed by A (B + A). Because of this algebraic property, Euler angles are often not very useful for signal processing applications.

      Euler angles suffer from a pair of singularity points at which only two of the three angles are significant. The derivative of the Euler angles is discontinuous at this point. This condition is often called gimbal lock.

    • What is a quaternion? How do I use a quaternion?

      A quaternion is a number with a real and three imaginary components, q = a + i b + j c + k d

      A quaternion represents a rotational frame in a form related to the angle theta and axis v of rotation, where v is a three dimensional unit (length 1) vector, and q = sin (theta / 2) + i * vx * cos(theta/2) + i * vy * cos(theta/2) + k * vz * cos(theta/2)

      You can easily convert a quaternion to Euler angles or a rotation matrix.

      The DMP calculates the MotionFusion solution as a quaternion because it is the most efficient representation for mathematical applications.

    • What is an angular frame ?

      An angular frame is a representation of an object’s orientation in 3D space. It is commonly described using euler angles or a quaternion. Please see, and

      An angular frame does not describe the 3D location of an object, only its rotation relative to a reference. The reference rotation for a 6-axis angular frame is flat and level—that is, the vertical axis of the object is aligned with up/down. The reference rotation for a 9-axis angular frame is flat, level, and north: the vertical axis of the object is aligned up/down, and the forward axis of the object is aligned north/south.

  • Embedded MotionApps Platform

    • Can MEMS mics be soldered to a flex PCB?

      Yes, a flex PCB can be used with MEMS microphones. All of our microphones are actually available on flex PCB evaluation boards so that they can be easily placed in your own system for testing. Handling considerations in the datasheets and application note AN-1068 should be followed during assembly.

    • Does Embedded MotionApps Platform use my system resources to do sensor fusion?

      Embedded MotionApps 2.0 as well as Motion Driver use the Digital Motion Processor (DMP™) located on the sensor device to perform 6-axis MotionFusion. The Embedded MotionApps Platform MotionFusion reads sensor fusion results from the DMP using the FIFO buffer.
      For 9-axis operation in the MotionFit SDK the micro is required to integrate compass data as well as some calibration routines.

    • Can I use the Embedded MotionApps Platform software on an operating system?

      The Embedded MotionApps Platform software is not intended for use on an operating system, but it is possible. For use on Android or Linux operating systems, the MotionApps Platform Library is recommended.

    • With which platforms can I use the Embedded MotionApps Platform?

      The Embedded MotionApps Platform may be ported to any platform which can provide the facilities required by the Motion Library System Layer (MLSL). In summary, the Embedded MotionApps Platform can be used on any system which has access to an IMU/MPU device over an I2C serial bus, can provide an interface to sleep for a number of milliseconds, and can provide a millisecond resolution system clock. For more details, see the Embedded MotionApps Platform User Guide.
      The MotionFit SDK is currently tied to the MSP430 MCU from Texas Instruments. There is source code available for modifications but the sensor fusion is locked to this MCU
      We recommend Embedded Motion Driver 5.1 for an MCU agnostic approach, this is a very lightweight and portable solution that generates 6-axis sensor fusion

    • What does the hardware do and what does the BSP do? Does the hardware without any additional mcu have the quaternion 6 dof fusion output? Is there any hardware that can combine a compass in the attitude results?

      The motion algorithms has two major components to it, sensor fusion and calibration. Sensor fusion runs on the DMP (in hardware), while calibration runs on the micro. The hardware sensors (Gyro, and Accel) detect motion, while the BSP has manages the I2c, Timer, and Non volatile memory interfaces. The hardware does perform 6-axis (dof) sensor fusion through the dedicated DMP computation engine. The next release of Embedded MPL software will enable 9-axis sensor fusion that runs in a fully self contained fashion on the DMP. Currently the DMP does not support 9-axis sensor fusion due to a degraded performance. We are planning to eventually push full 9-axis operation to the DMP.
      10 axis (altitude) sensor fusions can be performed on the MCU by taking the 9-axis sensor fusion results from hardware, and combining with altitude information from a pressure sensor.

    • How complicated is the calibration routine? Are expensive calibration fixtures or equipment required?

      The calibration algorithms that are supported in software are No Motion Cal, whenever the Gyro detects a no motion event through the DMP, it immediately triggers a calibration process. There is also a temperature compensation of the Biases, which runs in software on the micro. These calibration routines run in real time on the hardware and micro, and does not need any external equipment.

    • Is the way the sensor fusion works being documented for the user?

      The Algorithms for sensor fusion is InvenSense IP, and runs in encrypted form on the DMP or as a binary on the host. Sensor fusion outputs quaternions, which is a 3D representation of the movement of an object in space. As long as the Application is using quaternions, there is no need for the system developer to get burdened with the details of sensor fusion implementation.

    • MotionApps Platform

      To create and use a mapping gyro bias to temperature, using the ML_BIAS_FROM_NO_MOTION tracker to discover gyro bias and the IMU/MPU’s built in temperature sensor to determine temperature. The mapping of gyro bias to temperature will stay constant [1] throughout the lifetime of the part, so a bias, once learned, can be used to calibrate the gyro at any time it is at that temperature. When ML_LEARN_BIAS_FROM_TEMPERATURE is active, the Embedded

      MotionApps Platform will store bias and temperature information discovered from ML_BIAS_NO_MOTION calibration events. When ML_BIAS_FROM_TEMPERATURE is active, stored bias and temperature information is used to update the gyro bias as temperature changes.

      [1] The mapping of gyro bias to temperature is affected by mechanical stress on the sensor package. This includes stress due to soldering, tension or compression of the printed circuit board. More information is available in the IMU/MPU product specification.

    • How does the Embedded MotionApps Platform provide gyro temperature compensation?

      A pair of gyro bias trackers “ML_LEARN_BIAS_FROM_TEMPERATURE” and “ML_BIAS_FROM_TEMPERATURE” allow the Embedded

    • How does the Embedded MotionApps Platform determine gyro bias?

      Embedded MotionApps Platform provides a gyro bias tracker “ML_BIAS_FROM_NO_MOTION” which finds the gyro bias after an eight second period without motion.

    • What is 9 axis MotionFusion?

      9 axis MotionFusion combines gyroscope, accelerometer, and magnetometer sensor data. The resulting angular frame is relative to both gravity (down) and north. 9 axis MotionFusion is not available in Embedded MotionApps Platform at this time.

      The advantages of 9 axis MotionFusion over 6 axis MotionFusion are that 9 axis MotionFusion results are usable for navigation and other applications which require information about the angle relative to north. It also eliminates any heading drift which may be present in a 6 axis MotionFusion solution.

    • But how do I know where forward is with 6 axis MotionFusion?

      With the Embedded MotionApps Platform, for 6-axis MotionFusion, ‘forward’, is the direction when the device initializes. Subsequent MotionFusion solutions will be described relative to this initial forwards direction.

    • What is 6 axis MotionFusion?

      The Embedded MotionApps Platform provides MotionFusion of three axis gyroscope and three axis accelerometer data. The result is an angular frame which is relative to gravity (down). On its own, a three axis accelerometer can be used to find an angular frame relative to gravity. However, because accelerometers detect the sum of linear acceleration and gravity, an accelerometer cannot provide an accurate angular frame solution when it is in motion, which makes it unusable in many applications. By fusing the gyroscope with accelerometer, Embedded MotionApps delivers a stable angular frame solution which precisely follows the device motion.

    • How much memory does MotionApps Platform take on my system?

      The Embedded MotionApps Platform reference implementation for the Atmel UC3-A3 Xplained board takes 40k total program (ROM) memory and about 3K of data memory.
      MotionFit SDK: 90kB
      Motion Driver: 32kB total, 13kB for driver+DMP image

    • MotionProcessing is not only a hard processor but software is also included right?

      MotionProcessing is a term that collectively refers to 1) the integration of hardware sensors, such as the gyroscope, accelerometer, and compass 2) A computation engine for combining data from the individual sensors 3) Algorithms for calibration of sensor data.

    • What is Embedded MotionApps?

      Embedded MPL is the same as Embedded MotionApps Platform. It is the software solution for MotionProcessing from InvenSense, that is used with its production proven hardware such as IMU-3000, and MPU-6050, and MPU-9150. The intended applications for Embedded MotionApps Platform are microcontroller based, and expected to run in very small memory and processing footprints.