Skip to content

NorthStarUAS/insgnss_tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NorthStar UAS -- Navigation INS/GNSS EKF Toolbox

INS/GNSS, EKF, Sensor fusion toolbox with python wrappers. Suitable for use in small UAS applications. The code is structured with dual C++ and python interfaces. It includes a plotting library for comparing filters and configurations.

This code project was original put together by Hamid Mokhtarzadeh mokh0006 at umn dot edu in support of the research performed by the UAS and Control Systems groups at the Aerospace Engineering and Mechanics Deptarment, University of Minnesota.

Installation

  • Requires the props and flightdata python modules (also available at https://github.com/NorthStarUAS)
  • Requires C++ code compiling (and an integrated c++ compiler with your python environment.)
./setup.py build
./setup.py install --user

Supported data log formats

  • Native NorthStarUAS (AuraUAS) HDF5 and CSV formats
  • UMN1 (.mat) and UMN3 (HDF5)
  • Ardupilot tlog (partial support, I would be happy to find a volunteer to improve this.)
  • PX4 sdlog2_dump and ulog2csv formats (CSV).
  • Sentera camera IMU format

Available filters

  • nav_ekf15: 15 state EKF using only intertial sensors and gps for input. Does not need magnetometers. Uses floating point data types as much as possible internally.
  • nav_ekf15_mag: 15 state EKF that includes magnetometers in the measurement update. Tends to converge to the same solution as the non-magnetometer variant over time during dynamic motion. In slow moving situations magnetometer error will dominate the computations. The quality of this filter is closely linked to the quality of the magnetometer calibration (or lack of magnetic field disturbances.)
  • pyNavEKF15: a pure python/numpy version of the 15-state Kalman filter. Sacrifice some performance, gain simplicity and readability.
  • nav_openloop: Open-loop integrator (forward propagation only.) Given an initial starting condition, will integrate position, velocity, and orientation from the inertial data alone. This can be used with the piece-wise segment optimizer or used to forward propagate an EKF solution computed slightly in the past.

Script Front End Features

  • Run two filters (or the same filter with different noise settings) and plot the results side by side.
  • Core filters are written in C/C++ but the infrastructure, data loading, and plotting is handled in python.
  • Uses pybind11 so that the same core C++ code can be used from either C++ or python applications.
  • Includes an example wrapper that demonstrates how to account for a known amount of GPS latency.