Package symbol

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

Package symbol

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
jazzy

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

Package symbol

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
lyrical

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

Package symbol

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
rolling

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange

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

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.2
License BSD-2-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

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 (-)

Package Description

A modern, lifecycle-managed ROS2 driver for Slamtec RPLidar. Features multithreaded scanning, non-blocking I/O, and C++17 architecture.

Maintainers

  • frozenreboot
  • cosmicog
  • Błażej Sowa

Authors

No additional authors.

🛡️ 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

CHANGELOG

Changelog for package rplidar_driver

1.4.2 (2026-10-05)

  • fix: apply configured RPM on A-series startup (#45)
  • feat: Add standby mode - LIDAR motor stops without subscribers (#42)
  • Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot

1.4.1 (2026-07-18)

  • Fixed the Rolling build by passing the node by reference to tf2_ros::StaticTransformBroadcaster (NodeInterfaces API migration).
  • Contributors: JWJ | frozenreboot

1.4.0 (2026-07-17)

  • Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
  • Refactored the node entry point to use the rclcpp_components template macro and moved the node into the rplidar_node namespace (#36).
  • Cleaned up package dependencies and linter configuration, fixing test dependency failures on the ROS build farm (#35).
  • Fixed Rolling build compatibility (#33).
  • Added a license audit documenting the vendored Slamtec SDK provenance for the first rosdistro release (#32).
  • Converted the changelog to REP-132 format for catkin release tools (#31).
  • Renamed the package to rplidar_driver following REP-144 naming guidelines (#29).
  • Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
  • Clarified that the angle_offset parameter is specified in radians and removed the corresponding launch argument in favor of YAML parameters (#23).
  • Fixed QoS parameter inconsistency by initializing the QoS parameter and applying the configured policy (#15).
  • Added governance documentation and an AI disclosure section for OSRF compliance; added Błażej Sowa as a maintainer (#34).
  • Contributors: Błażej Sowa, JWJ | frozenreboot, cosmicog, wj

v1.3.0 (2026-01-18)

  • Added scan interpolation via the [interpolated_rays]{.title-ref} parameter to generate high-density, mathematical line-segment-based measurements.
  • Added [publish_point_cloud]{.title-ref} and [intensities_as_angles]{.title-ref} parameters for debugging and analysis.
  • Added configurable ROS 2 QoS profiles via the [qos_policy]{.title-ref} parameter.
  • Deprecated [scan_processing]{.title-ref} in favor of the explicit [interpolated_rays]{.title-ref} parameter.
  • Removed the [inverted]{.title-ref} parameter. Use TF or [angle_offset]{.title-ref} instead.
  • Set the default [scan_mode]{.title-ref} to [Standard]{.title-ref} to prevent ghost points on S-series devices.
  • Fixed segmentation faults in [dummy_mode]{.title-ref} caused by unsafe dynamic casting.
  • Fixed an index out-of-bounds crash in the interpolation loop.
  • Fixed [LifecycleNode]{.title-ref} activation issues where publishers remained silent after state transition.
  • Fixed a [TypeError]{.title-ref} in the composition launch file.
  • Contributors: cosmicog, frozenreboot

v1.2.0 (2026-01-09)

  • Updated copyright years to 2026.
  • Fixed scan data mirroring issue where left and right were inverted.
  • Fixed launch arguments overriding parameter file settings.
  • Contributors: frozenreboot

v1.1.0 (2026-01-06)

  • Refactored [RPlidarNode]{.title-ref} into a [rclcpp_component]{.title-ref} to enable component composition and improve IPC performance.
  • Added diagnostics for frequency and connection status via [diagnostic_updater]{.title-ref}.
  • Updated scan data output to use [Inf]{.title-ref} for out-of-range measurements according to REP-117.
  • Contributors: frozenreboot

v1.0.1 (2026-01-03)

  • Fixed diagnostic messages when the driver is in a disconnected state.
  • Contributors: frozenreboot

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged rplidar_driver at Robotics Stack Exchange