GithubHelp home page GithubHelp logo

lemonhall / demo6dof Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yigiter/demo6dof

0.0 3.0 0.0 492 KB

Demonstration of inertial navigation implementation for Android devices

Home Page: www.instk.org

demo6dof's Introduction

This is a 6DoF inertial navigation example for Android devices.

In this example the device itself works like a camera which is initially directed to an imaginary cube located 5 meters away. Therefore, as you move the device you will start seeing the different faces of the cube.

It has 3 modes:
3DoF Accelerometer+Compas : This mode is a 3DoF mode. It only computes the orientation based on accelerometer and compass output (actually it uses a built-in function). The position of the cube in the device's body frame of reference of is assumed to be constant. In other words, the device is allowed to move on a sphere where the cube is located on the center.

3DoF Gyroscope : This is also a 3DoF mode. However, in this mode the attitude is computed using only the gyroscope outputs. (The initial orientation is taken from the first mode). In this mode, you will definitely observe the superiority of gyroscope based orientation to the the accelerometer based one.

6DoF: This is a pure 6DoF inertial navigation mode. In the previous 3DoF modes, the displacement of the device has no effect on the rendered cube image. However, in this mode, as you move the device, you will (hopefully) see a shift in  the cube image in a proportional manner. (i.e. If you want to see the cube closer, move the device on its z-direction toward the camera. As you move, the cube image will move closer).

In the above modes, the following utilities must also be used accordingly:
Bias removal : Once it is clicked, inertial data is collected for a second, and the average of it is assumed to be the inertial sensor biases which are then subtracted automatically from the future sensor outputs. Obviously, you must use this when the device is on a horizontal platform. Otherwise the accelerometer outputs will be spoiled.

ZUPT : Internally, a Kalman filter is used to stabilize the INS. Every time the system stays stationary, zero updates (zupts) should be clicked. Based on this information, the kalman filter estimates and corrects the accumulated INS errors.

CUPT. This is a signal for coordinate updates. When this is clicked, Kalman filter updates the system using the initial position. Therefore, this must only be used when the system is on the initial location. Obvisouly, GPS outputs can be directly used instead of the coordinates of the initial location. However, as I want to primary use this inside the building, I intentionally do not use GPS a source.

Reset. Resets the system including the covariance of the Kalman filter.

NOTE: I do not have a Android phone with gyroscope. Therefore, I have not been able to check the program on a real system. Furthermore, I simply made up the sensor error model parameters for the Kalman filter.


demo6dof's People

Watchers

lemonhall avatar James Cloos avatar  avatar

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.