Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-06-23 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.3.1 |
README
π‘οΈ Robust RPLIDAR ROS 2 Driver (Industrial-Grade)
[!CAUTION] BETA VERSION Please use with caution in production environments. Issues and PRs are highly welcome!
βBecause the official driver shouldnβt crash just because you pulled the plug.β
This is a heavily refactored, fault-tolerant ROS 2 driver for Slamtec RPLIDAR. Designed with a Lifecycle State Machine and Thread-Safe Architecture, ensuring your robot keeps running even under hardware disconnection or permission failures.
β‘ Why Use This? (Table of Shame)
| Feature | Official Slamtec ROS 2 | This Driver (frozenreboot) |
|---|---|---|
| Hot-plug Recovery | β Crash / Hang | β Auto-reconnect via FSM |
| Permission Denied | β Silent Fail / Garbage Data | β Explicit Diagnostics |
| Dynamic Reconfigure | β Restart Required | β Runtime RPM/Mode Update |
| Zero-Copy Optimization | β N/A | β Smart Pointer & Move Semantics |
| Architecture | β Tight SDK Coupling | β Interface-based Abstraction |
π§ͺ Call for Experiments: βDoes it survive?β
I need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
π’ How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1β¦)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
π Submit your Experiment Report Here
π Getting Started
1. Installation
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
2. Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
3. Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
ποΈ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
-
Node Layer: Handles Lifecycle & Parameters.
-
Wrapper Layer: Handles Threading & Mutex.
-
SDK Layer: Raw data fetching.

π€ Author & Maintainer
- frozenreboot - Initial Refactoring & Architecture Design
File truncated at 100 lines see the full file