Skip to content
Bjarne Hansen edited this page Oct 23, 2020 · 20 revisions

Orientation Sensor Testing wiki

Apparatus

A bicycle wheel (composed of an aluminum rim and stainless-steel spokes, and steel axle) is mounted on a wooden plank. The sensor and associated circuit board is lashed to the spokes near the rim, with the sensor about 24cm away from the ferromagnetic materials in the axle. A counterweight is attached to the wheel opposite the circuit board so the wheel can rotate freely and without excessive imbalance.

Testing

Stationary Response

  1. Intermittently the output from the filter function will drift steadily and continuously away from the known heading, even when the sensor is held stationary. Example as observed by tedenda: alt-text

It is not believed to be caused by lack of calibration, as it has been seen after calibration.

Step Response

Overshoot and undershoot is observed in the filter's Heading output when the sensor is exposed to a quick rotation. In the following graph, the heading output computed by three different filter algorithms is plotted while the test fixture's wheel was manually held stationary, then rotated quickly by about 100 degrees, held stationary, then rotated back to the approximate starting position.

The under/overshoot seems much greater in magnitude than expected. See for example the discussion by Kris on (https://github.com/kriswiner/EM7180_SENtral_sensor_hub/wiki/K.-Limits-of-Absolute-Heading-Accuracy-Using-Inexpensive-MEMS-Sensors). His apparatus does differ from my wheel: his sensor is mounted coaxial with the fixture and therefore would report very low accelerations while being rotated. Also, his method did not involve a quick step motion, rather he measured position at multiple stationary points with (presumably) the filter output settling after each motion. However, on a vessel it will be critical to respond correctly to abrupt surges/rolls/pitches etc. Regradless, Kris' results suggest that we should be able to achieve accuracy within 2 degrees and currently we see +/- 10 degrees or worse.

Thoughts

  • sometimes get much worse over/undershoot.
  • not caused by exceeding maximum rotation speed gyro can report (currently 250 degrees/sec)
  • doesn't seem to be caused by incorrect scaling of the gyro output, as a separate test in which the wheel was allowed to freely rotate showed that the rotation reported by the gyro corresponded within ~3% of the rate measured by a position sensor located on the rim of the wheel.
  • the sensor defaults to not using the built-in 32-sample FIFO - i.e. the measured rotations are realtime, not buffered. So it does not appear to be caused by a temporal lag between actual motion and measured motion.
  • TODO: test at max sensor rate (800 Hz)
  • TODO: test filter using synthetic data
  • TODO: test other filters if available
  • TODO: test with sensor coaxial with rotation axis
  • TODO: see if there is a rate-dependence on the error

Resources

  1. https://github.com/SignalK/signalk-imu
  2. https://www.tindie.com/products/onehorse/ultimate-sensor-fusion-solution-mpu9250/
  3. kriswiner's Github repositories, including: https://github.com/kriswiner/EM7180_SENtral_sensor_hub/wiki/K.-Limits-of-Absolute-Heading-Accuracy-Using-Inexpensive-MEMS-Sensors and https://github.com/kriswiner/MPU6050/wiki/Affordable-9-DoF-Sensor-Fusion
  4. Estimation of heading using magnetometer and GPS
  5. Performance Improvement of Inertial Navigation System byUsing Magnetometer with Vehicle Dynamic Constraints
Clone this wiki locally