GithubHelp home page GithubHelp logo

jbehley / suma Goto Github PK

View Code? Open in Web Editor NEW
539.0 18.0 166.0 4.77 MB

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

License: MIT License

CMake 1.02% C++ 84.73% C 4.45% GLSL 9.80%
rss2018 opengl slam velodyne kitti-dataset

suma's Introduction

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

  • Qt5 >= 5.2.1
  • OpenGL >= 3.3
  • libEigen >= 3.2

In Ubuntu 22.04/20.04: Installing all dependencies is accomplished by:

  $  sudo apt-get install -y build-essential cmake libeigen3-dev libboost-all-dev qtbase5-dev libglew-dev

Build

  $ mkdir build && cd build
  $ cmake .. -DCMAKE_BUILD_TYPE=Release -DOPENGL_VERSION=430 -DENABLE_NVIDIA_EXT=YES
  $ make -j5

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.

Now the project root directory 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.

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.