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.
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.
This driver should work with all of the following products.
ROS Device Driver for SICK lidar and radar sensors - supported scanner types:
device name | part no. | description | tested? |
---|---|---|---|
MRS6124 | 6065086 | 24 layer max. range: 200 m, ang. resol. 0.13 [deg] hor., 0.0625 [deg] ver. | ✔ [stable] |
Scan-Rate: 10 Hz | |||
MRS1104 | 1081208 | 4 layer max. range: 64 m, ang. resol. 0.25 [deg] hor., 2.50 [deg] ver. | ✔ [stable] |
Scan-Rate: 50 Hz, 4x12.5 Hz | |||
LMS1104 | 1092445 | 1 layer max. range: 64 m, ang. resol. 0.25 [deg] | ✔ [stable] |
Scan-Rate: 150 Hz, 4x37.5 Hz | |||
TiM240 | 1104981 | 1 layer max. range: 10 m, ang. resol. 1.00 [deg], 240 [deg] | ✔ [prototype] |
Scan-Rate: 14.5 Hz | |||
TiM433 | prototype | 1 layer range: 0.05 m ... 15 m, ang. resol. 0.33 [deg], 240 [deg] | ✔ [prototype] |
Scan-Rate: 15.0 Hz | |||
TiM443 | prototype | 1 layer range: 0.05 m ... 15 m, ang. resol. 0.33 [deg], 240 [deg] | ✔ [prototype] |
Scan-Rate: 15.0 Hz | |||
TiM551 | 1060445 | 1 layer max. range: 10 m, ang. resol. 1.00[deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
TiM561 | 1071419 | 1 layer max. range: 10 m, ang. resol. 0.33 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
TiM571 | 1079742 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
TiM771S | 1105052 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
TiM781 | 1096807 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
TiM781S | 1096363 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
LMS511-10100 PRO | e.g. 1046135 | 1 layer max. range: 80 m, ang. resol. 0.167 [deg] | ✔ [stable] |
Scan-Rate: 100 Hz | |||
LMS1xx-Family | e.g. 1041114 | 1 layer max. range: 28 m, ang. resol. 0.25 [deg] | ✔ [stable] |
Scan-Rate: 15 Hz | |||
NAV310 | e.g. 1052928 | 1 layer max. range: 250 m, ang. resol. 0.125 [deg] | ✔ [stable] |
Scan-Rate: 8 Hz | |||
NAV210+NAV245 | e.g. 1074308 | 1 layer max. range: 100 m, ang. resol. 0.25 [deg] | ✔ [stable] |
Scan-Rate: 25 Hz | |||
LMS4xxx-Family | e.g. 1091423 | 1 layer max. range: 3 m, ang. resol. 0,0833 [deg] | ✔ [stable] |
Scan-Rate: 600 Hz | |||
Opening angle: +/- 50 [deg] | |||
RMS3xx | 8021530 | Radar Sensor | ✔ [stable] |
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.
Use the following command to start ROS node:
For MRS6124:
roslaunch sick_scan sick_mrs_6xxx.launch
For MRS1104:
roslaunch sick_scan sick_mrs_1xxx.launch
For LMS1104:
roslaunch sick_scan sick_lms_1xxx.launch
For TiM240-prototype:
roslaunch sick_scan sick_tim_240.launch
For TiM4xx-family:
roslaunch sick_scan sick_tim_4xx.launch
For TiM5xx-family:
roslaunch sick_scan sick_tim_5xx.launch
For TiM7xx-family (no safety scanner):
roslaunch sick_scan sick_tim_7xx.launch
For TiM7xxS-family (safety scanner):
roslaunch sick_scan sick_tim_7xxS.launch
For LMS1xx-family:
roslaunch sick_scan sick_lms_1xx.launch
For LMS5xx-family:
roslaunch sick_scan sick_lms_5xx.launch
For LMS4xxx-family:
roslaunch sick_scan sick_lms_4xxx.launch
For NAV210:
roslaunch sick_scan sick_nav_2xx.launch
For NAV245:
roslaunch sick_scan sick_nav_2xx.launch
For NAV310:
roslaunch sick_scan sick_nav_3xx.launch
For RMS3xx-family:
roslaunch sick_scan sick_rms_3xx.launch (under
opment)
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
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.
The use of the parameters can be looked up in the launch files. This is also recommended as a starting point.
scanner_type
Name of the used scanner. Usually this is also the name of the launch file. This entry is used to differentiate
between the various scanner properties within the software code.
hostname
IP-address of the scanner (default: 192.168.0.1)
port
IP-port of the scanner (default: 2112)
min_ang
Start angle in [rad]
max_ang
End angle in [rad]
use_binary_protocol
Switch between SOPAS Binary and SOPAS ASCII protocol
intensity
Enable or disable transport of intensity values
intensity_resolution_16bit
If true, the intensity values is transferred as 16 bit value. If false, as 8 bit value.
min_intensity
If min_intensity > 0, all range values in a LaserScan message are set to infinity, if their intensity value is below min_intensity
cloud_topic
Topic name of the published pointcloud2 data
frame_id
Frame id used for the published data
timelimit
Timelimit in [sec] for max. wait time of incoming sensor reply
sw_pll_only_publish
If true, the internal Software PLL is fored to sync the scan generation time stamp to a system timestamp
Angle compensation: For highest angle accuracy the NAV-Lidar series supports an angle compensation mechanism.
Field monitoring: The LMS1xx, LMS5xx, TiM7xx and TiM7xxS families have extended settings for field monitoring.
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:
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:
python3 sick_generic_device_finder.py
nc -z -v -w5 $SCANNERIPADDRESS 2112
.
For further details about setting up the correct ip settings see IP configurationIn the following instructions, replace <rosdistro>
with the name of your ROS distro (e.g., indigo
).
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
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
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
roslaunch sick_scan sick_mrs6xxx.launch
rosrun rviz rviz
publish to point cloud
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:
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
Michael Lehning
on behalf of SICK AG