Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
jazzy

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/develop/CONTRIBUTING.md)
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
kilted

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/develop/CONTRIBUTING.md)
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
lyrical

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/develop/CONTRIBUTING.md)
No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
iron

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/develop/CONTRIBUTING.md)
No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
humble

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)
Repo symbol

sick_scan_xd repository

sick_scan_xd

ROS Distro
noetic

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

SICK Logo # sick_scan_xd ROS 2 Driver and tools for SICK LiDAR and RADAR devices ![Release](https://img.shields.io/github/v/release/SICKAG/sick_scan_xd?color=005aff&label=Release) ![OS](https://img.shields.io/badge/OS-Linux_|_Windows-005aff) ![CPU](https://img.shields.io/badge/CPU-x86__64_|_ARM64-005aff) ![Language](https://img.shields.io/badge/Language-C++_/_Python-005aff) [![License](https://img.shields.io/badge/License-Apache_2.0-005aff)](LICENSE) [Getting started](#getting-started) · [CHANGELOG](CHANGELOG.rst)

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

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

  1. Hint: Construction of parser:
    sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
    
  1. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME

  2. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp

  3. Add new parameter block like

	if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
	{...
	} in the file sick_generic_parser.cpp
	
  1. 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-release on 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

# 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](#adding-a-new-device-to-the-driver) - [Naming convention](#naming-convention) - [Launch files](#launch-files) - [Code modification](#code-modification) - [Bloom releases](#bloom-releases) - [First time installation of toolchain](#first-time-installation-of-toolchain) - [Release build for ROS 1](#release-build-for-ros-1) - [Release build for ROS 2](#release-build-for-ros-2) - [Check status](#check-status) - [Verify ROS 2 Binary Release Status](#verify-ros-2-binary-release-status) - [Useful links and information](#useful-links-and-information) - [Unit tests](#unit-tests) - [Docker testing](#docker-testing) - [Docker on Linux](#docker-on-linux) - [Build and run all sick\_scan\_xd docker tests on Linux](#build-and-run-all-sick_scan_xd-docker-tests-on-linux) - [Build and run sick\_scan\_xd for ROS 1 noetic](#build-and-run-sick_scan_xd-for-ros-1-noetic) - [Build and run with sick\_scan\_xd from local sources](#build-and-run-with-sick_scan_xd-from-local-sources) - [Build and run with sick\_scan\_xd sources from a git repository](#build-and-run-with-sick_scan_xd-sources-from-a-git-repository) - [Build and run with prebuilt sick\_scan\_xd binaries](#build-and-run-with-prebuilt-sick_scan_xd-binaries) - [Docker on Windows](#docker-on-windows) - [Build and run sick\_scan\_xd dockertests on Windows](#build-and-run-sick_scan_xd-dockertests-on-windows) - [Docker configuration](#docker-configuration) - [Test configuration](#test-configuration) - [Configuration of error test cases](#configuration-of-error-test-cases) - [Data export from docker container](#data-export-from-docker-container) - [Test reports](#test-reports) - [Data preparation](#data-preparation) - [Simulation](#simulation) - [Simulation on Linux](#simulation-on-linux) - [Simulation on Windows](#simulation-on-windows) - [Profiling](#profiling) - [Installation](#installation) - [Usage](#usage) # 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__ `` 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: ```xml ``` ## 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 1. Hint: Construction of parser: ``` sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName); ``` 2. Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME 3. Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp 4. Add new parameter block like ``` if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0) {... } in the file sick_generic_parser.cpp ``` 5. 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-release` on 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](https://github.com/SICKAG/sick_scan_xd/tree/master/CONTRIBUTING.md)