Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
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-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rplidar_driver | 1.4.2 |
README
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
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
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
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
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file