hyperslam

Modular, open-source implementations of continuous-time simultaneous localization and mapping algorithms.

https://github.com/vis4rob-lab/hyperslam

Science Score: 75.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, ieee.org
  • Academic email domains
  • Institutional organization owner
    Organization vis4rob-lab has institutional domain (www.v4rl.ethz.ch)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.7%) to scientific vocabulary

Keywords

computer-vision continuous-time sensor-fusion slam
Last synced: 6 months ago · JSON representation ·

Repository

Modular, open-source implementations of continuous-time simultaneous localization and mapping algorithms.

Basic Info
  • Host: GitHub
  • Owner: VIS4ROB-lab
  • License: bsd-3-clause
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 9.55 MB
Statistics
  • Stars: 244
  • Watchers: 15
  • Forks: 11
  • Open Issues: 0
  • Releases: 0
Topics
computer-vision continuous-time sensor-fusion slam
Created over 3 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Code of conduct Citation

README.md

HyperSLAM

Modular, open-source implementations of continuous-time simultaneous localization and mapping algorithms.
Report Issues or Request Features


About

HyperSLAM provides an extensive and modular software stack which targets the challenging task of Continuous-Time Simultaneous Localization and Mapping (CTSLAM) in a principled manner, and aims to evolve into an indispensable link between discrete- and continuous-time optimizations for fusing sensory information from arbitrary sensor suites in real-time. The current release focuses on continuous-time representations (i.e. B-Splines) and formulates the continuous-time SLAM problem as an online, sliding window, Non-Linear-Least-Squares (NLLS) optimization based on the Ceres solver.

Note: Development on HyperSLAM-related repositories has been discontinued. If you are interested in obtaining the original software stack related to our publication "Continuous-Time Stereo-Inertial Odometry" (provided as is), please feel free to contact us.

If you use the HyperSLAM ecosystem, please cite it as below.

