• Stars
    star
    229
  • Rank 174,626 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

Contributors Forks Stargazers Issues BSD-3-Clause License LinkedIn



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.

Important Note: The current HyperRelease is to be considered as an open-sourced beta version of the developed software stack, which will be further refined and updated over the upcoming weeks and months. In particular, several extensions with respect to the integration of inertial measurements, simulation capabilities and other refinements in the optimizer are scheduled to be released after further testing. If you are interested in obtaining the original/exact software stack used for our publication "Continuous-Time Stereo-Inertial Odometry" (which would only be provided as is), or are open to potential collaborations, please feel free to personally 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 HYPER_ENABLE_TESTING and HYPER_ENABLE_BENCHMARKING 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 (-DHYPER_ENABLE_TESTING -DHYPER_ENABLE_BENCHMARKING)

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.

More Repositories

1

ccm_slam

CCM-SLAM: Robust and Efficient Centralized Collaborative Monocular SLAM for Robotic Teams
C++
492
star
2

covins

COVINS-(G) -- A (Generic) Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping
C++
384
star
3

voxfield

🦊 Voxfield: non-Projective Signed Distance Fields for Online Planning and 3D Reconstruction [IROS' 22]
C++
267
star
4

multi_robot_coordination

"Multi-robot Coordination with Agent-Server Architecture for Autonomous Navigation in Partially Unknown Environments", IROS 2020
C++
91
star
5

voxfield-panmap

Multi-resolution panoptic volumetric mapingp using Voxfield as its mapping backbone [IROS' 22]
C++
86
star
6

aerial-depth-completion

Aerial Single-View Depth Completion with Image-Guided Uncertainty Estimation (RA-L/ICRA 2020)
Python
84
star
7

decoSLAM

C++
79
star
8

smb_path_planner

Repository for the path planner for SMB for the ETH Robotics Summer School
C++
51
star
9

mav_hardware

Documentation of the MAV hardware setup used at the Vision for Robotics Lab.
41
star
10

t_prm

Temporal Probabilistic Roadmap (T-PRM)
C++
36
star
11

HyperVariables

General variable and Lie group containers with extensive Eigen interoperability for non-linear optimizations.
C++
33
star
12

visensor_simulator

Simulator for ASL VI-Sensor using the RotorS simulator and Blender
Python
30
star
13

pose_graph_backend

Multi-agent Pose-Graph Sensor Fusion - from "Multi-robot Coordination with Agent-Server Architecture for Autonomous Navigation in Partially Unknown Environments", IROS 2020
C++
26
star
14

fast_multi_robot_exploration

"Fast Multi-UAV Decentralized Exploration of Forests", RAL 2023
C++
25
star
15

dmce

"Decentralised Multi-Robot Exploration using Monte Carlo Tree Search", IROS 2023
C++
25
star
16

place_recognition_dataset_icra2018

Outdoors datasets especially recorded for place recognition applications using both flying and hand-held setups.
20
star
17

HyperSensors

Implementations of common sensing modalities for computer vision.
C++
20
star
18

voxblox_multi_agent

Multi-agent version of Voxblox. Used in the paper "Multi-robot Coordination with Agent-Server Architecture for Autonomous Navigation in Partially Unknown Environments", IROS 2020
C++
20
star
19

mesh_based_mapping

Real-Time Mesh-based Scene Estimation for Aerial Inspection
19
star
20

robopt_open

Library to simplify implementation of optimization problems in Ceres. Open-source version.
C++
18
star
21

multirotors_landing

"Autonomous Emergency Landing for Multicopters using Deep Reinforcement Learning", IROS 2022
C++
17
star
22

vi_rpe

VI-RPE: Visual-Inertial Relative Pose Estimation for Aerial Vehicles
C++
12
star
23

HyperState

Collection of discrete- and continuous-time motion parametrizations.
C++
12
star
24

place_recognition_dataset_ral2019

Synthetic and real outdoor datasets especially recorded for place recognition applications using both flying and hand-held setups. Edit Manage topics
10
star
25

v4rl_mesh_based_mapping_lib

Real-Time Mesh-based Scene Estimation for Aerial Inspection - IROS2016
C++
10
star
26

vins_client_server

VINS-mono for client-server architecture.
C++
9
star
27

hyperion

Symbolic Continuous-Time Gaussian Belief Propagation Framework with Ceres Interoperability
6
star
28

v4rl-student-templates

ETHZ V4RL Student Templates
TeX
5
star
29

MemCDT

Domain-Adaptive Semantic Segmentation with Memory-Efficient Cross-Domain Transformers
Python
4
star
30

vi_bag_tools

Convert ros bagfiles with visual-inertial data to filesystem
Python
2
star
31

interday_crop_registration

Project Page for "Aerial Image-based Inter-day Registration for Precision Agriculture"- ICRA24
Jupyter Notebook
2
star
32

datasets-for-viewpoint-tolerant-semantic-segmentation

This repo contains the link and dscription of the training and test datasets used in project "Viewpoint-tolerant Semantic Segmentation"
1
star
33

comm_msgs

Utility messages for multi-robot state estimation
CMake
1
star
34

pcl_fusion

Repository for fusing the information from multiple agents and sending it to voxblox_multi_agent nodes
C++
1
star