Frequently Asked Questions

What interface/installation options are available for the navX-Micro?

  • Connection to a Android-based FTC Robotics Control System via I2C.
  • Connection to a RoboRIO-based FRC Robotics Control System via USB and I2C.
  • Connection to a Windows-based PC via a USB Cable

Can navX-Micro be used  with the National Instruments RoboRIO™?

Yes, navX-Micro USB and I2C interfaces are compatible with the navX-MXP, and can interface to the RoboRIO via the USB or I2C Ports. Please see the instructions for installing the navX-Micro on a RoboRIO for more details.

Aren’t the magnetometer (compass heading) readings unreliable when the navX-Micro is used on a Robot with powerful motors?

Yes, this is correct. If the navX-Micro is mounted nearby any energized motors, the magnetometer’s ability to measure the (weak) earth’s magnetic field is severely diminished.

However, at the beginning of each match, the robot will be powered on for about a minute before the match begins. During this time period, the motors are not energized and thus do not add magnetic interference that would disturb the magnetometer readings. Once the magnetometer is calibrated, the navX-Micro will return either an accurate magnetometer reading, or an indication that its measurement of the earth’s magnetic field has been disturbed.

Magnetometer readings taken at the beginning of a match, when combined with the navX-Micro yaw measurements, enable a robot’s pose and absolute heading to be maintained throughout the match. This feature of the navX-Micro is referred to as a “9-axis” heading.

Why do the Yaw angles provided by the navX-Micro drift over time?

The short answer is that the yaw angle is calculated by integrating reading from a gyroscope which measures changes in rotation, rather than absolute angles. Over time, small errors in the rotation measurements build up over time. The navX-Micro features sophisticated digital motion processing and calibration algorithms that limit this error in the yaw angle of ~1 degree per minute.  For further details, please see the Yaw Drift page.

Can the navX-MXP “Displacement” estimates be used for tracking a FTC or FRC robot’s change in position (dead-reckoning) during autonomous?

Accelerometer data from the navX-MXP’s onboard MPU-9250 are double-integrated by the navX-MXP firmware to estimate displacement, and are accurate to approximately 1 meter of error during a 15 second period.

To track a FTC or FRC robot’s position during autonomous requires an accuracy of about 1 cm of error per 15 seconds.  While the accuracy of the navX-MXP displacement estimates might be good enough to track the position of an automobile on a road, it is too low for use in tracking a FRC or FTC robot’s position during the 15 second autonomous period.

The root cause of the displacement estimate error rate is accelerometer noise.  Estimating displacement requires first that each acceleration sample be multiple by itself twice (cubed), and then integrated over time.  Practically, if a noisy signal is cubed, the result is very noisy, and when this very noisy value is integrated over time, the total amount of error grows very quickly.

The current noise levels (approximately 150 micro-g per square-root-hertz) would need to be reduced by a factor of 100 (two orders of magnitude) before displacement estimates with 1 cm of error per 15 seconds can be achieved by double-integration of accelerometers.

MEMS accelerometers which feature these low noise levels are beginning to emerge, but are currently very expensive.  KauaiLabs is actively researching these technology developments and projects that MEMS technology that is both (a) low noise (1 micro-g per square root hertz) and (b) available at low cost will be available in approximately 5 years (~2020).  KauaiLabs plans to develop a product which can be used for accelerometer-based dead-reckoning at that time.

Did Invensense finally publicly release a description of the DMP (Digital Motion Processor) and interface specs, or are you using what other people reverse engineered a while ago?

The navX-Micro firmware uses the officially released Invensense MotionDriver version 6.1. Kauai Labs has ported this driver to work correctly on the navX-Micro’s STM32F411 micro-controller.

What’s the difference between navX-MXP and navX-Micro?

  • navX-MXP was designed from the ground-up to interface easily with the RoboRIO, making it simpler and less-expensive to connect to the robot controller.  The navX-Micro is a smaller version of the navX-MXP which is designed for use in robots such as those found in FIRST FTC robotics.
  • navX-MXP and navX-Micro feature an upgraded sensor (MPU-9250) which features an integrated magnetometer and a gyroscope with improved noise characteristics over the MPU-6050 used in nav6.
  • navX-MXP and navX-Micro feature a much more powerful microcontroller, proving approximately 10x the processing power and 10x the amount of available memory. This more powerful processor enables more sophisticated calibration algorithms, which together with the improved gyro noise characteristics mentioned above decreases the yaw drift by a factor of at least 2, enables the initial startup calibration to occur more quickly, adds support for soft-iron magnetometer calibration, and enables the use of a pressure sensor (navX-MXP Aero and navX-Micro Aero only).

What’s the difference between the navX-Micro and the navX-Micro Aero?

navX-Micro and navX-Micro Aero share a single design. navX-Micro Aero adds a pressure sensor (MS5611) providing additional altitude measurements with a resolution of 10 cm.

Since the pressure sensor is an expensive component, this sensor was left off of navX-Micro, decreasing the cost for those not desiring an altitude measurement.