rbpf-adaptive

Offline Rao-Blackwellized Particle Filter SLAM Using Adaptive Sampling in ROS2


Abstract

This repository explores an enhanced Rao-Blackwellized Particle Filter (RBPF) SLAM algorithm addressing particle resampling inefficiencies. By incorporating adaptive sampling techniques (dynamic weight normalization and multi-resolution sampling), this SLAM framework is implemented in ROS2 using C++ and tested on the TurtleBot3 platform.

Key contributions include:

Key Highlights


Introduction

Simultaneous Localization and Mapping (SLAM) is crucial for enabling autonomous robots to navigate unknown environments.

Challenges Addressed:

  1. Particle resampling inefficiencies in traditional RBPF SLAM.
  2. Computational constraints in real-time indoor navigation.

Solution:

We propose adaptive sampling strategies:

Our methodology ensures accurate localization and mapping with reduced computational requirements.


Core Algorithm

The SLAM problem is defined as:

$p(x_{1:t}, m | z_{1:t}, u_{1:t}) \propto p(x_{1:t} | z_{1:t}, u_{1:t}) \cdot p(m | x_{1:t}, z_{1:t})$

To minimize particle depletion:

  1. Adaptive Thresholding dynamically adjusts the resampling trigger based on particle weight variance.
  2. Multi-Resolution Sampling prioritizes high-uncertainty regions for particle allocation.

Implementation

Setup

  1. Hardware: TurtleBot3 (LiDAR and wheel odometry)
  2. Software: ROS2, C++, Gazebo Simulation
  3. Dependencies:
    • ROS2 Foxy or higher
    • TurtleBot3 packages
    • Gazebo (optional for simulation)

Key Components:


Experimental Setup

Environment

Results

Metric Baseline RBPF SLAM Proposed Method (Adaptive)
Mapping Accuracy Lower Higher
Particle Utilization Inefficient Optimized
Computational Cost High Reduced

Visual Comparison

Baseline RBPF SLAM:
Baseline Map

Proposed Method:
Adaptive Sampling Map


How to Run

1. Install Dependencies

Follow ROS2 installation guidelines: ROS2 Docs.

# Install TurtleBot3 and Gazebo dependencies
sudo apt update
sudo apt install ros-foxy-turtlebot3 ros-foxy-gazebo-ros-pkgs

2. Clone the Repository

git clone https://github.com/your-repo/offline-rbpf-slam-adaptive.git
cd offline-rbpf-slam-adaptive

3. Build the Workspace

colcon build
source install/setup.bash

4. Run the Algorithm

For real TurtleBot3:

ros2 launch offline_rbpf_slam adaptive_slam_launch.py

For Gazebo Simulation:

ros2 launch offline_rbpf_slam adaptive_slam_gazebo.launch.py

Results

Our approach achieves:

  1. Improved Mapping Accuracy with reduced particle count.
  2. Reduced Computational Overhead via adaptive resampling.

Future Work

  1. Integration of GTSAM for nonlinear factor graph optimization.
  2. Testing on larger and more complex environments.

References

  1. Grisetti, G., Stachniss, C., \& Burgard, W. (2005). Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling.
  2. Montemerlo, M., Thrun, S. (2003). FastSLAM: A Factored Solution to the SLAM Problem.
  3. OpenSLAM.org: GMapping Package.