Giter VIP home page Giter VIP logo

tonav's Introduction

Tonav

Travis-CI Tonav

NEW: Please fill my Feedback form. I'd love to hear from you more. It will help me to make Tonav even better!

Implementation of Multi-State Constraint Kalman Filter (MSCKF) for Vision-aided Inertial Navigation. This is my master's thesis.

Goals

As a goal of this work I want to create complete navigation stack without using global position such as GPS. For local navigation it uses Multi-State Constraint Kalman Filter which is at the time of writing state-of-the-art method. It also has a great computation power to accuracy ratio. Drawback of this approach is that still accumulates (relatively small) drift during time. To compensate for this I want to use mechanism that uses loop closures. It will be based on principles used in ORB-SLAM. I have quite a bit experience with it and it works great.

By combining these two approaches I want to create navigation stack that will be able to perform life-long navigation using very cheap hardware and with low energy demands. It should be able to run on battery. It should also be able to run on CPU only.

Goal list:

  • Accurate navigation
  • Low-cost hardware
  • Life-long navigation
  • Low-energy demand (battery)
  • Global drift compensation (loop closure)

Datasets

For development purpose, I use MIT Stata Center Data Set. It contains rosbag files recorded from PR2 robot.

Each bag file is quite large because it contains laser scans. They are not needed for the purpose of this work, so I created a filtered version of them using command

$ rosbag filter 2011-01-18-06-37-58.bag pr2.bag 'topic in ("/wide_stereo/left/image_rect", "/wide_stereo/left/camera_info", "/torso_lift_imu/data", "/tf", "/robot_pose_ekf/odom_combined")'

Another dataset I use is The KITTI Vision Benchmark Suite. It has accurate IMU sensor and data are provided at relatively low frequency which simplyfies development a lot. Because I was not able to find good tool for replaying this dataset in ROS, I've created one. It is called kitti2bag. It is written in Python and it is very simple to use. It converts raw dataset files into ROS bag files which you can play any time at any speed.

By the way. Can you believe how hard it is to find publically available bagfile that is recorded using some cheap hardware? C'mon!

Live data from iOS

For development purpose I've created data streaming app that streams IMU events (and video in the future) form iDevice (iPad, iPhone, ...) to RabbitMQ and then another app that picks them up from RabbitMQ and publishes them as ROS topic. Those apps are called iOSmsg and iOSmsg_client. You can use them for any purpose you want. And if you like them, remember to give me a start, fork it and tell your friends ;)

Installation

To install this you need to have installed and working ROS. Then it should be fairly easy to build and run.

git clone https://github.com/tomas789/tonav.git
cd tonav
mkdir build
cd build
cmake ..
make

Run

I currently don't provide any roslaunch file. Just run roscore and then run Tonav

./tonav --image <image_topic> --camerainfo <camerainfo_topic> --imu <imu_topic>

For MIT Stata Center Data Set I run it using

./tonav --image /wide_stereo/left/image_rect --camerainfo /wide_stereo/left/camera_info --imu /torso_lift_imu/data

Documentation

At the time of writing there is no good documentation. Actually the best one is this readme. You can also find some useful information in my in-source Doxygen documentation. If you have installed Doxygen in version at least 1.8.8 you can generate it. Just run make doc and it will be generated in the folder build/doc.

Bug reporting and support

This is something as alpha-dev-buggy piece of work. But stay tuned. I do my best. If you want to report a bug or if you want to know something about it just contact me at [email protected] or simply use Issue tracker of GitHub.

What does Tonav mean?

Its Tom's Navigation.

License

This work is currently distributed under LGPL v3 license. In the future, it will switch to GPL.

tonav's People

Watchers

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.