Giter VIP home page Giter VIP logo

ins_init's Introduction

INS initialization

This repository implements the solution to Inertial Navigation System (INS) initialization. More precisely, the system estimates roll and pitch angles in addition to accelerometer and gyroscope biases (additionally yaw angle if magnetometer data is provided) so as to align the gravity vector direction along the local NED frame. The estimation occurs in two phases: coarse initialization followed by fine initialization. An Extended Kalman Filter (EKF) is used for fine initialization.

For mathematical treatment of the problem, head over to kvmanohar22.github.io/ins_init.

Dependencies

  • Eigen 3.2+
  • ROS melodic
  • numpy (optional)
  • matplotlib (optional)
  • python3 (optional)

Usage

I have tested this on Arch Linux and should run out of the box on any Linux based distribution. Feel free to open an issue if faced with any problem.

  • Build
  mkdir -p ins_ws/src
  cd ins_ws/src 
  git clone [email protected]:kvmanohar22/ins_init.git
  cd ..
  catkin_make
  • Usage

Input to the system is stream of IMU (3 accelerometers, 3 gyroscopes) data. All the data used in this repository has been generated using pixhawk flight controller 2.4.8. Sample data is provided under assets/imu_*.bag.

  roslaunch ins_init test_ins_init_acc.launch

The above uses the provided bag under assets to estimate the state. To pass in your own bag,

  roslaunch ins_init test_ins_init_acc.launch bag_path:=/path/to/bag

OR

NOTE: The sensor has to be kept static during initialization.

if you have live stream of data. You might want to change ROS topic names in launch/test_ins_init_acc.launch or pass in on the command line as),

  roslaunch ins_init test_ins_init_acc.launch imu_topic:=<imu topic>

Experiments

This was done using the data provided under assets directory which was collected using pixhawk 2.4.6 flight controller. The method estimates only roll and pitch angles with input being accelerometer data. Use of velocity observations will yield better results (to be implemented). Following plots show the evolution of covariance and the state (roll and pitch) itself.

TODO

  • Acceleration observations
  • Velocity observations (which estimates imu biases as well)
  • Estimation of yaw
  • Detailed Blog on estimation

ins_init's People

Contributors

kvmanohar22 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

whigg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.