Home

Awesome

Sick_Safetyscanners ROS Driver

A ROS Driver which reads the raw data from the SICK Safety Scanners and publishes the data as a laser_scan msg.

The ROS2 Driver can be found here: https://github.com/SICKAG/sick_safetyscanners2

Table of contents

Supported Hardware

Supported are all microScan3, nanoScan3 and outdoorScan3 variants with Ethernet connection.

Getting started

The ROS driver will be released as a debian package, and therefore can be installed from binaries or from source.

Prerequisites

Installation

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

From Binaries

The driver is released at longer intervals as a binary package.

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

From Source

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

Starting

To start the driver the launch file has to be started. For the driver to work correctly, the sensor ip and host ip have to be defined. These parameters can be passed to the sensor as arguments via launch file.

roslaunch sick_safetyscanners sick_safetyscanners.launch sensor_ip:=192.168.1.10 host_ip:=192.168.1.9

This will start the driver and the dynamic reconfigure node. In this you can set different parameters on runtime, especially the angles and the data the sensor should publish. If these parameters should be set on startup they can be loaded to the parameter server beforehand.

To visualize the data start rviz and subscribe to the ~/laser_scan topic.

rosrun rviz rviz 

Troubleshooting

ROS API

Advertised ROS Topics

~/laser_scan (type: sensor_msgs/LaserScan)

Publishes a scan from the laserscanner

~/extended_laser_scan (type: sick_safetyscanners/ExtendedLaserScanMsg)

Extends the basic laser scan message by reflector data and intrusion data.

~/output_paths (type: sick_safetyscanners/OutputPathMsg)

Gives feedback of the current status of the output paths.

~/raw_data (type: sick_safetyscanners/RawMicroScanDataMsg)

Publishes the raw data from the sensor as a ROS message.

~/diagnostics (type: diagnostic_msgs/DiagnosticArray)

Frequency and timestamp diagnostics information.

Advertised ROS Services

~/field_data

Returns all configured protective and warning fields for the sensor

~/config_metadata

Returns the meta data of the current configuration of the sensor

~/status_overview

Returns the status overview of the sensor

ROS parameters

All Parameters can be passed as commandline argument to the launch file.

Parameter NameTypeDefaultRequired on startupInformation
sensor_ipString192.168.1.11IP address of the sensor.
host_ipString192.168.1.9IP address of the receiving host/target computer.
interface_ipString0.0.0.0Interface IP address of the receiving host computer, this needs to be set if the host IP is in the multicast IP range. The default is an undefined IP address and will return an error when multicast is used without a correct interface
host_udp_portInteger0Host UDP Port. Zero allows system chosen port.
frame_idStringscanThe frame name of the sensor message
skipInteger0The number of scans to skip between each measured scan. For a 25Hz laser, setting 'skip' to 0 makes it publish at 25Hz, 'skip' to 1 makes it publish at 12.5Hz.
angle_startDouble0.0Start angle of scan in radians, if both start and end angle are equal, all angels are regarded. 0° is at the front of the scanner.
angle_endDouble0.0End angle of scan in radians, if both start and end angle are equal, all angels are regarded. 0° is at the front of the scanner.
min_intensitiesDouble0.0If this parameter is set, all points below the one set in the parameter are set to infinity
channelInteger0Which channel should be configured, default is channel 0.
channel_enabledBooleantrueIf the channel should be enabled
general_system_stateBooleantrueIf the general system state should be published
derived_settingsBooleantrueIf the derived settings should be published
measurement_dataBooleantrueIf the measurement data should be published
intrusion_dataBooleantrueIf the intrusion data should be published
application_io_dataBooleantrueIf the application IO data should be published
use_persistent_configBooleanfalseIf this flag is set, the configured angles from the sensor are loaded and used and the ROS parameters angle_start and angle_end are disregarded
expected_frequencyDouble24.0Expected scanner frequency for diagnostics
frequency_toleranceDouble0.1Diagnostics tolerance on expected frequency
timestamp_min_acceptableDouble-1Earliest acceptable timestamp delay for diagnostics
timestamp_max_acceptableDouble1Latest acceptable timestamp delay for diagnostics

Creators

Lennart Puck

FZI Forschungszentrum Informatik

on behalf of SICK AG