SLAM with Vertical Plane Segmentation for Lifelong Indoor Mapping
Development of a SLAM system with vertical plane segmentation for creating long-term indoor maps
Project Overview
This project develops an innovative indoor SLAM system that utilizes vertical plane segmentation algorithms to extract permanent structures (primarily walls) from the environment, creating clean and long-lasting indoor maps. The system automatically filters out temporary obstacles (such as chairs and trash bins), retaining only the building’s permanent structures to provide reliable references for indoor navigation.


Left: Original SLAM map with temporary obstacles; Right: Clean map after vertical plane segmentation filtering
Core Technologies
1. 3D LiDAR Point Cloud Processing
- High-resolution 3D environment perception
- Real-time point cloud acquisition and processing
- Efficient data structures for large-scale point clouds
2. RANSAC-based Vertical Plane Segmentation
- Iterative plane extraction from point clouds
- Robust estimation in the presence of noise and outliers
- Automatic determination of plane verticality
3. Point Cloud to LaserScan Projection
- 3D to 2D projection for traditional SLAM compatibility
- Preservation of structural information during dimensionality reduction
- Optimized projection algorithms for real-time performance
System Architecture
The system integrates various hardware and software components:
Hardware Components
- Simulation: Differential Drive Robot Model with Velodyne LiDAR
- Real-world: Mobile Platform equipped with Hesai PandarQT LiDAR
Software Stack
- Framework: ROS1 Noetic
- Custom Node: Vertical Plane Segmentation ROS Node
- Projection: Pointcloud2laserscan Package
- SLAM: Gmapping Package for 2D SLAM
- Point Cloud Library: PCL for 3D processing
- Simulation: Gazebo Environment


Complete SLAM processing pipeline showing point cloud processing and map generation stages
Key Features
1. Vertical Plane Extraction
- Identify and extract vertical planes (mainly walls) from the environment
- Robust plane detection using RANSAC algorithm
- Filtering based on plane orientation and size
2. Point Cloud Projection
- Project 3D point clouds onto horizontal plane to form 2D line segments
- Preserve geometric relationships during projection
- Maintain real-time processing capabilities
3. Temporary Obstacle Filtering
- Automatically filter out non-permanent obstacles
- Distinguish between structural and movable elements
- Create clean maps for long-term navigation
4. Clean Map Generation
- Generate maps containing only permanent structures
- Reduce map complexity and storage requirements
- Improve localization reliability
5. Real-time Processing
- Efficient implementation based on C++ and PCL library
- Optimized algorithms for real-time performance
- Low computational overhead
Workflow
- Point Cloud Acquisition: Acquire point cloud data from LiDAR sensor
- Vertical Plane Segmentation:
- Apply voxel grid downsampling for efficiency
- Use RANSAC algorithm to extract planes iteratively
- Determine plane verticality and retain vertical plane point clouds
- Horizontal Projection: Project vertical plane point clouds onto horizontal plane to form line segments
- Map Generation: Use Gmapping for line segment matching and registration to generate 2D grid maps
Experimental Results
Simulation Experiments


Left: Simulation testing in Gazebo environment; Right: Real-world testing in laboratory corridors
- Built indoor environment in Gazebo with walls and temporary obstacles
- Successfully filtered out movable objects on the ground (e.g., cans, bottles)
- Generated clean maps containing only wall structures
Real-world Testing
- Conducted tests in laboratory corridors with chairs and trash bins as obstacles
- Algorithm successfully identified and retained wall structures while filtering out temporary obstacles
- Achieved real-time processing and map building
Technology Stack
- Programming Languages: C++14, Python 3.6+
- Robotics Framework: ROS1 Noetic
- Point Cloud Processing: PCL (Point Cloud Library)
- SLAM Algorithm: Gmapping
- Mathematical Libraries: Eigen3
- Visualization: RViz, Matplotlib
- Simulation: Gazebo Classic
- Build System: CMake, Catkin
Performance Metrics
Processing Performance
- Point Cloud Processing Rate: 10Hz
- Map Update Frequency: 1Hz
- Memory Usage: < 200MB
- CPU Usage: < 25% (Intel i7-8700K)
Map Quality
- Structural Accuracy: 95% wall detection rate
- Noise Reduction: 80% reduction in temporary obstacles
- Map Consistency: Stable maps over multiple runs
Applications
- Long-term Indoor Mapping: Creation of persistent indoor maps
- Global Path Planning: Reliable maps for indoor navigation
- Building Structure Modeling: Architectural feature extraction
- Service Robotics: Enhanced navigation for cleaning and delivery robots
Future Enhancements
- Multi-floor Support: Extend to multi-level building mapping
- Semantic Segmentation: Add semantic understanding to plane classification
- Dynamic Object Tracking: Track and predict movable object trajectories
- Map Merging: Combine maps from multiple robots
- ROS2 Migration: Port system to ROS2 for improved performance
Project Team
- Developer: Jiajie Zhang (zhangjj2023@shanghaitech.edu.cn)
- Advisor: Professor Sören Schwertfeger
Related Resources
- Project Slides: SLAM Project Defense
- Demo Video: System Demonstration
- Code Repository: GitHub Repository
This project contributes to the field of lifelong SLAM by providing a robust solution for creating persistent indoor maps that remain valid over extended periods.