Home

Awesome

IMPORTANT: This repository will not be maintained further. The sources have been completely transferred to the repository https://github.com/SICKAG/sick_scan_xd. The repository will be deleted after 12/31/2022 in 2023 without further notice.

sick_scan

This stack provides a ROS driver for the SICK lidar and radar sensors mentioned in the following list. The SICK MRS6124 is a multi-layer, multi-echo 3D laser scanner that is geared towards rough outdoor environments.

Remark

During the last years we have developed different repositories within the driver development with the projects sick_scan, sick_scan2 and sick_scan_base, with which many lidars and radars of our company can be used under ROS1, ROS2 and generically under C++. For harmonization, due to customer requests and to increase clarity, we decided to combine these developments in the future. As a result of this work, at the end of 2021 we have created the repository sick_scan_xd, where we will continue future developments. We recommend using this new repository for development so that you can continue to benefit from our improvements and additions to our drivers.

Table of Contents

Supported Hardware

This driver should work with all of the following products.

ROS Device Driver for SICK lidar and radar sensors - supported scanner types:

device namepart no.descriptiontested?
MRS6124606508624 layer max. range: 200 m, ang. resol. 0.13 [deg] hor., 0.0625 [deg] ver.✔ [stable]
Scan-Rate: 10 Hz
MRS110410812084 layer max. range: 64 m, ang. resol. 0.25 [deg] hor., 2.50 [deg] ver.✔ [stable]
Scan-Rate: 50 Hz, 4x12.5 Hz
LMS110410924451 layer max. range: 64 m, ang. resol. 0.25 [deg]✔ [stable]
Scan-Rate: 150 Hz, 4x37.5 Hz
TiM24011049811 layer max. range: 10 m, ang. resol. 1.00 [deg], 240 [deg]✔ [prototype]
Scan-Rate: 14.5 Hz
TiM433prototype1 layer range: 0.05 m ... 15 m, ang. resol. 0.33 [deg], 240 [deg]✔ [prototype]
Scan-Rate: 15.0 Hz
TiM443prototype1 layer range: 0.05 m ... 15 m, ang. resol. 0.33 [deg], 240 [deg]✔ [prototype]
Scan-Rate: 15.0 Hz
TiM55110604451 layer max. range: 10 m, ang. resol. 1.00[deg]✔ [stable]
Scan-Rate: 15 Hz
TiM56110714191 layer max. range: 10 m, ang. resol. 0.33 [deg]✔ [stable]
Scan-Rate: 15 Hz
TiM57110797421 layer max. range: 25 m, ang. resol. 0.33 [deg]✔ [stable]
Scan-Rate: 15 Hz
TiM771S11050521 layer max. range: 25 m, ang. resol. 0.33 [deg]✔ [stable]
Scan-Rate: 15 Hz
TiM78110968071 layer max. range: 25 m, ang. resol. 0.33 [deg]✔ [stable]
Scan-Rate: 15 Hz
TiM781S10963631 layer max. range: 25 m, ang. resol. 0.33 [deg]✔ [stable]
Scan-Rate: 15 Hz
LMS511-10100 PROe.g. 10461351 layer max. range: 80 m, ang. resol. 0.167 [deg]✔ [stable]
Scan-Rate: 100 Hz
LMS1xx-Familye.g. 10411141 layer max. range: 28 m, ang. resol. 0.25 [deg]✔ [stable]
Scan-Rate: 15 Hz
NAV310e.g. 10529281 layer max. range: 250 m, ang. resol. 0.125 [deg]✔ [stable]
Scan-Rate: 8 Hz
NAV210+NAV245e.g. 10743081 layer max. range: 100 m, ang. resol. 0.25 [deg]✔ [stable]
Scan-Rate: 25 Hz
LMS4xxx-Familye.g. 10914231 layer max. range: 3 m, ang. resol. 0,0833 [deg]✔ [stable]
Scan-Rate: 600 Hz
Opening angle: +/- 50 [deg]
RMS3xx8021530Radar Sensor✔ [stable]

IMU Support

Devices of the MRS6xxx and MRS1xxx series are available with an optionally built-in IMU. Further information on the implementation and use of the experimental Imu support can be found on the Imu page.

Start Node

Use the following command to start ROS node:

roslaunch sick_scan sick_mrs_6xxx.launch
roslaunch sick_scan sick_mrs_1xxx.launch
roslaunch sick_scan sick_lms_1xxx.launch
roslaunch sick_scan sick_tim_240.launch
roslaunch sick_scan sick_tim_4xx.launch
roslaunch sick_scan sick_tim_5xx.launch
roslaunch sick_scan sick_tim_7xx.launch
roslaunch sick_scan sick_tim_7xxS.launch
roslaunch sick_scan sick_lms_1xx.launch
roslaunch sick_scan sick_lms_5xx.launch
roslaunch sick_scan sick_lms_4xxx.launch
roslaunch sick_scan sick_nav_2xx.launch
roslaunch sick_scan sick_nav_2xx.launch
roslaunch sick_scan sick_nav_3xx.launch
roslaunch sick_scan sick_rms_3xx.launch (under
opment)

Starting Scanner with Specific Ip Address

To start the scanner with a specific IP address, the launch command can be used for most launch files as follows. The hostname is the ip-address of the scanner:

