Coder Social home page Coder Social logo

justagist / monocular_visual_graph_slam Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 2.0 32.62 MB

An implementation of Graph-based SLAM using only an onboard monocular camera. Developed as part of MSc Robotics Masters Thesis (2017) at University of Birmingham.

CMake 6.22% C++ 86.20% C 4.70% TeX 2.26% Shell 0.02% Yacc 0.22% Lex 0.12% Python 0.26%
graph-slam slam localisation-and-mapping robotics drone mapping monocular-slam

monocular_visual_graph_slam's Introduction

Visual Graph-Based SLAM (ROS Package)

An implementation of Graph-based SLAM using just a sequence of image from a monocular camera. It performs feature-based visual odometry (requires STAM library) and graph optimisation using g2o library.

Video

Watch implementation of the algorithm on an aerial robot (Parrot AR.Drone) here

Dependencies

  • OpenCV 2.4.x (non-free version)
  • LAPACK
  • g2o (included. Follow installation instructions)
  • Suite-Sparse

TODO

  • Remove dependency on PCL (not presently using the library any more)

Installation (Tested on ROS indigo + Ubuntu 14.04)

cd <catkin_workspace>/src/
git clone https://[email protected]/justagist/graph_slam.git

## build g2o library ##
cd graph_slam/EXTERNAL/g2o/ 
cmake . && make 

## clone STAM library (branch - graphslam_mod) for visual odometry ##
cd ..
git clone -b graphslam_mod https://github.com/eaa3/STAM.git
cd STAM/
mkdir build && cd build
cmake ..
make -j

## build package ##
cd <catkin_workspace>/
catkin_make
source devel/setup.bash

Usage

Before running the graph-slam node, the location of the 'fabmap_training_data' folder has to be entered by editing the value of 'fabmap_training_data_destination_' parameter in graph_slam/src/main.cpp file. The path to the image dataset on which the algorithm is to be run can also be set in the main.cpp file.

Running graph-slam node:
rosrun graph_slam main_slam_node <scene_number> [visualize?] [publish rostopics?] [save trajectory to txt file?] [run graph optimisation thread?] [baseline for visual odometry] [trajectory file name] 

Run rosrun graph_slam main_slam_node for detailed usage instructions

Other nodes
  • Plot trajectory output from graph_slam: rosrun graph_slam trajectory_plotter.py <trajectory_file.txt>
  • Plot and compare 2 trajectories: rosrun graph_slam compare_trajectories.py <trajectory_file_1.txt> <trajectory_file_2.txt>
  • Compare trajectory with ground_truth (if available): rosrun graph_slam groundtruth_compare.py <trajectory_file.txt> <groundtruth.txt>

Function and usage of all nodes are described in the respective source files, along with the format of the input files (where required).

monocular_visual_graph_slam's People

Contributors

justagist avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

gatsby23 flyinggh

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.