Saturday, February 13, 2010

3DM-GX2 to Linux via Serial

The 3DM-GX2 is not a naive 6-axis IMU. It performs onboard Kalman filtering and stabilization and can sample very fast. The serial interface operates at 115200 baud and offers various data sampling modes with commands. I decided to test Euler Angle output, with nominal static test resolution of ± 0.5°. Getting the serial port functioning properly was a bit of a challenge on Linux, especially via a virtual machine - had to keep on connecting and disconnecting the USB/Serial converter (PL2303).

The unit takes a byte command and outputs a sequence with the command repeated, roll, pitch and yaw coded in floating point radians, a system time stamp and a checksum. The standard API for windows includes all the command parsing sections except the serial communication bits. As usual to test the stability of the unit I did a static run. The attitude stability is indeed 1° peak-to-peak. The graphs show some high frequency noise, the flight control needs to perform some smoothing and rounding to deal with that.

Here is the version of the Linux sample ported from the 3DM-GX1 Linux sample provided by Microstrain.

No comments: