Skip to content

PLVS is a real-time SLAM system with points, lines, volumetric mapping and 3D unsupervised incremental segmentation.

License

Notifications You must be signed in to change notification settings

luigifreda/plvs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLVS II

v0.2.1

Author: Luigi Freda

PLVS is a real-time system that combines sparse SLAM, volumetric mapping, and 3D unsupervised incremental segmentation. PLVS stands for Points, Lines, Volumetric mapping, and Segmentation.

PLVS lab PLVS augmented reality PLVS details PLVS details

PLVS is available in two different versions.

  • PLVS I: hosted in the branch plvs1. It is based on ORB-SLAM2, and supports mono, stereo, and RGB-D cameras.
  • PLVS II: hosted in the master branch. It is based on ORB-SLAM3, and also supports camera systems provided with IMUs.

This document provides a list of the new features provided by PLVS. For more information and videos, please visit this research page or refer to the following document:

PLVS: A SLAM System with Points, Lines, Volumetric Mapping, and 3D Incremental Segmentation 
Luigi Freda

Note: PLVS is an active project. This README is under construction and will be updated with further information and details as new improvements are released. Stay tuned!

Quick start

The following procedures were tested under Ubuntu 20, 22, 24. ROS support is provided only under noetic with Ubuntu 20 (see here).
If you don't have Ubuntu 20 with noetic, check rosdocker and use the noetic or noetic_cuda containers.

NOTE: At present, under Ubuntu 24.04, BUILD_WITH_MARCH_NATIVE is set to OFF. Enabling --march=native optimization brings some problems probably due to different default building options in the native libpcl.

Build

  1. Install basic dependencies:
    $ ./install_dependencies.sh
  2. Install OpenCV in a local folder:
    $ ./install_local_opencv.sh
  3. Build the PLVS framework:
    $ ./build.sh

It should be easy to adapt the above procedures if you have a different OS version.

If you want to skip step 2, you can set the variables OpenCV_DIR and OPENCV_VERSION in config.sh with your local OpenCV path and version, respectively. However, this is not recommended.

ROS build

Only under ROS noetic you can run:
$ ./build_ros_catkin.sh

This command builds the PLVS ROS workspace and deploys it in the ros_ws folder.

Running the examples

Once everything is built, you can enter in the Scripts folder and test the different examples. For instance you can configure and run:

  • $ ./run_tum_rgbd.sh for TUM RGB-D datasets
  • $ ./run_kitti_stereo.sh for KITTI datasets
  • $ ./run_euroc_stereo_inertial.sh for Euroc datasets, stereo + inertial
  • $ ./run_euroc_stereo.sh for Euroc datasets, only stereo
  • $ ./run_tum_vi_stereo.sh for TUM VI datasets, only stereo
  • $ ./run_tum_vi_stereo_inertial.sh for TUM VI datasets, stereo + inertial

In each of the above scripts, you have to configure (1) the DATASET_BASE_FOLDER, (2) the specific DATASET of interest, and (3) the used YAML configuration file. In particular, each YAML configuration file shows different sections with commented options. For a quick overview of the new features and their corresponding YAML options refer to new_features.md.

If you built the ROS workspace, you can use the scripts ros_xterm* to launch the PLVS ROS nodes. For instance, with the TUM datasets, run ros_xterm_tum_rgbd.sh.

Contributing

We welcome contributions to the codebase through pull requests, bug reports, comments, and feature proposals via issues. For any questions or feedback, please contact luigifreda(at)gmail(dot)com. Thank you!

License

PLVS is released under GPLv3 license. PLVS contains some modified libraries, each one coming with its license. Where nothing is specified, a GPLv3 license applies to the software.

If you use PLVS in your projects, please cite our above-mentioned document.

Credits

  • The PLVS I and PLVS II frameworks are based on ORB-SLAM2 and ORB-SLAM3 respectively. Many thanks to their Authors for their great work and contributions to the Research and open-source communities.

About

PLVS is a real-time SLAM system with points, lines, volumetric mapping and 3D unsupervised incremental segmentation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published