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.
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.
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.
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.
http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
The DMP calculates the MotionFusion solution as a quaternion because it is the most efficient representation for mathematical applications.
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 http://en.wikipedia.org/wiki/Euler_angles, and http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation.
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.
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.
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.
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.
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
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.
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.
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.
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.
A pair of gyro bias trackers “ML_LEARN_BIAS_FROM_TEMPERATURE” and “ML_BIAS_FROM_TEMPERATURE” allow the Embedded
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.
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.
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.
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.
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 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.
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.