Coder Social home page Coder Social logo

wavemap's Introduction

Wavemap

wavemap_cover

Wavemap is a hierarchical, multi-resolution occupancy mapping framework. It achieves both high memory and computational efficiency by combining Haar wavelet compression and a hierarchical measurement integration scheme. These efficiency improvements make demanding uncertainty-aware sensor models tractable, allowing wavemap to attain exceptionally high recall rates on challenging obstacles such as thin objects.

The framework is very flexible and supports several data structures, integration schemes, measurement models and projection models out of the box. Any number of inputs with potentially different settings and weights can simultaneously be fused into a single map.

We test the code both on Intel and ARM. At the moment, only ROS1 is supported, but we would be interested in adding ROS2 support. Please reach out to us if you are interested in collaborating.

Paper

When using wavemap for research, please cite the following paper [preprint]:

@INPROCEEDINGS{reijgwart2023wavemap,
    author = {Reijgwart, Victor and Cadena, Cesar and Siegwart, Roland and Ott, Lionel},
    journal = {Robotics: Science and Systems. Online Proceedings},
    title = {Efficient volumetric mapping of multi-scale environments using wavelet-based compression},
    year = {2023-07},
}
Abstract
Volumetric maps are widely used in robotics due to their desirable properties in applications such as path planning, exploration, and manipulation. Constant advances in mapping technologies are needed to keep up with the improvements in sensor technology, generating increasingly vast amounts of precise measurements. Handling this data in a computationally and memory-efficient manner is paramount to representing the environment at the desired scales and resolutions. In this work, we express the desirable properties of a volumetric mapping framework through the lens of multi-resolution analysis. This shows that wavelets are a natural foundation for hierarchical and multi-resolution volumetric mapping. Based on this insight we design an efficient mapping system that uses wavelet decomposition. The efficiency of the system enables the use of uncertainty-aware sensor models, improving the quality of the maps. Experiments on both synthetic and real-world data provide mapping accuracy and runtime performance comparisons with state-of-the-art methods on both RGB-D and 3D LiDAR data. The framework is open-sourced to allow the robotics community at large to explore this approach.

Note that the code has significantly been improved since the paper was written. In terms of performance, wavemap now includes multi-threaded measurement integrators and faster, more efficient data structures inspired by OpenVDB.

Install

To use wavemap with ROS, we recommend using ROS Noetic as installed following the standard instructions. Other ROS1 distributions should also work, but have not yet been tested.

Start by installing the necessary system dependencies

sudo apt update
sudo apt install git python3-catkin-tools python3-vcstool -y

Create a catkin workspace with

mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/
source /opt/ros/noetic/setup.sh
catkin init
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

Clone the code for wavemap and its catkin dependencies

# With SSH keys
cd ~/catkin_ws/src
git clone [email protected]:ethz-asl/voxgraph.git
vcs import --recursive --input wavemap/tooling/vcstool/wavemap_ssh.yml .
No ssh keys?
cd ~/catkin_ws/src
git clone https://github.com/ethz-asl/voxgraph.git
vcs import --recursive --input wavemap/tooling/vcstool/wavemap_https.yml .

Then install the remaining system dependencies using

cd ~/catkin_ws/src
rosdep update
rosdep install --ignore-src --skip-keys="numpy_eigen catkin_boost_python_buildtool" -y

Build wavemap's ROS interface and the Rviz plugin used to visualize its maps with

cd ~/catkin_ws/
catkin build wavemap_3d_ros wavemap_rviz_plugin

Run

Demo

Instructions coming soon.

Your own dataset

The basic requirements for running wavemap are:

  1. an odometry source, and
  2. a source of dense depth or 3D LiDAR data, as either depth images or point clouds.

More instructions coming soon

wavemap's People

Contributors

victorreijgwart 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.