Giter VIP home page Giter VIP logo

g2o-robust's Introduction

Robust Edge types for g2o

This package provides edge types in g2o for use in robust optimization. Specifically, it contains:

  • MaxMixtureOriginal edges, the original implementation by Praktik Agarwal, from https://github.com/agpratik/max-mixture, licensed under the BSD
  • MaxMixture edges, my own templated implementation with some improvements (mainly speed and versatility) over the original by Praktik Agarwal, also licensed under the BSD
  • SwitchableConstraints edges, from the Vertigo package by Niko Suenderhauf, from https://svn.openslam.org/data/svn/vertigo/, licensed under the GPLv3
  • RobustifiedEdges: Generic robust edges allowing the per-edge use of robust kernels from g2o, released in public domain via CC0

Please see the individual README and LICENSE files the the subdirectories for more information.

Installation

Dependencies

Compiling

Compile with

mkdir ./build
cd ./build
cmake ..
make

Use ccmake or cmake-gui to have more control over build variables, like the CMAKE_BUILD_TYPE or where G2O is found.

If G2O can't be found, try setting an environment variable to where you installed G2O called G2O_ROOT.

Installation

sudo make install

will install to the location you specified with CMAKE_INSTALL_PREFIX. Note that it will collapse all libraries and headers into a single directory.

Running

Once the plugins are built or installed, you can run for example the g2o command line program with these custom edge types using the -typeslib option.

To run the robustified edges example:

LD_LIBRARY_PATH=${G2O_ROOT}/lib ${G2O_ROOT}/bin/g2o -v -typeslib RobustifiedEdges/libg2o_types_robust_edges.so ../examples/robustified_se2.g2o

Or one of the original MaxMixture datasets with the new MaxMixture implementation supporting many iterations with "multimodal" edges (aka hyperedges):

wget https://github.com/agpratik/max-mixture/raw/master/datasets/multimodal/_MM_2_manhattanG2O3500.g2o
LD_LIBRARY_PATH=${G2O_ROOT}/lib ${G2O_ROOT}/bin/g2o -v -typeslib MaxMixture/libg2o_types_max_mixture.so _MM_2_manhattanG2O3500.g2o

Troubleshooting

Robust Edges don't seem to be robustified.

Check for lines starting with "EdgeRobustified::read: unknown kernel", which happens if you misspell the robust kernel to use. Unfortunately, G2O does not check the return value of g2o::HyperGraph::Edge::read(), so they appear to load fine, but the kernel is not set.

g2o-robust's People

Watchers

 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.