Code Monkey home page Code Monkey logo

ibse's Introduction

Inertial-Based Scale Estimation

A fast C++ implementation of the IROS 2017 paper “Inertial-Based Scale Estimation for Structure from Motion on Mobile Devices” https://arxiv.org/abs/1611.09498

Motivation

We can do SfM on a smart phone or tablet, but with only one camera you will not have metric scale.

We can recover the metric scale using IMU (gyroscope and linear accelerometer) information. However, the visual data (images) and the IMU readings may not be synchronized in time.

We have an unknown rotation between camera and IMU frames of reference, as well as an unknown delta-T

Compare gyroscope and visual angular velocity: simple optimization problem.

Find scaling, gravity vector and accelerometer bias through another optimization problem.

In reality, visual estimates of velocity or acceleration are noisy (motion blur, rolling shutter)

Kalman filter and Rauch-Tung-Striebel smoother to smooth visual acceleration.

Perform scale estimation in frequency domain, rather than time domain: this helps with noisy IMU and is not sensitive to the delta-T which can vary during SfM process.

Building

To build on Ubuntu:

mkdir build
cd build
cmake ..
make

Results

Avg error: <3% after 2 meters of camera travel. <1% after 14m

ibse's People

Contributors

robonrrd avatar

Watchers

 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.