@article{RAL2022Hug, author={Hug, David and B\"anninger, Philipp and Alzugaray, Ignacio and Chli, Margarita}, journal={IEEE Robotics and Automation Letters}, title={Continuous-Time Stereo-Inertial Odometry}, year={2022}, volume={7}, number={3}, pages={6455-6462}, doi={10.1109/LRA.2022.3173705} }

Setup & Installation

Preliminaries

This framework relies on relatively new features in the C++ standard and, hence, relies on recent GNU (GCC/G++) compilers as well as novel language standards defined in C++17 and C++20. Furthermore, the main development and testing was done on Ubuntu 20.04 LTS (Focal Fossa) with ROS Noetic Ninjemys, which can be set up as explained below.

  • Install Ubuntu 20.04 LTS (Focal Fossa) or Ubuntu 18.04 LTS (Bionic Beaver).

  • Install CMake and GNU (GCC/G++) alternatives.

    ```

    Install essentials.

    sudo apt update sudo apt install build-essential cmake git

    Remove alternatives.

    sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++

    Install compilers.

    sudo apt install gcc-10 g++-10 gcc-9 g++-9

    Set alternatives.

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30

    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20 sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30

    sudo update-alternatives --set cc /usr/bin/gcc sudo update-alternatives --set c++ /usr/bin/g++

    Configure alternatives.

    sudo update-alternatives --config gcc sudo update-alternatives --config g++ ```

  • Install ROS Noetic Ninjemys (20.04) or ROS Melodic Morenia (18.04), depending on the selected Ubuntu version, by following the official installation documentation or the outlined steps below.

    ```

    Setup sources.

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" \

    /etc/apt/sources.list.d/ros-latest.list'

    Setup keys.

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' \ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    Update index.

    sudo apt update

    Install ROS.

    sudo apt install ros-noetic-desktop-full

    Source the installation.

    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

    echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc source ~/.zshrc ```

Dependencies

Aside from the previous requirements, HyperSLAM also exposes several, additional dependencies: BLAS, LAPACK, gflags (installation from source), glog, gtest (installation from source), gbench (installation from source), Boost, Eigen, OpenCV (installation from source or with additional modules), Ceres Solver 2.0 (or higher versions) and yaml-cpp, which are installed as follows. Note, this step may become obsolete in the future with the introduction of an automated installation.

```

Install glog.

Note: MUST be installed from source!

Install packages.

sudo apt install libatlas-base-dev libgflags-dev \ googletest libbenchmark-dev libboost-all-dev libeigen3-dev libopencv-dev \ libsuitesparse-dev libceres-dev libyaml-cpp-dev

Install the Cerese solver.

Note: MUST be installed from source (with version 2.0 or higher)!

```

IDE Setup (optional)

We recommend using CLion as the IDE of choice. Having followed this installation guide, and having cloned and loaded the HyperSLAM repository, two additional steps are required to correctly source the ROS installation. Specifically, CMAKE_PREFIX_PATH=/opt/ros/noetic/share/ must be added to the environment variables under Setting > Build, Execution, Deployment > CMake. A similar step is required to use the shared ROS libraries by adding LD_LIBRARY_PATH=/opt/ros/noetic/lib to the runtime environment.

Build & Run

All executables are written to the bin folder, and the two flags HYPERENABLETESTING and HYPERENABLEBENCHMARKING are used to control whether the testing and benchmarking executables are compiled alongside the main executable.

```

Configuration.

mkdir build && cd build cmake ..

Compilation

make -j8 (-DHYPERENABLETESTING -DHYPERENABLEBENCHMARKING) ```

We refer to the README.md in the evaluation folder to run HyperSLAM.

Literature

  1. Continuous-Time Stereo-Inertial Odometry, Hug et al. (2022)
  2. HyperSLAM: A Generic and Modular Approach to Sensor Fusion and Simultaneous
    Localization And Mapping in Continuous-Time, Hug and Chli (2020)
  3. Efficient Derivative Computation for Cumulative B-Splines on Lie Groups, Sommer et al. (2020)
  4. A Micro Lie Theory for State Estimation in Robotics, Solà et al. (2018)
  5. A Primer on the Differential Calculus of 3D Orientations, Bloesch et al. (2016)
  6. A Generic Camera Model and Calibration Method for Conventional,
    Wide-Angle, and Fish-Eye Lenses, Kannala and Brandt (2006)
  7. Single View Point Omnidirectional Camera Calibration from Planar Grids, Mei and Rives (2007)

Updates

24.10.22 Release of HyperSLAM (beta).
25.07.22 Release of HyperSensors submodule.
19.07.22 Release of HyperState submodule.
17.06.22 Release of HyperVariables submodule.

Contact

Admin - David Hug, Leonhardstrasse 21, 8092 Zürich, ETH Zürich, Switzerland
Maintainer - Philipp Bänninger, Leonhardstrasse 21, 8092 Zürich, ETH Zürich, Switzerland
Maintainer - Ignacio Alzugaray, Leonhardstrasse 21, 8092 Zürich, ETH Zürich, Switzerland

License

HyperSLAM is distributed under the BSD-3-Clause License.

Owner

  • Name: ETHZ V4RL
  • Login: VIS4ROB-lab
  • Kind: organization

Vision for Robotics Lab, ETH Zurich

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this repository, please cite it as below."
authors:
- family-names: "Hug"
  given-names: "David"
  orcid: "https://orcid.org/0000-0002-4430-3877"
- family-names: "Bänninger"
  given-names: "Philipp"
  orcid: "https://orcid.org/0000-0002-2295-1689"
- family-names: "Alzugaray"
  given-names: "Ignacio"
  orcid: "https://orcid.org/0000-0002-7121-0000"
- family-names: "Chli"
  given-names: "Margarita"
  orcid: "https://orcid.org/0000-0001-5611-7492"
title: "HyperSLAM"
url: "https://github.com/VIS4ROB-lab/HyperSLAM"
preferred-citation:
  type: article
  authors:
  - family-names: "Hug"
    given-names: "David"
    orcid: "https://orcid.org/0000-0002-4430-3877"
  - family-names: "Bänninger"
    given-names: "Philipp"
    orcid: "https://orcid.org/0000-0002-2295-1689"
  - family-names: "Alzugaray"
    given-names: "Ignacio"
    orcid: "https://orcid.org/0000-0002-7121-0000"
  - family-names: "Chli"
    given-names: "Margarita"
    orcid: "https://orcid.org/0000-0001-5611-7492"
  doi: "10.1109/LRA.2022.3173705"
  journal: "IEEE Robotics and Automation Letters"
  month: 7
  start: 6455 # First page number
  end: 6462 # Last page number
  title: "Continuous-Time Stereo-Inertial Odometry"
  issue: 3
  volume: 7
  year: 2022

GitHub Events

Total
  • Issues event: 1
  • Watch event: 10
Last Year
  • Issues event: 1
  • Watch event: 10

Dependencies

evaluation/requirements.txt pypi
  • Pillow ==9.2.0
  • PyQt5 ==5.15.7
  • PyQt5-Qt5 ==5.15.2
  • PyQt5-sip ==12.11.0
  • PyYAML ==6.0
  • Pygments ==2.13.0
  • argcomplete ==2.0.0
  • colorama ==0.4.5
  • cycler ==0.11.0
  • evo ==1.19.0
  • fonttools ==4.37.1
  • kiwisolver ==1.4.4
  • lz4 ==4.0.2
  • matplotlib ==3.5.3
  • natsort ==8.2.0
  • numpy ==1.23.3
  • packaging ==21.3
  • pandas ==1.4.4
  • pkg_resources ==0.0.0
  • pycairo ==1.21.0
  • pyparsing ==3.0.9
  • python-dateutil ==2.8.2
  • pytz ==2022.2.1
  • rosbags ==0.9.12
  • ruamel.yaml ==0.17.21
  • ruamel.yaml.clib ==0.2.6
  • scipy ==1.9.1
  • seaborn ==0.12.0
  • six ==1.16.0
  • zstandard ==0.18.0