/fximu

FXIMU client files

Primary LanguagePython

This repository contains the fximu package. This is the only package you need to install in order to run fximu.

Introduction

FXIMU utilizes a port of ROS's complementary filter on the TM4C123 MCU using the NXP semiconductor FXOS8700 accelerometer magnetometer and FXAS21002 gyro sensor.

fximu v1c

Documentation Contents

Features

It works with ROS without any problems, does not require drivers, uses standard message types, and is open source.

Sensor data is directly fed to the complementary filter, updated up to 400hz. The filter then queried to get quaternion data at a desired output rate by using a output_rate_divider parameter.

Hardware is configurable using a fximu_params.yaml

Here is example parameters file:

params/imu: {
calibration_mode: 0,
sensor_read_rate: 100, output_rate_divider: 2,
adaptive_gain: 1, bias_estimation: 1,
gain_acc: 0.02, gain_mag: 0.01, bias_alpha: 0.1,
imu_frame_id: "imu_link", mag_frame_id: "imu_link",
gfsr: 0, afsr: 2,
steady_limit: 32,
world_frame: 0,
use_mag: 1,
kAngularVelocityThreshold: 0.06, kAccelerationThreshold: 0.35, kDeltaAngularVelocityThreshold: 0.05,
mag_offset_x: 27.00, mag_offset_y: 78.14, mag_offset_z: 85.36,
mag_soft_iron_ix: 0.987, mag_soft_iron_iy: -0.040, mag_soft_iron_iz: -0.021,
mag_soft_iron_jx: -0.040, mag_soft_iron_jy: 1.006, mag_soft_iron_jz: 0.006,
mag_soft_iron_kx: -0.021, mag_soft_iron_ky: 0.006, mag_soft_iron_kz: 1.009
}

See Parameters for detailed explanation of each parameter.

The device is equipped with a red and green led. Opon reset, the device will blink green first, then red.

If loading one of the parameters fails for calibration_mode=2 or calibration_mode=3, FXIMU will be disabled, and the red led will blink long.

During normal operation, if ROS connection is active, red led will turn on faintly, depending on your loop speed.

If the device is at steady state, then green led will turn on faintly, indicating that the device is on stationary state.

Credits

Roberto G. Valenti for writing the original complementary filter.

Vitor Matos for writing the rosserial tivac library.

Charles Tsai and user cb1_mobile from e2e.ti.com forums, for help on debugging the problems on sensor chipset.

Melih Karakelle for advice on the development of the circuit.

Licenses

tr000003 license