Frequently-asked Questions

Will navX-MXP work with the National Instruments RoboRIO™?

Yes, the navX-MXP is designed specifically to work with the RoboRIO. Please see the instructions for installing navX-MXP onto a FIRST FRC robot for more details, as there are several installation options.

Will navX-MXP work with the Android-based FTC Control System?

Yes, navX-MXP can be used with the Android-based FTC Control System, via its I2C interface.  For more information, please see the FTC Robot Installation instructions and the description of the Android Libraries.

Will navX-MXP work with the older National Instruments CRIO™ robot controller?

Yes, navX-MXP can be used with the National Instruments CRIO robot controller by using the nav6 libraries, which are available on the nav6 website. You will need a USB-to-RS232 serial converter in order to connect navX-MXP to the CRIO’s RS-232 port, and you will also need a 12VDC-to-5VDConverter to provid power/ground to the power pins on the navX-MXP’s MXP Connector.

Please note that the legacy nav6 libraries only use the navX-MXP serial interfaces, and do not provide access to new navX-MXP features including 9-axis headings, magnetometer calibration and magnetometer disturbance detection.

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

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

Yes, this is correct. If navX-MXP 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 FIRST FRC match, the robot is turned 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, navX-MXP 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-MXP yaw measurements, enable a robot’s pose and absolute heading to be maintained throughout the match. This feature of the navX-MXP is referred to as a “9-axis” heading.

Why do the Yaw angles provided by the navX-MXP 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-MXP 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 FRC or FTC 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 FRC or FTC 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, but technology has not advanced to this point yet.  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-MXP firmware uses the officially released Invensense MotionDriver version 6.1. Kauai Labs has ported this driver to work correctly on the navX-MXP’s STM32F411 micro-controller.

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

navX-MXP and the navX-MXP Aero share a single design. navX-MXP 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-MXP, decreasing the cost for those not desiring an altitude measurement.