top of page

The Goal:

Autonomous edge devices, such as submarines and small drones, are often unable to access accurate GPS coordinate information. This presents difficulty in the space of autonomous navigation as these devices require precise location information in order to make navigation decisions. The most popular GPS alternative is inertial navigation -- the use of accelerometer, magnetometer, and gyroscope data to determine coordinate position relative to vehicle's starting place. The issue with Inertial Navigation Systems (INS) is accuracy. Small errors in acceleration data become large errors as integration amplifies noise. INS generally requires expensive Inertial Measurement Units (IMUs) which are proprietarily integrated. Low cost IMUs do, however, exist. I set out in this research project to determine the accuracy and feasibility of one such IMU (BNO055) in INS applications.

Video Of An INS In Action

The Experiment

I first tested the BNO055 for accuracy in linear, 1-dimensional inertial navigation. The experimental set up is described in detail by the below figure. The experiment was made possible by my chemistry teacher, who allowed me to borrow the air track. 

diagram cart.png

I used OpenCV in Python to track the position of the pink tape on the car, then plotted the first and second derivatives of the car's position against time in order to find velocity and acceleration. Ten identical air-track experiments were repeated. The below video shows one of the experiments with an OpenCV color tracking mask showing the position of the pink tape. 

Results

The time-specific readings of position, velocity, and acceleration between the video-data and IMU-data varied heavily with an average difference of 0.5 meters per second in velocity readings. The time-specific imprecision in the BNO055 sensor readings was not an issue in determining overall change in position, however, as the BNO055 on average estimated it's final displacement within 3 centimeters of it's actual displacement (See Below Table). The sensor is evidently accurate but imprecise, leaving open the question of if it can function as an INS.

The discrepancies between the IMU-reported velocity/acceleration/position data and video recorded data are evidence of imprecision. Since the sample size is very small (n=10) the specific discrepancies are not evidence of one measurement, such as acceleration, being more imprecise than another. The imprecision of a reading will generally increase with every integration or derivation. The video-recordings, which base all readings off of position, are therefore the least precise when used to estimate acceleration. Accelerometer data, likewise, is least precise when used to estimate position. The below matplotlib graphs of raw video data illustrate this well.

Cool Experiment Videos

Servo Release Mechanism:

Cart Catch Mechanism

Future Experiments

For uses in 2D and 3D navigation the sensor vectors will need to be adjusted relative to an absolute orientation frame. I intend to convert the quaternion rotation vectors output by the BNO055 into a rotation matrix. This rotation matrix can be used to convert relative acceleration vectors into absolute acceleration vectors. These vectors can be used to find the position of a vehicle relative to it's starting place. The accuracy of this estimation will be the subject of my next research project. 

bottom of page