A robust sensor fusion library for online localization.

Overview

libRSF - A Robust Sensor Fusion Library

GNSS Trajectory

The libRSF is an open source C++ library that provides the basic components for robust sensor fusion. It can be used to describe an estimation problem as a factor graph and solves it with least squares, powered by the Ceres Solver. More information can be found under libRSF - A Robust Sensor Fusion Library.

Main features are:

  • A sliding window filter for online applications, including marginalization.
  • A set of predefined cost functions for various localization problems.
  • Several robust error models for non-Gaussian problems, including self-tuning Gaussian mixtures.

Build and Test Status

Platform Status
Ubuntu 20.04 Focal Build
Ubuntu 18.04 Bionic Build

Installation

The libRSF is a CMake project that requires the installation of several dependencies. For convenience, we provide a simple bash script that installs required packages. It is tested only for Ubuntu 18.04/20.04:

  git clone https://github.com/TUC-ProAut/libRSF.git
  cd libRSF
  bash InstallDependencies.bash

Alternatively, you can install them by your own:

  • CMake (>= 3.5)

    sudo apt-get install cmake
  • Eigen (>= 3.3.5)

    Only for Ubuntu 18.04, you have to install a current version of Eigen locally.

    mkdir -p externals/install
    git submodule update --init externals/eigen
    
    cd externals/eigen
    mkdir -p build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=../../install/ ..
    make install
    cd ../../..

    For Ubuntu >= 20.04 you can install Eigen straight-forward.

    sudo apt-get install libeigen3-dev
  • Ceres (>= 2.0) and its dependencies

    sudo apt-get install libgoogle-glog-dev
    sudo apt-get libgflags-dev
    sudo apt-get install libatlas-base-dev
    sudo apt-get install libsuitesparse-dev
    
    mkdir -p externals/install  
    git submodule update --init externals/ceres-solver
    
    cd externals/ceres-solver
    mkdir build && cd build
    cmake -DEigen3_DIR=../install/share/eigen3/cmake -DCMAKE_INSTALL_PREFIX=../../install/ ..
    make all -j$(getconf _NPROCESSORS_ONLN)
    make install
    cd ../..
  • yaml-cpp

    sudo apt-get install libyaml-cpp-dev
  • GeographicLib

    sudo apt-get install libgeographic-dev

The library and its applications can be build following this instructions:

  git clone https://github.com/TUC-ProAut/libRSF.git
  cd libRSF
  mkdir build && cd build
  cmake ..
  make all -j$(getconf _NPROCESSORS_ONLN)

You can install the libRSF using:

  make install

And remove it using:

  make uninstall

Usage

After building the library, some applications are provided which correspond directly to a publication. The following pages give you an overview, how to use them or how to build a custom application using the libRSF:

  1. How to use the robust GNSS localization from our ICRA 2019 or IV 2019 paper?

  2. How to use the robust Gaussian mixture models from our RA-L 2021 Paper?

  3. How to build your own application on top of the libRSF?

Additional Information

Citation

