Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
jazzy

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
lyrical

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
rolling

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rplidar_driver repository

rplidar_driver

ROS Distro
humble

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

ROS 2 Humble ROS 2 Jazzy ROS 2 Lyrical ROS 2 Rolling C++17 License ROS 2 CI

“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