You are on page 1of 6

Application Note: Gocator – Multi-sensor Alignment Calibration Page 1 ( 6)

Title: Multi-sensor Alignment Calibration

Purpose
This technical note demonstrates how a synchronized network of three or more Gocator sensors
mounted side by side to scan a wide and generally flat target surface can be system calibrated in order
for all sensors to report data in a common coordinate frame.

Equipment Used
Any Gocator model sensor (but must be same model within system)
Master 400 (or higher)

Sensor Features Used


Software Development Kit
Ethernet Output

Table of Contents

1 Introduction ....................................................................................................................................................... 2
2 Gocator Coordinate Definition ........................................................................................................................... 3
3 Calibration Target ............................................................................................................................................. 3
4 Calibration Processing Flow .............................................................................................................................. 4
4.1 Input to Calibration Process ........................................................................................................................ 4
4.2 Sensor Configuration .................................................................................................................................. 5
4.3 Processing Steps ....................................................................................................................................... 5
5 Implementation using the Gocator SDK ............................................................................................................. 6

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc
Application Note: Gocator – Multi-sensor Alignment Calibration Page 2 ( 6)

1 Introduction
This technical note explains how several Gocator sensors mounted side by side to scan a wide and generally flat
target surface can be system calibrated in order for all sensors to report data in a common coordinate frame. A
calibration target in the form of a bar with reference holes is positioned in the sensor system allowing for a calibration
procedure to calculate translation parameters for each sensor. In this case, each sensor will independently establish
three parameters, a rotational tilt compensation parameter, an X position offset based on which hole a particular
sensor is calibrated against, and a Z offset based on the distance to the calibration bar. During run-time these
parameters are then applied to the data points to create a single 3D model of the scanned surface.

Figure 1: Multi-sensor alignment calibration bar with reference holes.

The Gocator’s built-in Buddy concept can handle calibration of dual sensor configurations, but when creating systems
with three or more sensors, the user has to work with the Gocator Software Development Kit (SDK) to build a custom
solution. A common requirement with multi sensor systems is to precisely control the timing of each sensor to avoid
interference in areas where the measurement zones overlap, often referred to as “cross talk” between sensors. In the
type of sensor mounting layout pictured in Figure 1, there is typically interference between neighbouring sensors so
time multiplexing is necessary.

This technical note is bundled together with an open source example code project that the user can study, compile
and run in parallel to reading it.

This document assumes that the reader is already familiar with the Gocator SDK and how to multiplex timing in a
multi-sensor system. It is strongly recommended to first study the example code provided with the Gocator SDK
(called the Go2Samples), and then read the technical note on multi-sensor operation, which can be downloaded at:

 http://www.lmi3d.com/product/gocator-2000-family/support/files/all

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc
Application Note: Gocator – Multi-sensor Alignment Calibration Page 3 ( 6)

2 Gocator Coordinate Definition

Sensor Coordinates
Prior to any custom system calibration applied by the user, individual
sensors use the coordinate system shown here. The Z-axis represents the
sensor’s measurement range (MR), with the values increasing towards the
sensor. The X-axis represents the sensor’s field of view (FOV). The origin is
at the center of the MR and FOV. The positive direction of the X-axis is to the
right when viewing the connector side of the sensor.

System Coordinates
In the general case, any arbitrary coordinate system definition can be defined
and implemented by the user. However, the Gocator has built-in support to
transform each data point with an X offset, Z offset and Angle (rotation in the X-Z
plane). Taking advantage of this support, the system coordinates are aligned
such that the system X-axis is parallel to the calibration target surface. The
system Z-origin is set to the base of the calibration target object. The system
X-origin is user defined and given by the X-positions of the reference holes.

3 Calibration Target
For wide, multi-sensor systems, a calibration bar is required to match the length of the system by following the
guidelines listed below (LMI Technologies does not manufacture or sell calibration bars).

 The bar should not be made out of a shiny reflective material.


 Length of bar should be greater than the combined field of view of all sensors.
 Diameter of reference holes must be large enough to be reliably detected by sensor and calibration routine.
This will depend on the X resolution of the sensor model. A rule of thumb is that the diameter should be at
least 10 times the X resolution of the sensor model.
 There must be only one reference hole visible to each sensor.
 The location of the reference hole can be anywhere within the sensor’s FOV, as long as the entire hole is
visible and detectable and the exact location on the bar is known.

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc
Application Note: Gocator – Multi-sensor Alignment Calibration Page 4 ( 6)

Figure 2: Calibration bar specification.

4 Calibration Processing Flow


4.1 Input to Calibration Process
In order for the calibration routine to establish the three calibration parameters for each sensor (X offset, Z offset and
Angle) it has to have knowledge about the specification of the calibration target, as well as which sensor is viewing
which reference hole, which would be done by the sensor’s serial number. This information would typically be stored
in a configuration file and read by the calibration routine. In case of a sensor replacement in the system, the
configuration file has to be updated with the new sensor’s serial number and the system will then have to be
recalibrated.

