Repository Summary
Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
sick_scan_xd | 3.7.0 |
README
sick_scan_xd - Driver and tools for SICK LiDAR and RADAR devices
This project provides a driver for SICK LiDARs and Radar sensors mentioned here. The driver supports both Linux (native, ROS 1, ROS 2) and Windows (native and ROS 2). See the CHANGELOG.md for the latest updates.
Main features and characteristics:
- Support of ROS 1 (Linux), ROS 2 (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
* [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) * [Detecting SICK devices in the network](#detecting-sick-devices-in-the-network) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 1 on Linux](#ros-1-on-linux) * [ROS 1: Install prebuilt binaries](#ros-1-install-prebuilt-binaries) * [ROS 1: Build from sources](#ros-1-build-from-sources) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2: Install prebuilt binaries](#ros-2-install-prebuilt-binaries) * [ROS 2: Build from sources](#ros-2-build-from-sources) * [ROS 2 on Windows](#ros-2-on-windows) * [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) * [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) * [Message handling](#message-handling) * [Driver states and timeouts](#driver-states-and-timeouts) * [sick\_scansegment\_xd](#sick_scansegment_xd) * [Files and folders](#files-and-folders) * [Generic driver API](#generic-driver-api) * [Build and test shared library](#build-and-test-shared-library) * [Build the shared library on Linux](#build-the-shared-library-on-linux) * [Build the shared library on Windows](#build-the-shared-library-on-windows) * [Test the shared library](#test-the-shared-library) * [Usage examples](#usage-examples) * [Minimalistic usage example in C](#minimalistic-usage-example-in-c) * [Minimalistic usage example in C++](#minimalistic-usage-example-in-c-1) * [Minimalistic usage example in Python](#minimalistic-usage-example-in-python) * [Complete usage example in C++](#complete-usage-example-in-c) * [Complete usage example in Python](#complete-usage-example-in-python) * [Diagnostic](#diagnostic) * [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, MRS6000 and MRS1000)](#imu-support-lrs4000-mrs6000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Visualization with rviz](#visualization-with-rviz) * [Cola commands](#cola-commands) * [Emulation](#emulation) * [Unit tests](#unit-tests) * [Pcapng converter tool](#pcapng-converter-tool) * [Raspberry Pi support](#raspberry-pi-support) * [Performance limitations](#performance-limitations) * [Build without internet or GitHub access](#build-without-internet-or-github-access) * [Docker support](#docker-support) * [Build and run on Linux ROS 1 (short cut)](#build-and-run-on-linux-ros-1-short-cut) * [Build and run from local sources](#build-and-run-from-local-sources) * [Build and run from a git repository](#build-and-run-from-a-git-repository) * [Build and run from prebuilt binaries](#build-and-run-from-prebuilt-binaries) * [Hector SLAM support](#hector-slam-support) * [NAV350 ROS 1 SLAM example](#nav350-ros-1-slam-example) * [NAV350 ROS 2 SLAM example](#nav350-ros-2-slam-example) * [picoScan100 ROS 1 SLAM example](#picoscan100-ros-1-slam-example) * [MRS1000 SLAM support](#mrs1000-slam-support) * [Google cartographer support](#google-cartographer-support) * [OctoMap support](#octomap-support) * [RTAB-Map support](#rtab-map-support) * [Install RTAB-Map on ROS 1](#install-rtab-map-on-ros-1) * [Run RTAB-MAP and multiScan100 on ROS 1](#run-rtab-map-and-multiscan100-on-ros-1) * [Install RTAB-Map on ROS 2](#install-rtab-map-on-ros-2) * [Run RTAB-MAP and multiScan100 on ROS 2](#run-rtab-map-and-multiscan100-on-ros-2) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [Configuration](#configuration) * [SOPAS support for sick\_scan\_segment\_xd](#sopas-support-for-sick_scan_segment_xd) * [Start and stop sequence](#start-and-stop-sequence) * [IMU support](#imu-support) File truncated at 100 lines [see the full file](https://github.com/SICKAG/sick_scan_xd/tree/master)CONTRIBUTING
Executive Summary
This documentation is intended to provide background information on the maintenance and extension of the repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which scanner-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 scanner type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros noetic, humble, iron and jazzy with
bloom-release
on Linux:
cd /tmp
bloom-release --rosdistro noetic -d sick_scan_xd # update release repository https://github.com/SICKAG/sick_scan_xd-release.git, argument -d enables debug infos
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 iron -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
Confirm “push to release” and “open pull request” with Y.
File truncated at 100 lines see the full file

Repository Summary
Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
VCS Type | git |
VCS Version | develop |
Last Updated | 2025-05-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
sick_scan_xd | 3.7.0 |
README
sick_scan_xd - Driver and tools for SICK LiDAR and RADAR devices
This project provides a driver for SICK LiDARs and Radar sensors mentioned here. The driver supports both Linux (native, ROS 1, ROS 2) and Windows (native and ROS 2). See the CHANGELOG.md for the latest updates.
Main features and characteristics:
- Support of ROS 1 (Linux), ROS 2 (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
* [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) * [Detecting SICK devices in the network](#detecting-sick-devices-in-the-network) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 1 on Linux](#ros-1-on-linux) * [ROS 1: Install prebuilt binaries](#ros-1-install-prebuilt-binaries) * [ROS 1: Build from sources](#ros-1-build-from-sources) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2: Install prebuilt binaries](#ros-2-install-prebuilt-binaries) * [ROS 2: Build from sources](#ros-2-build-from-sources) * [ROS 2 on Windows](#ros-2-on-windows) * [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) * [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) * [Message handling](#message-handling) * [Driver states and timeouts](#driver-states-and-timeouts) * [sick\_scansegment\_xd](#sick_scansegment_xd) * [Files and folders](#files-and-folders) * [Generic driver API](#generic-driver-api) * [Build and test shared library](#build-and-test-shared-library) * [Build the shared library on Linux](#build-the-shared-library-on-linux) * [Build the shared library on Windows](#build-the-shared-library-on-windows) * [Test the shared library](#test-the-shared-library) * [Usage examples](#usage-examples) * [Minimalistic usage example in C](#minimalistic-usage-example-in-c) * [Minimalistic usage example in C++](#minimalistic-usage-example-in-c-1) * [Minimalistic usage example in Python](#minimalistic-usage-example-in-python) * [Complete usage example in C++](#complete-usage-example-in-c) * [Complete usage example in Python](#complete-usage-example-in-python) * [Diagnostic](#diagnostic) * [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, MRS6000 and MRS1000)](#imu-support-lrs4000-mrs6000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Visualization with rviz](#visualization-with-rviz) * [Cola commands](#cola-commands) * [Emulation](#emulation) * [Unit tests](#unit-tests) * [Pcapng converter tool](#pcapng-converter-tool) * [Raspberry Pi support](#raspberry-pi-support) * [Performance limitations](#performance-limitations) * [Build without internet or GitHub access](#build-without-internet-or-github-access) * [Docker support](#docker-support) * [Build and run on Linux ROS 1 (short cut)](#build-and-run-on-linux-ros-1-short-cut) * [Build and run from local sources](#build-and-run-from-local-sources) * [Build and run from a git repository](#build-and-run-from-a-git-repository) * [Build and run from prebuilt binaries](#build-and-run-from-prebuilt-binaries) * [Hector SLAM support](#hector-slam-support) * [NAV350 ROS 1 SLAM example](#nav350-ros-1-slam-example) * [NAV350 ROS 2 SLAM example](#nav350-ros-2-slam-example) * [picoScan100 ROS 1 SLAM example](#picoscan100-ros-1-slam-example) * [MRS1000 SLAM support](#mrs1000-slam-support) * [Google cartographer support](#google-cartographer-support) * [OctoMap support](#octomap-support) * [RTAB-Map support](#rtab-map-support) * [Install RTAB-Map on ROS 1](#install-rtab-map-on-ros-1) * [Run RTAB-MAP and multiScan100 on ROS 1](#run-rtab-map-and-multiscan100-on-ros-1) * [Install RTAB-Map on ROS 2](#install-rtab-map-on-ros-2) * [Run RTAB-MAP and multiScan100 on ROS 2](#run-rtab-map-and-multiscan100-on-ros-2) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [Configuration](#configuration) * [SOPAS support for sick\_scan\_segment\_xd](#sopas-support-for-sick_scan_segment_xd) * [Start and stop sequence](#start-and-stop-sequence) * [IMU support](#imu-support) File truncated at 100 lines [see the full file](https://github.com/SICKAG/sick_scan_xd/tree/develop)CONTRIBUTING
Executive Summary
This documentation is intended to provide background information on the maintenance and extension of the repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which scanner-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 scanner type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros noetic, humble, iron and jazzy with
bloom-release
on Linux:
cd /tmp
bloom-release --rosdistro noetic -d sick_scan_xd # update release repository https://github.com/SICKAG/sick_scan_xd-release.git, argument -d enables debug infos
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 iron -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
Confirm “push to release” and “open pull request” with Y.
File truncated at 100 lines see the full file

Repository Summary
Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
VCS Type | git |
VCS Version | develop |
Last Updated | 2025-05-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
sick_scan_xd | 3.7.0 |
README
sick_scan_xd - Driver and tools for SICK LiDAR and RADAR devices
This project provides a driver for SICK LiDARs and Radar sensors mentioned here. The driver supports both Linux (native, ROS 1, ROS 2) and Windows (native and ROS 2). See the CHANGELOG.md for the latest updates.
Main features and characteristics:
- Support of ROS 1 (Linux), ROS 2 (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
* [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) * [Detecting SICK devices in the network](#detecting-sick-devices-in-the-network) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 1 on Linux](#ros-1-on-linux) * [ROS 1: Install prebuilt binaries](#ros-1-install-prebuilt-binaries) * [ROS 1: Build from sources](#ros-1-build-from-sources) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2: Install prebuilt binaries](#ros-2-install-prebuilt-binaries) * [ROS 2: Build from sources](#ros-2-build-from-sources) * [ROS 2 on Windows](#ros-2-on-windows) * [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) * [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) * [Message handling](#message-handling) * [Driver states and timeouts](#driver-states-and-timeouts) * [sick\_scansegment\_xd](#sick_scansegment_xd) * [Files and folders](#files-and-folders) * [Generic driver API](#generic-driver-api) * [Build and test shared library](#build-and-test-shared-library) * [Build the shared library on Linux](#build-the-shared-library-on-linux) * [Build the shared library on Windows](#build-the-shared-library-on-windows) * [Test the shared library](#test-the-shared-library) * [Usage examples](#usage-examples) * [Minimalistic usage example in C](#minimalistic-usage-example-in-c) * [Minimalistic usage example in C++](#minimalistic-usage-example-in-c-1) * [Minimalistic usage example in Python](#minimalistic-usage-example-in-python) * [Complete usage example in C++](#complete-usage-example-in-c) * [Complete usage example in Python](#complete-usage-example-in-python) * [Diagnostic](#diagnostic) * [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, MRS6000 and MRS1000)](#imu-support-lrs4000-mrs6000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Visualization with rviz](#visualization-with-rviz) * [Cola commands](#cola-commands) * [Emulation](#emulation) * [Unit tests](#unit-tests) * [Pcapng converter tool](#pcapng-converter-tool) * [Raspberry Pi support](#raspberry-pi-support) * [Performance limitations](#performance-limitations) * [Build without internet or GitHub access](#build-without-internet-or-github-access) * [Docker support](#docker-support) * [Build and run on Linux ROS 1 (short cut)](#build-and-run-on-linux-ros-1-short-cut) * [Build and run from local sources](#build-and-run-from-local-sources) * [Build and run from a git repository](#build-and-run-from-a-git-repository) * [Build and run from prebuilt binaries](#build-and-run-from-prebuilt-binaries) * [Hector SLAM support](#hector-slam-support) * [NAV350 ROS 1 SLAM example](#nav350-ros-1-slam-example) * [NAV350 ROS 2 SLAM example](#nav350-ros-2-slam-example) * [picoScan100 ROS 1 SLAM example](#picoscan100-ros-1-slam-example) * [MRS1000 SLAM support](#mrs1000-slam-support) * [Google cartographer support](#google-cartographer-support) * [OctoMap support](#octomap-support) * [RTAB-Map support](#rtab-map-support) * [Install RTAB-Map on ROS 1](#install-rtab-map-on-ros-1) * [Run RTAB-MAP and multiScan100 on ROS 1](#run-rtab-map-and-multiscan100-on-ros-1) * [Install RTAB-Map on ROS 2](#install-rtab-map-on-ros-2) * [Run RTAB-MAP and multiScan100 on ROS 2](#run-rtab-map-and-multiscan100-on-ros-2) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [Configuration](#configuration) * [SOPAS support for sick\_scan\_segment\_xd](#sopas-support-for-sick_scan_segment_xd) * [Start and stop sequence](#start-and-stop-sequence) * [IMU support](#imu-support) File truncated at 100 lines [see the full file](https://github.com/SICKAG/sick_scan_xd/tree/develop)CONTRIBUTING
Executive Summary
This documentation is intended to provide background information on the maintenance and extension of the repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which scanner-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 scanner type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros noetic, humble, iron and jazzy with
bloom-release
on Linux:
cd /tmp
bloom-release --rosdistro noetic -d sick_scan_xd # update release repository https://github.com/SICKAG/sick_scan_xd-release.git, argument -d enables debug infos
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 iron -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
Confirm “push to release” and “open pull request” with Y.
File truncated at 100 lines see the full file

Repository Summary
Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
VCS Type | git |
VCS Version | develop |
Last Updated | 2025-05-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
sick_scan_xd | 3.7.0 |
README
sick_scan_xd - Driver and tools for SICK LiDAR and RADAR devices
This project provides a driver for SICK LiDARs and Radar sensors mentioned here. The driver supports both Linux (native, ROS 1, ROS 2) and Windows (native and ROS 2). See the CHANGELOG.md for the latest updates.
Main features and characteristics:
- Support of ROS 1 (Linux), ROS 2 (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
* [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) * [Detecting SICK devices in the network](#detecting-sick-devices-in-the-network) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 1 on Linux](#ros-1-on-linux) * [ROS 1: Install prebuilt binaries](#ros-1-install-prebuilt-binaries) * [ROS 1: Build from sources](#ros-1-build-from-sources) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2: Install prebuilt binaries](#ros-2-install-prebuilt-binaries) * [ROS 2: Build from sources](#ros-2-build-from-sources) * [ROS 2 on Windows](#ros-2-on-windows) * [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) * [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) * [Message handling](#message-handling) * [Driver states and timeouts](#driver-states-and-timeouts) * [sick\_scansegment\_xd](#sick_scansegment_xd) * [Files and folders](#files-and-folders) * [Generic driver API](#generic-driver-api) * [Build and test shared library](#build-and-test-shared-library) * [Build the shared library on Linux](#build-the-shared-library-on-linux) * [Build the shared library on Windows](#build-the-shared-library-on-windows) * [Test the shared library](#test-the-shared-library) * [Usage examples](#usage-examples) * [Minimalistic usage example in C](#minimalistic-usage-example-in-c) * [Minimalistic usage example in C++](#minimalistic-usage-example-in-c-1) * [Minimalistic usage example in Python](#minimalistic-usage-example-in-python) * [Complete usage example in C++](#complete-usage-example-in-c) * [Complete usage example in Python](#complete-usage-example-in-python) * [Diagnostic](#diagnostic) * [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, MRS6000 and MRS1000)](#imu-support-lrs4000-mrs6000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Visualization with rviz](#visualization-with-rviz) * [Cola commands](#cola-commands) * [Emulation](#emulation) * [Unit tests](#unit-tests) * [Pcapng converter tool](#pcapng-converter-tool) * [Raspberry Pi support](#raspberry-pi-support) * [Performance limitations](#performance-limitations) * [Build without internet or GitHub access](#build-without-internet-or-github-access) * [Docker support](#docker-support) * [Build and run on Linux ROS 1 (short cut)](#build-and-run-on-linux-ros-1-short-cut) * [Build and run from local sources](#build-and-run-from-local-sources) * [Build and run from a git repository](#build-and-run-from-a-git-repository) * [Build and run from prebuilt binaries](#build-and-run-from-prebuilt-binaries) * [Hector SLAM support](#hector-slam-support) * [NAV350 ROS 1 SLAM example](#nav350-ros-1-slam-example) * [NAV350 ROS 2 SLAM example](#nav350-ros-2-slam-example) * [picoScan100 ROS 1 SLAM example](#picoscan100-ros-1-slam-example) * [MRS1000 SLAM support](#mrs1000-slam-support) * [Google cartographer support](#google-cartographer-support) * [OctoMap support](#octomap-support) * [RTAB-Map support](#rtab-map-support) * [Install RTAB-Map on ROS 1](#install-rtab-map-on-ros-1) * [Run RTAB-MAP and multiScan100 on ROS 1](#run-rtab-map-and-multiscan100-on-ros-1) * [Install RTAB-Map on ROS 2](#install-rtab-map-on-ros-2) * [Run RTAB-MAP and multiScan100 on ROS 2](#run-rtab-map-and-multiscan100-on-ros-2) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [Configuration](#configuration) * [SOPAS support for sick\_scan\_segment\_xd](#sopas-support-for-sick_scan_segment_xd) * [Start and stop sequence](#start-and-stop-sequence) * [IMU support](#imu-support) File truncated at 100 lines [see the full file](https://github.com/SICKAG/sick_scan_xd/tree/develop)CONTRIBUTING
Executive Summary
This documentation is intended to provide background information on the maintenance and extension of the repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which scanner-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 scanner type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros noetic, humble, iron and jazzy with
bloom-release
on Linux:
cd /tmp
bloom-release --rosdistro noetic -d sick_scan_xd # update release repository https://github.com/SICKAG/sick_scan_xd-release.git, argument -d enables debug infos
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 iron -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
Confirm “push to release” and “open pull request” with Y.
File truncated at 100 lines see the full file

Repository Summary
Checkout URI | https://github.com/SICKAG/sick_scan_xd.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-28 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
sick_scan_xd | 3.7.0 |
README
sick_scan_xd - Driver and tools for SICK LiDAR and RADAR devices
This project provides a driver for SICK LiDARs and Radar sensors mentioned here. The driver supports both Linux (native, ROS 1, ROS 2) and Windows (native and ROS 2). See the CHANGELOG.md for the latest updates.
Main features and characteristics:
- Support of ROS 1 (Linux), ROS 2 (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
* [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) * [Detecting SICK devices in the network](#detecting-sick-devices-in-the-network) * [Change IP address](#change-ip-address) * [Test connection (Linux)](#test-connection-linux) * [Building the driver](#building-the-driver) * [ROS 1 on Linux](#ros-1-on-linux) * [ROS 1: Install prebuilt binaries](#ros-1-install-prebuilt-binaries) * [ROS 1: Build from sources](#ros-1-build-from-sources) * [ROS 2 on Linux](#ros-2-on-linux) * [ROS 2: Install prebuilt binaries](#ros-2-install-prebuilt-binaries) * [ROS 2: Build from sources](#ros-2-build-from-sources) * [ROS 2 on Windows](#ros-2-on-windows) * [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) * [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) * [Message handling](#message-handling) * [Driver states and timeouts](#driver-states-and-timeouts) * [sick\_scansegment\_xd](#sick_scansegment_xd) * [Files and folders](#files-and-folders) * [Generic driver API](#generic-driver-api) * [Build and test shared library](#build-and-test-shared-library) * [Build the shared library on Linux](#build-the-shared-library-on-linux) * [Build the shared library on Windows](#build-the-shared-library-on-windows) * [Test the shared library](#test-the-shared-library) * [Usage examples](#usage-examples) * [Minimalistic usage example in C](#minimalistic-usage-example-in-c) * [Minimalistic usage example in C++](#minimalistic-usage-example-in-c-1) * [Minimalistic usage example in Python](#minimalistic-usage-example-in-python) * [Complete usage example in C++](#complete-usage-example-in-c) * [Complete usage example in Python](#complete-usage-example-in-python) * [Diagnostic](#diagnostic) * [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, MRS6000 and MRS1000)](#imu-support-lrs4000-mrs6000-and-mrs1000) * [Encoder support](#encoder-support) * [Field evaluation information](#field-evaluation-information) * [Visualization with rviz](#visualization-with-rviz) * [Cola commands](#cola-commands) * [Emulation](#emulation) * [Unit tests](#unit-tests) * [Pcapng converter tool](#pcapng-converter-tool) * [Raspberry Pi support](#raspberry-pi-support) * [Performance limitations](#performance-limitations) * [Build without internet or GitHub access](#build-without-internet-or-github-access) * [Docker support](#docker-support) * [Build and run on Linux ROS 1 (short cut)](#build-and-run-on-linux-ros-1-short-cut) * [Build and run from local sources](#build-and-run-from-local-sources) * [Build and run from a git repository](#build-and-run-from-a-git-repository) * [Build and run from prebuilt binaries](#build-and-run-from-prebuilt-binaries) * [Hector SLAM support](#hector-slam-support) * [NAV350 ROS 1 SLAM example](#nav350-ros-1-slam-example) * [NAV350 ROS 2 SLAM example](#nav350-ros-2-slam-example) * [picoScan100 ROS 1 SLAM example](#picoscan100-ros-1-slam-example) * [MRS1000 SLAM support](#mrs1000-slam-support) * [Google cartographer support](#google-cartographer-support) * [OctoMap support](#octomap-support) * [RTAB-Map support](#rtab-map-support) * [Install RTAB-Map on ROS 1](#install-rtab-map-on-ros-1) * [Run RTAB-MAP and multiScan100 on ROS 1](#run-rtab-map-and-multiscan100-on-ros-1) * [Install RTAB-Map on ROS 2](#install-rtab-map-on-ros-2) * [Run RTAB-MAP and multiScan100 on ROS 2](#run-rtab-map-and-multiscan100-on-ros-2) * [More tools](#more-tools) * [Device specific information](#device-specific-information) * [picoScan100/multiScan100](#picoscan100multiscan100) * [Configuration](#configuration) * [SOPAS support for sick\_scan\_segment\_xd](#sopas-support-for-sick_scan_segment_xd) * [Start and stop sequence](#start-and-stop-sequence) * [IMU support](#imu-support) File truncated at 100 lines [see the full file](https://github.com/SICKAG/sick_scan_xd/tree/master)CONTRIBUTING
Executive Summary
This documentation is intended to provide background information on the maintenance and extension of the repository.
Table of Contents
- Adding a new device to the driver
- Bloom releases
- Unit tests
- Docker testing
- Simulation
- Profiling
Adding a new device to the driver
This driver is designed to support several sensor families from SICK. This documentation describes how to add additional devices to the driver.
Naming convention
For each device type a name pattern is assigned as follows:
sick_<device family>_<identifier>
The name type is used in the code to decide which scanner-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 scanner type. To create a new device, it is recommended to copy, rename and edit an existing launch file.
Code modification
- Hint: Construction of parser:
sick_scan_xd::SickGenericParser *parser = new sick_scan_xd::SickGenericParser(scannerName);
-
Add string constant like the constant SICK_SCANNER_RMS_XXXX_NAME
-
Append this constant to allowedScannerNames like allowedScannerNames.push_back(SICK_SCANNER_RMS_XXXX_NAME); in the file sick_generic_parser.cpp
-
Add new parameter block like
if (basicParams[i].getScannerName().compare(SICK_SCANNER_MRS_1XXX_NAME) == 0)
{...
} in the file sick_generic_parser.cpp
- Copy the file sick_generic_radar.cpp and add a new class following the structure of this file.
Bloom releases
Summary of bloom release build:
- Update release repositories for rosdistros noetic, humble, iron and jazzy with
bloom-release
on Linux:
cd /tmp
bloom-release --rosdistro noetic -d sick_scan_xd # update release repository https://github.com/SICKAG/sick_scan_xd-release.git, argument -d enables debug infos
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 iron -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
Confirm “push to release” and “open pull request” with Y.
File truncated at 100 lines see the full file