If you use this library for academic work, please cite it using the following BibTeX reference:

  @Misc{libRSF,
   author       = {Tim Pfeifer and Others},
   title        = {libRSF},
   howpublished = {\url{https://github.com/TUC-ProAut/libRSF}}
  }

This library also contains the implementation of [1-3]. Further references will be added with additional content.

[1] Tim Pfeifer and Peter Protzel, Expectation-Maximization for Adaptive Mixture Models in Graph Optimization, Proc. of Intl. Conf. on Robotics and Automation (ICRA), 2019, DOI: 10.1109/ICRA.2019.8793601

[2] Tim Pfeifer and Peter Protzel, Incrementally learned Mixture Models for GNSS Localization, Proc. of Intelligent Vehicles Symposium (IV), 2019, DOI: 10.1109/IVS.2019.8813847

[3] Tim Pfeifer and Sven Lange and Peter Protzel, Advancing Mixture Models for Least Squares Optimization, Robotics and Automation Letters (RA-L), 2021, DOI: 10.1109/LRA.2021.3067307

License

This work is released under the GNU General Public License version 3.

Issues
  • How the DCS loss function is derived.

    How the DCS loss function is derived.

    According to the dynamic covariance scaling paper, DCS can be applied by scaling the residuals with the scale parameter or scaling the information matrix with its square. In the code on the g2o library, which is written by the authors (https://github.com/RainerKuemmerle/g2o/blob/master/g2o/core/robust_kernel_impl.cpp), it is implemented in the form of multiplying the square of the scale parameter with the squared error. However, the DCS loss function of libRSF has a very different form. Can you explain how this is derived?

    opened by bpoebiapl 2
  • matlab in windows X86

    matlab in windows X86

    Hello, author. First of all, thank you very much for your work. I have encountered some problems in the process of using it. I hope you can give me some suggestions. When I tried to run the program in matlab file using windows x64, an error occurred. ”Did not find build directory for libRSF binary! “ How can I solve this problem? Thank you again!

    opened by liqiumei-bjtu 1
  • Improvements for CI and numerical Issues

    Improvements for CI and numerical Issues

    • update repos in CI script
    • add numerical robust matrix inversion
    • matrix interface for error computation (for adaptive estimation)
    • handle numerical unstable cases in MSM
    • fix issues with multivariate VBI
    opened by tipf 0
  • Update to Version 2.0

    Update to Version 2.0

    • add code for 2021 RA-L publictation
    • add new factors, error models, and so on...
    • add basic documentation
    • several API changes
    • add build/test infrastructure
    opened by tipf 0
Releases(v2.0)
  • v2.0(May 7, 2021)

    Release of Version 2.0

    This is not only the initial release for RA-L and ICRA 2021, it is also a huge feature-rich update.

    New Features
    • marginalization for the factor graph class
    • a new IMU pre-integration factor
    • an odometry integration factor
    • relative pose factors for 2D and 3D
    • a barometric pressure factor
    • maximum-a-posteriori EM for GMM estimation with priors
    • a new auto-initialization function for various factors
    • introduction of tests to ensure a minimum level of quality
    Bugfixes & Improvements
    • fixes for the multivariate versions of multiple GMM estimation algorithms
    • many small fixes for various geometric transformations
    • much more documentation than before
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jun 18, 2019)

  • v1.0.0(Feb 26, 2019)

Owner
ProAut
Professur Prozessautomatisierung der TU Chemnitz
ProAut
A library of common data structures and algorithms written in C.

C Algorithms The C programming language includes a very limited standard library in comparison to other modern programming languages. This is a coll

Simon Howard 2.8k Jul 30, 2022
CXXGraph is a Header-Only C++ Library for Graph Representation and Algorithms

CXXGraph is a small library, header only, that manages the Graph and it's algorithms in C++. In other words a "Comprehensive C++ Graph Library".

ZigRazor 150 Aug 3, 2022
Library for building multi-level indoor routes using routing algorithms.

Library for building multi-level indoor routes using routing algorithms. You can easily construct routing graphs and find the shortest path for optimal indoor navigation.

Navigine 5 Mar 20, 2022
Header-only C++ library for robotics, control, and path planning algorithms.

Header-only C++ library for robotics, control, and path planning algorithms.

null 340 Jul 29, 2022
c++ library including few algorithms and datastructures

c++ library including few algorithms and datastructures

null 2 Dec 25, 2021
A simple single header C/C++ Library for AABB Collision detection and resolution.

A simple single header C/C++ Library for AABB Collision detection and resolution

Siddharth Roy 8 Nov 14, 2021
This library contains a set of algorithms for working with the routing graph.

Library for building multi-level indoor routes using routing algorithms. You can easily construct routing graphs and find the shortest path for optimal indoor navigation.

Navigine 5 Mar 20, 2022
IntX is a C++11 port of IntX arbitrary precision Integer library with speed, about O(N * log N) multiplication/division algorithms implementation.

IntX IntX is a C++11 port of IntX arbitrary precision Integer library with speed, about O(N * log N) multiplication/division algorithms implementation

Telepati 9 Mar 9, 2022
Pottery - A container and algorithm template library in C

Pottery - A container and algorithm template library in C

Nicholas Fraser 97 Jul 28, 2022
R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.

R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.

HKU-Mars-Lab 572 Aug 2, 2022
Mars_lib - MaRS: A Modular and Robust Sensor-Fusion Framework

Introduction The Modular and Robust State-Estimation Framework, or short, MaRS, is a recursive filtering framework that allows for truly modular multi

Control of Networked Systems - University of Klagenfurt 125 Jul 25, 2022
《Graph Optimization Approach to Range-based Localization》; UWB localization

This is modified from localization . Thanks for his work for uwb localizaiton. 代码1:https://github.com/qxiaofan/awesome-uwb-localization 代码2:https://gi

3D视觉工坊 32 Aug 1, 2022
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021

SSL_SLAM2 Lightweight 3-D Localization and Mapping for Solid-State LiDAR (Intel Realsense L515 as an example) This repo is an extension work of SSL_SL

Wang Han 王晗 316 Aug 4, 2022
VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation

VID-Fusion VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation Authors: Ziming Ding , Tiankai Yang, Kunyi Zhan

ZJU FAST Lab 77 Aug 2, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 5 Feb 13, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9/2.13/1.54 inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 28 Jul 27, 2022
This project was made with a NodeMCU ESP8266 WiFi module, Raspberry Pi4, humidity sensor, flame sensor, luminosity sensor, RGB LED, active buzzer.

Smart.House.IoT.Project This project was made with a NodeMCU ESP8266 WiFi module, Raspberry Pi4, Temp and Humidity sensor, Flame sensor, Photoresistor

Hermassi Nadir 0 Jun 22, 2022
A Multi-sensor Fusion Odometry via Smoothing and Mapping.

LVIO-SAM A multi-sensor fusion odometry, LVIO-SAM, which fuses LiDAR, stereo camera and inertial measurement unit (IMU) via smoothing and mapping. The

Xinliang Zhong 139 Aug 5, 2022
Hands-On example code for Sensor Fusion and Autonomous Driving Stack based on Autoware

Autoware "Hands-On" Stanford Lecture AA274 / Graz University of Technology M. Schratter, J. Zubaca, K. Mautner-Lassnig, T. Renzler, M. Kirchengast, S.

Virtual Vehicle 23 Mar 25, 2022
Port of Adafruit / NXP Sensor Fusion filter

AHRS Fusion Port of Adafruit NXP sensor fusion algorithms based on Kalman filters for rust. Resources https://github.com/adafruit/Adafruit_AHRS https:

Gaute Hope 4 May 14, 2022
A C++ library with all the online array problems and etc which I get online

cpp-Library A C++ library with all the online array problems and etc which I get online. Setup To setup it simply just download the repo and then move

Padmashree Jha 6 Dec 6, 2021
Mobile platform for analysis of localization methods using the Intel RealSense T265 sensor

OptiBot Mobile platform for analysis of localization methods using the Intel RealSense T265 sensor About | Content | Implementation | License | Author

Kamil Goś 2 Feb 17, 2022
Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.

Cartographer Purpose Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platfo

Cartographer 6.1k Aug 1, 2022
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 56 Jul 26, 2022
This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge, and Hackerrank.

CPP_Soln This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge , LeetCod

Rijul Jain 3 Nov 1, 2021
Sensirion Mass Flow Sensor Arduino library, modified from MyElectrons and Nabilphysics Arduino repositories for SFM3300 Digital Mass Flow Sensor

Sensirion Mass Flow Sensor Arduino library, modified from MyElectrons and Nabilphysics Arduino repositories for SFM3300 Digital Mass Flow Sensor. When the sensor data gets stuck, the library has a hard reset function to ensure that it is read continuously.

Paul Ryan Santiago 3 Apr 11, 2022
multispectral monitoring of a sourdough starter; esp32 eink module, scd30 co2 sensor, vl6180 distance sensor

EINK STARTER MONITOR See full blogpost here Tracks height of starter with a VL6180 i2c distance sensor, and CO2/temperature/humidity with an SCD30. A

AKA 15 Feb 16, 2022
Tasmota-Berry Tank Sensor for fuel-oil usind VL53L1X or SR04 sensor

Tasmota-Tank-Sensor Tasmota-Berry Tank Sensor for fuel-oil volume measurement using an VL53L1X or SR04 sensor The Sensor body The sensor was prepared

Tom Lafleur 2 Feb 10, 2022
Kimera is a C++ library for real-time metric-semantic simultaneous localization and mapping

Kimera is a C++ library for real-time metric-semantic simultaneous localization and mapping, which uses camera images and inertial data to build a semantically annotated 3D mesh of the environment. Kimera is modular, ROS-enabled, and runs on a CPU.

null 1.2k Aug 4, 2022