roslaunch <launch-file> hostname:=<ip-address>

e.g.

roslaunch sick_scan sick_tim_5xx.launch hostname:=192.168.0.71

Start Multiple Nodes

Take the launchfile "sick_tim_5xx_twin.launch" as an example. Rempping the scan and cloud topics is essential to distinguish the scanndata and provide TF information.

Parameter

The use of the parameters can be looked up in the launch files. This is also recommended as a starting point.

Common parameters

Further useful parameters and features

Sopas Mode

This driver supports both COLA-B (binary) and COLA-A (ASCII) communication with the laser scanner. Binary mode is activated by default. Since this mode generates less network traffic. If the communication mode set in the scanner memory is different from that used by the driver, the scanner's communication mode is changed. This requires a restart of the TCP-IP connection, which can extend the start time by up to 30 seconds. There are two ways to prevent this:

  1. [Recommended] Set the communication mode with the SOPAS ET software to binary and save this setting in the scanner's EEPROM.
  2. Use the parameter "use_binary_protocol" to overwrite the default settings of the driver.
  3. Setting "use_binary_protocol" to "False" activates COLA-A and disables COLA-B (default)

Bugs and Feature Requests

Tools

Various tools exist in the repository to improve the operation of the scanners. It is also recommended to read the following section "Troubleshooting". Overview of the tools:

Troubleshooting

  1. Check Scanner IP in the launch file.
  2. Check Ethernet connection to scanner with netcat e.g. nc -z -v -w5 $SCANNERIPADDRESS 2112. For further details about setting up the correct ip settings see IP configuration
  3. View node startup output wether the IP connection could be established
  4. Check the scanner status using the LEDs on the device. The LED codes are described in the above mentioned operation manuals.
  5. Further testing and troubleshooting informations can found in the file test/readme_testplan.txt
  6. If you stop the scanner in your debugging IDE or by other hard interruption (like Ctrl-C), you must wait until 60 sec. before the scanner is up and running again. During this time the MRS6124 reconnects twice. If you do not wait this waiting time you could see one of the following messages:
    • TCP connection error
    • Error-Message 0x0d
  7. Amplitude values in rviz: If you see only one color in rviz try the following: Set the min/max-Range of intensity display in the range [0...200] and switch on the intensity flag in the launch file
  8. In case of network problems check your own ip address and the ip address of your laser scanner (by using SOPAS ET).
    • List of own IP-addresses: ifconfig|grep "inet addr"
    • Try to ping scanner ip address (used in launch file)
  9. If the driver stops during init phase please stop the driver with ctrl-c and restart (could be caused due to protocol ASCII/Binary cola-dialect).

FAQ

Support

  1. Scanner model name,
  2. Ros node startup log,
  3. Sopas file of your scanner configuration. The instructions at http://sickusablog.com/create-and-download-a-sopas-file/ show how to create the Sopas file.

Installation

In the following instructions, replace <rosdistro> with the name of your ROS distro (e.g., indigo).

From Binaries

The driver is released at longer intervals as a binary package and can therefore be installed via the package manager. To be able to use all new functions of the driver, the driver should be built from the sources published in this reposity:

sudo apt-get install ros-<rosdistro>-sick-scan

From Source

source /opt/ros/<rosdistro>/setup.bash
mkdir -p ~/ros_catkin_ws/src/
cd ~/ros_catkin_ws/src/
git clone git://github.com/SICKAG/sick_scan.git
cd ..
catkin_make install
source ~/ros_catkin_ws/install/setup.bash

Development branch

A "devel" branch is also maintained for the very latest developments and tests. Add-ons and support for brand new scanners are usually first tested in this branch and can be checked out as needed as follows:

source /opt/ros/<rosdistro>/setup.bash
mkdir -p ~/ros_catkin_ws/src/
cd ~/ros_catkin_ws/src/
git clone -b devel --single-branch git://github.com/SICKAG/sick_scan.git
cd ..
catkin_make install
source ~/ros_catkin_ws/install/setup.bash

Quick Start

roslaunch sick_scan sick_mrs6xxx.launch
rosrun rviz rviz
publish to point cloud

Testing

The sick_scan_test program was developed for testing the driver. This program checks elementary properties of the scanner. In a first implementation stage, the shots per scan are checked. The test program works according to the following principle:

  1. The parameters from an original launch file are read.
  2. These parameters are modified according to the instructions in the test control file.
  3. The modified parameters including all other parameter settings from the original launch file are copied to a test launch file.
  4. The test launch file is started.
  5. The parameters are checked.
  6. The result of the check is transferred to a result file. The basic procedure can be seen in the following figure: Alt text More information about the structure of the individual files in the test run can be found here:

Keywords

MRS1000 MRS1104 LMS1000 LMS1104 MRS6000 MRS6124 RMS3xx RMS320 ROS LiDAR SICK LiDAR SICK Laser SICK Laserscanner SICK Radar LMS1xx MRS1xxx LMS1xxx MRS6xxx TiM5xx TiM551 TiM561 TiM571 TiM781 TiM781S LMS5xx LMS511 NAV210 NAV245 NAV310

Creators

Michael Lehning

on behalf of SICK AG


<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Logo_SICK_AG_2009.svg/1200px-Logo_SICK_AG_2009.svg.png" width="420">

Lehning Logo