Required input to the calibration routine:

 Diameter of reference holes – To assist the detection algorithm


 Thickness of calibration bar – For Z offset calculation
 A table linking sensor serial number to X position of reference hole – For X offset calculation

Note that the position of the X-origin is arbitrary and user defined. However, to be consistent with the Gocator’s
internal coordinate definition, it is recommended to define the positive X-direction to be from left to right when viewing
the system from the connector side of the sensors. In the example illustrated in Figure 2, the X-origin is somewhere in
the centre of the system, meaning that reference holes to the left of the origin have negative values.

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc
Application Note: Gocator – Multi-sensor Alignment Calibration Page 5 ( 6)

4.2 Sensor Configuration


Since this calibration process is static (non-moving calibration target), the sensor should be running with time based
triggering. Depending on how the calibration algorithms are designed the sensor can run in either Profile Mode or
Raw Mode (the example source code, associated with this document, is working on Raw Mode data). The user must
ensure that all sensors are fully configured before performing the calibration. Most importantly this includes:

 Active Area – This is a fundamental configuration that refers to a region of interest within the sensor’s
maximum field of view that defines the area used for laser profiling. A smaller Active Area may allow the
sensor to run faster. Changing the Active Area affects the sensors internal coordinate frame. Therefore it is
not possible to modify this setting after the system calibration has been established.
 Exposure – The sensor should be configured for Single Exposure, which is static over time. Do not use
Dynamic Exposure, since the first few frames may not have good data. Although the exposure time can be
changed after the system calibration, it is still strongly recommended to establish this setting prior. It is critical
for the calibration routine that the data collected from the calibration target is not under- or over-exposed. If
the measurement of the target suffers from data drop-out, this can be mistaken for the reference hole. Any
noise or outliers due to over-exposure or reflections may skew the angle correction and cause errors in the Z
offset.

4.3 Processing Steps


Each sensor can be calibrated independently. The only unique aspect for a particular sensor is the position of the
reference hole in its field of view. The general processing flow should go like this:

For each sensor:

 Clear any existing calibration.


 Receive a profile from the sensor.
 Convert the 16-bit integer encoded profile data to floating point engineering units (mm). The conversion factors
are sent together with the profile data (X-Offset, X-Resolution, Z-Offset and Z-Resolution).
 If there are any systematic errors or outliers in the profile data, it may be necessary to perform an additional
filtering process to remove these effects. However, if the calibration target is properly exposed, and there are
no significant noise or reflection issues, this step may be skipped.
 Perform a linear fit to the engineering unit profile data.
 Calculate the angle required to rotate the line to horizontal, and perform the rotation.
 Calculate the Z-offset required to bring the horizontal line to the height (thickness) of the calibration bar.
 Search for and locate the position of the reference hole in the rotated profile data.
 Calculate the X-offset required to shift the X-axis such that the position of the reference hole is matching the
position on the calibration bar.
 Receive another sample and repeat the process. Build up the calibration result as an average over a number of
samples.
 Write the Angle, Z-offset and X-offset to the Gocator’s transformation parameter

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc
Application Note: Gocator – Multi-sensor Alignment Calibration Page 6 ( 6)

5 Implementation using the Gocator SDK


An example project is included with this technical note. Users can reference this project as a template to start
developing their alignment calibration application. The Gocator interface and the data callback are located in the file
App.c. This code structure, and many of the function calls, is very similar to the technical note on multi-sensor
operation and will not be explained again here. The general processing flow for the calibration routine is easy to follow
in the data callback and follows the flow outlined in section 4.3 above. The calibration algorithms and matrix
transformations are broken out into a separate file called AlignCal.c.

In an effort to keep this example code short and easy to review, a number of assumptions and simplifications have
been made.

 The sensors all have to be pre-configured using the web UI using the following rules:
o All sensors have to run at the same speed (use the same frame period)
o All sensors have to use the same exposure time
o The exposure time has to be shorter than half the frame period (for multiplexing to work)

 The code also makes the following assumptions:


o The exposure time produces a good measurement of the calibration bar (no drop-outs, no noise
outliers)
o Two banks for time multiplexing (neighboring sensors FOV may overlap)
o Only one reference hole visible in each sensor's FOV

 The calibration parameters and the sensor layout information is hardcoded in the header file App.h. This is to
avoid having to add code to parse a file format like xml. Before attempting to run the code, the user will have
to edit the following defines and declarations to reflect their particular setup.

#define APP_SENSOR_COUNT (2) // number of Gocator sensors in system


#define APP_CALIBRATION_COUNT (100) // number of samples to collect for each sensor
#define APP_CALIBRATION_BAR_HEIGHT (25) // height of calibration bar (mm)

//Physical Sensor Layout SerialNumber, Multiplex Bank, Reference Position


SensorLayout layout[APP_SENSOR_COUNT] = {{6485, 0, -35.0},
{4422, 1, 35.0}};

Gocator-2000-2300_Appnote_Multi-Sensor-Alignment-Calibration.doc

You might also like