All Projects → jbehley → Suma

jbehley / Suma

Licence: mit
Surfel-based Mapping for 3d Laser Range Data (SuMa)

Projects that are alternatives of or similar to Suma

Pangolin
Python binding of 3D visualization library Pangolin
Stars: ✭ 157 (-50%)
Mutual labels:  slam, opengl
Orb Slam2 Based Ar On Android
This is a Android Augmented Reality APP based on ORB-SLAM2 and OpenGL,which can work well on both outdoor and indoor environments
Stars: ✭ 107 (-65.92%)
Mutual labels:  slam, opengl
Visual Slam Roadmap
Roadmap to becoming a Visual-SLAM developer in 2021
Stars: ✭ 277 (-11.78%)
Mutual labels:  slam
Overlapnet
OverlapNet - Loop Closing for 3D LiDAR-based SLAM (chen2020rss)
Stars: ✭ 299 (-4.78%)
Mutual labels:  slam
Orb slam 2 ros
A ROS implementation of ORB_SLAM2
Stars: ✭ 294 (-6.37%)
Mutual labels:  slam
Openvslam
OpenVSLAM: A Versatile Visual SLAM Framework
Stars: ✭ 2,945 (+837.9%)
Mutual labels:  slam
Mxengine
C++ open source 3D game engine
Stars: ✭ 284 (-9.55%)
Mutual labels:  opengl
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+825.48%)
Mutual labels:  opengl
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (-1.59%)
Mutual labels:  opengl
Rust Pushrod
Cross Platform GUI Library for Rust
Stars: ✭ 292 (-7.01%)
Mutual labels:  opengl
Lwjgl3
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan), audio (OpenAL), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR) applications.
Stars: ✭ 3,540 (+1027.39%)
Mutual labels:  opengl
Ava
A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.
Stars: ✭ 287 (-8.6%)
Mutual labels:  opengl
Pyrr
3D mathematical functions using NumPy
Stars: ✭ 282 (-10.19%)
Mutual labels:  opengl
Glportal
🎮 Open Source teleportation based first person puzzle-platformer
Stars: ✭ 297 (-5.41%)
Mutual labels:  opengl
Cute headers
Collection of cross-platform one-file C/C++ libraries with no dependencies, primarily used for games
Stars: ✭ 3,274 (+942.68%)
Mutual labels:  opengl
Deep Learning Localization Mapping
A collection of deep learning based localization models
Stars: ✭ 300 (-4.46%)
Mutual labels:  slam
Stereo ptam
Python implementation of SLAM algorithm Stereo-PTAM
Stars: ✭ 280 (-10.83%)
Mutual labels:  slam
Se2lam
(ICRA 2019) Visual-Odometric On-SE(2) Localization and Mapping
Stars: ✭ 285 (-9.24%)
Mutual labels:  slam
Yampa
Functional Reactive Programming domain-specific language embedded in Haskell, for programming efficient hybrid (mixed discrete-time and continuous-time) systems.
Stars: ✭ 294 (-6.37%)
Mutual labels:  opengl
Constellation
A graph-focused data visualisation and interactive analysis application.
Stars: ✭ 309 (-1.59%)
Mutual labels:  opengl

Surfel-based Mapping using 3D Laser Range Data

Mapping of 3d laser range data from a rotating laser range scanner, e.g., the Velodyne HDL-64E. For representing the map, we use surfels that enables fast rendering of the map for point-to-plane ICP and loop closure detection.

Publication

If you use our implementation in your academic work, please cite the corresponding paper:

J. Behley, C. Stachniss. Efficient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments, Proc. of Robotics: Science and Systems (RSS), 2018.

The BibTeX entry for the paper is:

@inproceedings{behley2018rss, 
		author = {Jens Behley and Cyrill Stachniss},
		title  = {Efficient Surfel-Based SLAM using 3D Laser Range Data in Urban Environments},
		booktitle = {Proc.~of Robotics: Science and Systems~(RSS)},
		year = {2018}  
}

Dependencies

  • catkin
  • Qt5 >= 5.2.1
  • OpenGL >= 3.3
  • libEigen >= 3.2
  • gtsam >= 4.0

In Ubuntu 16.04: Installing all dependencies should be accomplished by

sudo apt-get install build-essential cmake libgtest-dev libeigen3-dev libboost-all-dev qtbase5-dev libglew-dev libqt5libqgtk2 catkin

Additionally, make sure you have catkin-tools and the fetch verb installed:

sudo apt install python-pip
sudo pip install catkin_tools catkin_tools_fetch empy

Build

If you do not have a catkin workspace already, create one:

cd
mkdir -p catkin_ws/src && cd catkin_ws
catkin init
cd src && git clone https://github.com/ros/catkin.git

Clone the repository in the src directory of your catkin workspace:

git clone https://github.com/jbehley/SuMa.git

Download the additional dependencies (or clone glow into your catkin workspace src yourself):

catkin deps fetch

For the first setup of your workspace containing this project, you need:

catkin build --save-config -i --cmake-args -DCMAKE_BUILD_TYPE=Release -DOPENGL_VERSION=430 -DENABLE_NVIDIA_EXT=YES

Where you have to set OPENGL_VERSION to the supported OpenGL core profile version of your system, which you can query as follows:

$ glxinfo | grep "version"
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.3.0 NVIDIA 367.44
OpenGL core profile shading language version string: 4.30 NVIDIA [...]
OpenGL version string: 4.5.0 NVIDIA 367.44
OpenGL shading language version string: 4.50 NVIDIA

Here the line OpenGL core profile version string: 4.3.0 NVIDIA 367.44 is important and therefore you should use -DOPENGL_VERSION = 430. If you are unsure you can also leave it on the default version 330, which should be supported by all OpenGL-capable devices.

If you have a NVIDIA device, like a Geforce or Quadro graphics card, you should also activate the NVIDIA extensions using -DENABLE_NVIDIA_EXT=YES for info about the current GPU memory usage of the program.

After this setup steps, you can build with catkin build, since the configuration has been saved to your current Catkin profile (therefore, --save-config was needed).

Now the project root directory (e.g. ~/catkin_ws/src/SuMa) should contain a bin directory containing the visualizer.

How to run and use it?

All binaries are copied to the bin directory of the source folder of the project. Thus,

  1. run visualizer in the bin directory,
  2. open a Velodyne directory from the KITTI Visual Odometry Benchmark and select a ".bin" file,
  3. start the processing of the scans via the "play button" in the GUI.

In the config directory, different configuration files are given, which can be used as reference to set parameters for some experiments with other data. Specifying the right "vertical Field-of-View" (data_fov_up and data_fov_down) and the right number of scan lines (data_height) are the most important parameters.

See also the project page for configuration files used for the evaluation in the paper.

License

Copyright 2018 Jens Behley, University of Bonn.

This project is free software made available under the MIT License. For details see the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].