All Projects → acschaefer → ple

acschaefer / ple

Licence: GPL-3.0 license
Probabilistic line extraction from 2-D range scan

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to ple

Onboard Sdk
DJI Onboard SDK Official Repository
Stars: ✭ 669 (+1323.4%)
Mutual labels:  robotics, lidar
direct lidar odometry
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds
Stars: ✭ 202 (+329.79%)
Mutual labels:  robotics, lidar
Dynamic robot localization
Point cloud registration pipeline for robot localization and 3D perception
Stars: ✭ 339 (+621.28%)
Mutual labels:  robotics, lidar
Libpointmatcher
An "Iterative Closest Point" library for 2-D/3-D mapping in Robotics
Stars: ✭ 979 (+1982.98%)
Mutual labels:  robotics, lidar
Ssl slam2
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021
Stars: ✭ 96 (+104.26%)
Mutual labels:  robotics, lidar
M Loam
Robust Odometry and Mapping for Multi-LiDAR Systems with Online Extrinsic Calibration
Stars: ✭ 114 (+142.55%)
Mutual labels:  robotics, lidar
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+3891.49%)
Mutual labels:  robotics, lidar
Extrinsic lidar camera calibration
This is a package for extrinsic calibration between a 3D LiDAR and a camera, described in paper: Improvements to Target-Based 3D LiDAR to Camera Calibration. This package is used for Cassie Blue's 3D LiDAR semantic mapping and automation.
Stars: ✭ 149 (+217.02%)
Mutual labels:  robotics, lidar
lidar-buster
Collection of Python snippets for processing LiDAR point cloud.
Stars: ✭ 15 (-68.09%)
Mutual labels:  lidar
FAST LIO SLAM
LiDAR SLAM = FAST-LIO + Scan Context
Stars: ✭ 183 (+289.36%)
Mutual labels:  lidar
opensource slam noted
open source slam system notes
Stars: ✭ 119 (+153.19%)
Mutual labels:  lidar
fusion-ekf
An extended Kalman Filter implementation in C++ for fusing lidar and radar sensor measurements.
Stars: ✭ 113 (+140.43%)
Mutual labels:  lidar
XiaohuLuVPDetection
This is a Python + OpenCV implementation of the Vanishing Point algorithm by Xiaohu Lu et al. - http://xiaohulugo.github.io/papers/Vanishing_Point_Detection_WACV2017.pdf
Stars: ✭ 79 (+68.09%)
Mutual labels:  line-detection
gpsCalibration
GPS calibration using points cloud slam and other sensors
Stars: ✭ 80 (+70.21%)
Mutual labels:  lidar
robotics-level-4
This repo contains projects created using TensorFlow-Lite on Raspberry Pi and Teachable Machine. AI and ML capabilities have been integrated with Robot's software.
Stars: ✭ 34 (-27.66%)
Mutual labels:  robotics
whiteboxgui
An interactive GUI for WhiteboxTools in a Jupyter-based environment
Stars: ✭ 94 (+100%)
Mutual labels:  lidar
teraranger
Ros nodes for single TeraRanger sensors
Stars: ✭ 19 (-59.57%)
Mutual labels:  lidar
HRVO
The Hybrid Reciprocal Velocity Obstacle (C++)
Stars: ✭ 90 (+91.49%)
Mutual labels:  robotics
robo-vln
Pytorch code for ICRA'21 paper: "Hierarchical Cross-Modal Agent for Robotics Vision-and-Language Navigation"
Stars: ✭ 34 (-27.66%)
Mutual labels:  robotics
Autonomous-Ai-drone-scripts
State of the art autonomous navigation scripts using Ai, Computer Vision, Lidar and GPS to control an arducopter based quad copter.
Stars: ✭ 45 (-4.26%)
Mutual labels:  lidar

PLE: Probabilistic Line Extraction from 2-D Laser Range Scans

Line extraction example

Exemplary result of our polyline extraction method applied to a scan captured in an office. The scan consists of 361 rays, of which every second is displayed as a red line. Gray lines indicate maximum-range readings. The extracted polyline map, drawn as blue lines, consists of ten vertices, reducing memory requirements to less than 3%.

About this Repository

This repository contains the MATLAB implementation of our maximum likelihood approach to extract polylines from 2-D range scans. It also comprises the scripts we used in the experiments to compare our method to several state-of-the-art line extractors.

The Algorithm in a Nutshell

Our approach extracts polylines from 2-D laser range scans. In contrast to prevalent line extraction techniques, it does not rely on a geometric heuristic, but maximizes the measurement probability of the scan to accurately determine polylines. The method consists of two steps.

  1. Polyline Extraction. Polyline extraction starts by connecting all neighboring scan endpoints to form a set of initial polylines. It then iteratively removes the vertex that incurs the least error in terms of measurement probability until it reaches a given threshold. The result is a set of polylines whose vertex locations coincide with the locations of a subset of the scan endpoints.
  2. Polyline Optimization. To do away with the limitation that vertex locations coincide with endpoint locations, we formulate an optimization problem that moves the vertices to the positions that maximize the measurement probability of the scan. We call this latter process polyline optimization.

For a short illustration of the algorithm, please take a look at the Powerpoint presentation from IROS 2018. For a detailed description of our method and the experiments, consult our paper.

Quick Start Instructions

The code does not require compilation or installation. To run a line extraction example, follow these steps:

  1. Install MATLAB (R2017b and R2018a are tested) with robotics toolbox
  2. Clone or download the repository.
  3. Run the startup script in the matlab folder to set up your MATLAB searchpath.
  4. Run the example script extrlin.

Repository Organization

The repository is organized using the following folders:

Folder Content
data laser scan files and results of experiments with Veeck's method
matlab functions and classes required to run examples and experiments
matlab/script example scripts and experiments scripts
matlab/output output of our experiments, see below

How to Reproduce Our Experiments

To reproduce our experimental results, run the following scripts one after the other from the folder matlab:

Script Description
startup Set up MATLAB search path.
gendata Create real-world dataset from Carmen files and simulated dataset using randomized polygons.
runexp Apply all line extraction methods to all datasets with various parameter settings. This script usually runs for a few hours until completion.
evalexp Calculate various figures of merits from the results.
ploteval Create the evaluation plots.

After running evalexp, individual results can be plotted using the function inspectresult, e.g. inspectresult(1,1,1,1). See function help for details. Note that the .mat and .fig files containing the results from the above steps are already present in the output folder. Consequently, every script can be directly executed.

Supported Platforms and MATLAB Versions

It is not bound to any specific platform. It was tested on MATLAB R2017b and R2018a with robotics toolbox on Windows and Linux systems. Earlier versions than R2016b do not work out of the box. If you experience any problems, please do not hesitate to create an issue.

License

All code in this repository is licensed under GPL-3.0.

How to Cite

If you use our line extraction method in your research, please cite our paper that describes the approach:

A Maximum Likelihood Approach to Extract Polylines from 2-D Laser Range Scans
Alexander Schaefer, Daniel Büscher, Lukas Luft, Wolfram Burgard
IEEE International Conference on Intelligent Robots 2018, Madrid, Spain

BibTeX

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