Package symbol

rplidar_driver package from rplidar_driver repo

rplidar_driver

ROS Distro
humble

Package Summary

Version 1.4.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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.1
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-07-18
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


🧪 Call for Experiments: “Does it survive?”

We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.

📢 How to Submit a Report

Please open an issue with the title [Experiment] Your_Robot_Name and include:

  1. Lidar Model: (e.g., A1, A2, S1…)
  2. Recovery Log: (Copy paste the terminal output when you unplug/replug)
  3. Screenshot: rqt_graph or rviz2

👉 Submit your Experiment Report Here


🏗️ Architecture

This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.

  • Node Layer: Handles Lifecycle & Parameters.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package rplidar_driver

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