Table of Contents
Fetching ...

Point cloud obstacle detection with the map filtration

Lukas Kratochvila

TL;DR

The paper tackles obstacle detection for robots operating in unknown environments using LiDAR-derived point clouds, aiming to enable real-time mapping and avoidance on computationally limited hardware. It introduces a lightweight, map-filtered pipeline that preprocesses data with a voxel grid, removes floors via RANSAC, filters points using an occupancy map, and clusters remaining points with FLANN to generate detections, all on a Raspberry Pi. Compared to GPU-based 3D detectors, the CPU-based pipeline demonstrates strong efficiency (≈11 ms per frame) while maintaining real-time capability, validated through lab experiments with a 10 Hz LiDAR and 17,000 samples. The work contributes a practical, ROS2-integrated solution suitable for resource-constrained robots and sets the stage for future obstacle classification and adaptive responses.

Abstract

Obstacle detection is one of the basic tasks of a robot movement in an unknown environment. The use of a LiDAR (Light Detection And Ranging) sensor allows one to obtain a point cloud in the vicinity of the sensor. After processing this data, obstacles can be found and recorded on a map. For this task, I present a pipeline capable of detecting obstacles even on a computationally limited device. The pipeline was also tested on a real robot and qualitatively evaluated on a dataset, which was collected in Brno University of Technology lab. Time consumption was recorded and compared with 3D object detectors.

Point cloud obstacle detection with the map filtration

TL;DR

The paper tackles obstacle detection for robots operating in unknown environments using LiDAR-derived point clouds, aiming to enable real-time mapping and avoidance on computationally limited hardware. It introduces a lightweight, map-filtered pipeline that preprocesses data with a voxel grid, removes floors via RANSAC, filters points using an occupancy map, and clusters remaining points with FLANN to generate detections, all on a Raspberry Pi. Compared to GPU-based 3D detectors, the CPU-based pipeline demonstrates strong efficiency (≈11 ms per frame) while maintaining real-time capability, validated through lab experiments with a 10 Hz LiDAR and 17,000 samples. The work contributes a practical, ROS2-integrated solution suitable for resource-constrained robots and sets the stage for future obstacle classification and adaptive responses.

Abstract

Obstacle detection is one of the basic tasks of a robot movement in an unknown environment. The use of a LiDAR (Light Detection And Ranging) sensor allows one to obtain a point cloud in the vicinity of the sensor. After processing this data, obstacles can be found and recorded on a map. For this task, I present a pipeline capable of detecting obstacles even on a computationally limited device. The pipeline was also tested on a real robot and qualitatively evaluated on a dataset, which was collected in Brno University of Technology lab. Time consumption was recorded and compared with 3D object detectors.
Paper Structure (10 sections, 5 figures, 1 table)

This paper contains 10 sections, 5 figures, 1 table.

Figures (5)

  • Figure 1: The ROS architecture overviewros_a. Whole library consists of five main parts. At the top of the pyramid is used code in C++ or python. Next level is responsible for translation of the user code. Level below is client library with name-spaces, logging, parameters and time clocking. On the bottom is communication provider.
  • Figure 2: A map example. This example of lab map was created with graphic editor.
  • Figure 3: The robot overview. LiDAR MID-70 is in front. Raspberry Pi is hidden inside. Battery and WiFi router are on the side. The robot was equipped with more facilities than is described in this paper.
  • Figure 4: Diagram with pipeline structure. The whole pipeline is computed on a computationally constrained device. In this diagram one can see messages used for communication between nodes.
  • Figure 5: Example of processed point cloud from two perspectives. (a) Raw data from sensor (bird's-eye view), (b) preprocessed data with pcl_preprocessing_node (bird's-eye view), (c) detections found by cloustering_node (bird's-eye view), (d) Raw data from sensor (perspective view), (e) preprocessed data with pcl_preprocessing_node (perspective view), (f) detections found by cloustering_node (perspective view).