Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file
Repository Summary
| Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| sick_scan_xd | 3.10.0 |
README
This project provides a driver for SICK LiDARs and Radar sensors listed in the supported SICK devices section. The driver supports ROS 2 for both Linux and Windows.
Main features and characteristics:
- Support of ROS 2 for Linux and Windows
- Generic C/C++ and Python API for usage without ROS (Linux and Windows)
- SLAM support
- Compatible with x64 and ARM64 architecture (incl. Raspberry Pi)
- No dependencies to 3rd party libraries like boost
Table of contents
Expand to full table of contents
* [Table of contents](#table-of-contents) * [Repository organization](#repository-organization) * [Supported SICK devices](#supported-sick-devices) * [Getting started](#getting-started) * [Starting with a new SICK device](#starting-with-a-new-sick-device) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2 on Windows (Jazzy, Kilted \& Lyrical)](#ros-2-on-windows-jazzy-kilted--lyrical) * [Without ROS on Linux](#without-ros-on-linux) * [Without ROS on Windows](#without-ros-on-windows) * [Running the driver](#running-the-driver) * [Starting device with specific IP address](#starting-device-with-specific-ip-address) * [Start multiple devices / nodes](#start-multiple-devices--nodes) * [ROS 2 Lifecycle Node Support](#ros-2-lifecycle-node-support) * [Overview](#overview) * [Quick Start](#quick-start) * [Understanding Lifecycle States](#understanding-lifecycle-states) * [Enabling Lifecycle Mode](#enabling-lifecycle-mode) * [State Transitions](#state-transitions) * [Supported Devices](#supported-devices) * [Command Reference](#command-reference) * [Additional Resources](#additional-resources) * [Parameters](#parameters) * [ROS services](#ros-services) * [ROS 2 example for messages and services](#ros-2-example-for-messages-and-services) * [SOPAS mode](#sopas-mode) * [Example startup sequence](#example-startup-sequence) * [Driver features and additional information](#driver-features-and-additional-information) * [Software overview and structure](#software-overview-and-structure) * [Generic driver API](#generic-driver-api) * [Simulation and unit test](#simulation-and-unit-test) * [Timestamps and synchronization (Software PLL)](#timestamps-and-synchronization-software-pll) * [Coordinate transforms](#coordinate-transforms) * [IMU support (LRS4000 and MRS1000)](#imu-support-lrs4000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Raspberry Pi support](#raspberry-pi-support) * [Docker support](#docker-support) * [SLAM support](#slam-support) * [RTAB-Map support](#rtab-map-support) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [LMS1000 / MRS1000](#lms1000--mrs1000) * [RMS1000](#rms1000) * [Combination of devices](#combination-of-devices) * [FAQ](#faq) * [Troubleshooting and technical support](#troubleshooting-and-technical-support) * [Creators and contribution](#creators-and-contribution) * [License](#license)Repository organization
The repository supports two main branches. The “master” branch is the branch that contains official releases that are tagged and versioned and also included in the ROS distribution. If you want to work with this official branch, you must explicitly specify this branch in the ‘git clone’ command by adding “-b master”. The “develop” branch is the default branch and contains the latest development status.
Checking out the latest revision (usually older than the develop version, but officially released):
git clone -b master https://github.com/SICKAG/sick_scan_xd.git
Checking out the latest development status:
File truncated at 100 lines see the full file
CONTRIBUTING
sick_scan_xd Maintenance and Development Documentation
Executive Summary
This documentation provides background information on maintaining, testing, and extending the sick_scan_xd repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which lidar-specific parameters are set. The name type is passed as a parameter as follows:
<param name="scanner_type" type="string" value="sick_lms_5xx" />
Launch files
A launch file is created for each device type, which usually has the same naming convention as the lidar type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros humble, jazzy, kilted and lyrical with
bloom-releaseon Linux:
cd /tmp
bloom-release --rosdistro humble -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro jazzy -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro kilted -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
bloom-release --rosdistro lyrical -d sick_scan_xd # update release repository https://github.com/ros2-gbp/sick_scan_xd-release.git, argument -d enables debug infos
File truncated at 100 lines see the full file