The Leica Scanstation C5 is a scalable large range laser scanner. This package is a ROS wrapper for controlling the scanstation directly from a computer. To achieve this, a collection of rosservices are provided and information received is published as rostopics.

  • scanstationC5.jpg

Getting started

Scan with Leica Scanstation C5

The Leica Scanstation C5 is a scalable and flexible laser scanner, which means that user can set some parameters to better fit the scanning area. Using this ROS wrapper, the user can specify the following parameters:

  • Pan center and tilt center. Middle point of the scan process.

  • Width and height are the size of the scan window.

  • Vertical resolution and horizontal resolution. Can be understood as the number of rays to cover the scan window. A higher resolution means a more detailed cloud but a slower process.

  • scanparams.png

About Software development

Due to Leica's libraries dependencies, the source code relative to SDK have been developed under Windows 10. For that reason, leica_scanstation_ros will only compile on Windows OS. However, once the program is released, it can be executed in either Windows or Linux (with tools such us Wine).

For development purposes, please refer to leica_scanstation_ros documentation.

Package List

  • Source: git https://github.com/fada-catec/leica_scanstation (branch: master)

  • leica_scanstation_ros. Based on Leica SDK, this package contains functions to communicate with the device using a computer. Note that this package is meant to be compiled and executed in Windows. It includes a ROS node with the following options:

    • operating the device through ROS services.
    • to read and understand the information sent by the scanstation which is published in a ROS topic.
    • to view the video captured by the device which is published as images in another ROS Topic.
  • leica_scanstation_msgs. This package defines the messages and services that allow for interpretation of the scanner information. It is OS independent.

  • leica_scanstation_utils. This package contains common functions that assist in the program's execution independently of the OS used. Its main purpose is to define the paths for generating and collecting the point clouds.


In ROS Windows

1. Setup your workspace.

2. Execute program

  •  roslaunch leica_scanstation_ros start.launch

3. Use ROS services to control, move and start scanning on the Scanstation. E.g: Try to move your pan and tilt

  •  rosservice call /leica/move 3.141 0.785

In Ubuntu (using wine)

1. Create a workspace and clone this repo

  •  mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
     git clone https://github.com/fada-catec/leica_scanstation

2. Compile (be careful: package leica_scanstation_ros is meant to be compiled on Windows)

  •  cd ~/catkin_ws
     catkin_make -DCATKIN_BLACKLIST_PACKAGES="leica_scanstation_ros"

3. To be able to execute the program with wine, you need to export it first. Read how to export program to get more information.

  •  roscore
     cd ~/catkin_ws/src/leica_scanstation/leica_scanstation_ros/export
     wineconsole leica_scanstation_ros_node.exe

4. Use ROS services to control, move and start scanning on the Scanstation. E.g: Try to move your pan and tilt

  •  rosservice call /leica/move 3.141 0.785



eventer_info (leica_scanstation_msgs/EventerInfo)

  • Show information received from scanstation such as: process finished, progress state, error...
image (sensor_msgs/Image)
  • Video image from scanstation


~connect (std_srvs/Trigger)

  • Open connection with scanner
~disconnect (std_srvs/Trigger)
  • Close connection with scanner
~move (leica_scanstation_msgs/MotorPose)
  • Move scanstation to specified position: pan and tilt angles in radians
~tilt (std_srvs/SetBool)
  • Enable tilt
~scan_info (leica_scanstation_msgs/PointCloudFile)
  • Read scan info from specified file, such us scan size, resolution...
~scan (leica_scanstation_msgs/Scan)
  • Start scan request. Parameters: file_name to save it with; vertical_res and horizontal_res are the resolution of the pointcloud; pan_center and tilt_center are the middle point of the scan process and it's size is defined by width and height.
~cancel (std_srvs/Trigger)
  • Stop and cancel scan process
~pause (std_srvs/Trigger)
  • Pause scan process
~resume (std_srvs/Trigger)
  • Continue scan process if paused
~convert (leica_scanstation_msgs/PointCloudFile)
  • Leica Scanstation saves scan results in binary format. Convert it to readable format .ptx
~video (leica_scanstation_msgs/MotorPose)
  • Publish video images from scanstation


/pointcloud_folder (string, default: "leica_scanstation_utils/pointclouds")

  • Set by leica_scanstation_utils and operating system dependent



Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components.
More information: rosin-project.eu

EU Flag

This project has received funding from the European Union’s Horizon 2020
research and innovation programme under grant agreement No. 732287.

Wiki: leica_scanstation (last edited 2020-12-02 10:41:38 by Fada_Catec)