|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| raph_bringup |
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rplidar_driver at Robotics Stack Exchange
|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.2 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-05 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- frozenreboot
- cosmicog
- Błażej Sowa
Authors
🛡️ Robust RPLIDAR ROS 2 Driver
“Because the official driver shouldn’t crash just because you pulled the plug.”
A fault-tolerant ROS 2 driver for Slamtec RPLIDAR, built around a Lifecycle State Machine and a thread-safe architecture. Your robot keeps running even under hardware disconnection or permission failures.
⚡ Why Use This?
Most existing RPLIDAR drivers assume the hardware never misbehaves. This driver assumes the opposite. Compared to the reference implementation:
| Capability | Reference Driver | This Driver |
|---|---|---|
| Hot-plug recovery | Not handled | ✅ Auto-reconnect via lifecycle FSM |
| Permission failure reporting | Silent failure | ✅ Explicit diagnostics |
| Runtime reconfiguration | Restart required | ✅ Live RPM / scan-mode update |
| Component composition | Standalone only | ✅ rclcpp_components support |
| SDK coupling | Direct calls throughout | ✅ Interface-based abstraction layer |
🚀 Getting Started
Option A — Binary install (coming soon)
This package has been submitted to the ROS 2 build farm. Once it syncs, you will be able to install it directly:
sudo apt install ros-${ROS_DISTRO}-rplidar-driver
Supported distros: Humble, Jazzy, Lyrical, and Rolling.
Option B — Build from source
cd ~/ros2_ws/src
git clone https://github.com/frozenreboot/rplidar_driver.git
cd ..
# Install dependencies
sudo apt update
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build --symlink-install
Quick Launch
ros2 launch rplidar_driver rplidar.launch.py serial_port:=/dev/ttyUSB0
Dynamic Reconfigure (Runtime)
You can change the motor speed without killing the node:
ros2 param set /rplidar_node rpm 1000
ros2 param set /rplidar_node scan_mode DenseBoost
Standby (Motor Control)
Park the motor without leaving the ACTIVE state. The serial connection, the scan thread and the publishers all stay up, so waking costs only the motor spin-up time:
ros2 service call /stop_motor std_srvs/srv/Trigger
ros2 service call /start_motor std_srvs/srv/Trigger
Or let the driver follow demand. With auto_standby the motor stops while
nobody subscribes to scan (or to cloud, when publish_point_cloud is
enabled) and restarts as soon as somebody does:
ros2 param set /rplidar_node auto_standby true
While auto_standby is enabled the two services are rejected, so the
subscriber count stays the single source of truth.
Toggling the parameter hands the motor over, and the new owner decides from
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.2 (2026-10-05)
- fix: apply configured RPM on A-series startup (#45)
- feat: Add standby mode - LIDAR motor stops without subscribers (#42)
- Contributors: Filip Szkudlarek, Błażej Sowa, JWJ | frozenreboot
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_nodenamespace (#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_driverfollowing REP-144 naming guidelines (#29). - Added GTest-based test infrastructure, including mock driver tests and lifecycle/publication tests (#20).
- Clarified that the
angle_offsetparameter 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