|
rplidar_driver package from rplidar_driver reporplidar_driver |
ROS Distro
|
Package Summary
| Version | 1.4.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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.1 |
| License | BSD-2-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frozenreboot/rplidar_driver.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-07-18 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
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
🧪 Call for Experiments: “Does it survive?”
We need your help to validate this driver on various robots! If you use this driver, please stress-test it (e.g., unplug USB while scanning, change RPM dynamically) and share your results.
📢 How to Submit a Report
Please open an issue with the title [Experiment] Your_Robot_Name and include:
- Lidar Model: (e.g., A1, A2, S1…)
- Recovery Log: (Copy paste the terminal output when you unplug/replug)
-
Screenshot:
rqt_graphorrviz2
👉 Submit your Experiment Report Here
🏗️ Architecture
This driver uses a 3-Layer Design to decouple ROS 2 logic from the vendor SDK.
- Node Layer: Handles Lifecycle & Parameters.
File truncated at 100 lines see the full file
Changelog for package rplidar_driver
1.4.1 (2026-07-18)
- Fixed the Rolling build by passing the node by reference to
tf2_ros::StaticTransformBroadcaster(NodeInterfaces API migration). - Contributors: JWJ | frozenreboot
1.4.0 (2026-07-17)
- Raised the minimum required CMake version to 3.16 and verified builds on ROS 2 Jazzy and Lyrical (#38).
- Refactored the node entry point to use the rclcpp_components
template macro and moved the node into the
rplidar_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