Table of Contents
- See Also
- opals::IDirectGeoref
Aim of module
Transforms points from scanner coordinates into geo-referenced coordinates by applying the sensor model (flight trajectory, mounting parameters).
General description
For direct georeferencing of ALS data, the following input is required:
- ALS data given in the laser scanner's coordinate system
- mounting calibration
- flight trajectory
- a coordinate reference system (coord_ref_sys)
As output, we obtain the ALS ground points with respect to the defined spatial reference system (e.g. UTM33 North or geocentric WGS84), commonly termed as "world system".
Mounting calibration
We suppose that we have a strapdown inertial navigation system (INS), i.e. the inertial platform is fixed with respect to the aircraft's body. Consequently, its measurements are given in a body(-fixed) system
. Its axes are defined as follows:
: forward,
: right,
: down. Furthermore, we suppose that its origin corresponds to the current (interpolated) position of the flight trajectory.
Since the laser scanner data are usually not directly given in the body system
, the so-called mounting calibration is required, which contains the transformation chain required to describe the transition from the scanner's coordinate system
to the body system
. Figure 1 shows these two coordinate systems and two other intermediate systems
and
.
is the scanner's coordinate system in zero position in case if a scanner tilting device is used (if not, the systems
and
are identical). In general, the system
is rotated (tilt rotation) and shifted (tilt shift) with respect to the system
.
The mounting system
is defined as follows: Its axes result from cyclic permutation (scanner system) of those of system
in such a way that they are approximately parallel to those of the body system
. The systems
and
have the same origin. The mount system is (usually slightly) rotated (mounting rotation) and shifted (mounting shift) with respect to the body system.
Using matrix notation, the relations between these coordinate systems may be described as follows:



The direct relation between the systems
and
is:

General notes on notation:
- The columns of rotation matrix
correspond to the unit vectors of the axes of system J expressed in system K - The translation (shift) vector
describes the origin of system J with respect to system K
Apart from the above-mentioned geometric transformation elements, the mounting calibration contains the time offset
(time lag) of the trajectory time system with respect to the laserscanner time system, too.
Specifying the parameters of the mounting calibration
The parameters of the mounting calibration may be specified using a string according to the following EBNF (Extended Backus-Naur Form) syntax:
The following mounting parameters may be specified:
time lag: This is the time offset
of the trajectory time system with respect to the laser scanner system (i.e., this value has to be subtracted from a trajectory time stamp in order to obtain the same point of time in the scanner's time system)
scanner system: A sequence of 3 directions out of the set {F(ront),B(ack),L(eft),R(ight),U(p),D(own)} is used to specify the approximate attitude of the zero-tilted scanner system
- note: NOT that of the scanner system
(!) - with respect to the body system
(see figure 1). The direction sequence is restricted to the 24 possible right-handed systems. Based on this input, the rotation matrix
(mentioned in the previous section) is determined. For example, in case of figure 1, the 3 axes of system
point down, back, and left (here, it is not specified which of the axes is X,Y,Z). Since we support only right-handed systems, the set-up of this example corresponds to one of the 3 possible sequences "D-B-L", "B-L-D", "L-D-B".
For example, "SCANNERSYS(D-B-L)" yields
.
mounting rotation: The rotation from the system
into the system 
mounting shift: The translation (shift) from the system
into the system 
tilt rotation: The rotation from the system
into the system 
tilt shift: The translation (shift) from the system
into the system 
Hence, from the point of view of these transformation elements, the above-mentioned systems take role as a global or a local system.
The next section describes how to specify a rotation and/or a shift using the provided syntax.
How to specify a rotation and/or a shift
Using the above-introduced matrix notation, a congruent (6-parameter) transformation from a local system
into a global system
may be described as:

In the same way, the inverse transformation may be described as:

Consequently, the following relations hold:
and 
The above-decribed syntax allows the user to specify a rotation and/or a shift in different ways:
Specifying a shift:
Depending on the refsys parameter, a shift vector may be specified either as
("GLOBAL": the shift vector corresponds to the position of the local system's origin expressed in the global system) or as
("LOCAL": the shift vector corresponds to the position of the global system's origin expressed in the local system).
Note: Since the system
is just an auxiliary system with hardly practical relevance, the mounting shift expressed in the local system is NOT
BUT
(!). Hence, the mounting shift expressed in the global system
may be determined by 
Specifying a rotation:
Basically, there are three possibilities to specify a rotation:
- by 2 or 3 vectors defining the direction(s) of 2 or 3 axes of one system expressed in the other system (using the refsys parameter as described above) where the vectors need not be normalized but they must be orthogonal to each other with a certain accuracy (1.e-6)
- by a matrix given in column major order (i.e. r11 r21 r31 r12... where r11, r21, r31 are the elements of the first column) which must fulfill all orthogonality conditions with a certain accuracy (1.e-6). Depending on the refsys parameter, the matrix is interpreted either as
("GLOBAL") or
("LOCAL") - by 3 rotation angles (as described right below)
Specifying a rotation by 3 angles:
Note: when specifying a rotation by 3 angles
,
,
, the resulting matrix will be anyway (!)
(i.e. rotation from the local into the global system). The refsys parameter specifies which system the angles are related to (i.e. around the axes of which system the rotations are performed). Depending on the refsys parameter, the entire rotation matrix is created either by right or by left multiplication of the sub-matrices
,
,
:
"GLOBAL": 
"LOCAL": 
Depending on the parameter axis hierarchy, the submatrices
are replaced by
,
,
, where
and
and
.
The default rotation sense of the angles
,
,
is counter-clockwise ("CCW") (mathematically positive when looking against the respective rotation axis). It may be as well specified as clockwise ("CW") using the parameter rotation sense: in this case, all the 3 angles are multiplied by (-1) before being evaluated in the submatrices.
The parameter units allows the user to select the angle units, where "DEG", "GRAD", or "RAD" may be specified (the default is "DEG").
For example, the specification of the mounting rotation matrix by three angles
(roll),
(pitch),
(yaw) according to the aviation ARINC 705 (see section Alignment of the aircraft) corresponds to refsys="=LOCAL", axis hierarchy="AXISHIERARCHY(X-Y-Z)" and rotation sense="SENSEOFROT(CCW)". 
Examples for specifying the mounting calibration
For the following examples, we define
.
Example 1:
User input:
This is equivalent to the complete input:
It yields:
,
,
,
,
, 
Example 2:
User input:
This is equivalent to the complete input:
It yields:
,
,
,
,
, 
Example 3:
User input:
This is equivalent to the complete input:
It yields the same mounting calibration as example 1:
,
,
,
,
, 
Example 4:
User input:
This is equivalent to the complete input:
It yields:
,
,
,
,
, 
Alignment of the aircraft
According to the aviation norm ARINC 705 (Bäumker and Heimes, 2001), we use the following definitions (Figure 2):
- Primary rotation: roll angle
around the aircraft's longitudinal axis (x), where
counts positive if the right wing points down (w.r.t. the local horizon) - Secondary rotation: pitch angle
around the aircraft's lateral axis (y), where
counts positive if the nose points up (w.r.t. the local horizon) - Tertiary rotation: yaw angle
around the aircraft's vertical axis (z), where
is the azimuth of the flight direction (counted clockwise starting from north)
The entire rotation matrix
transforms a point from the body system
into the system of the local horizon
:

where
, 
and


Note: In compliance with the notation of the previous section, the columns of the rotation matrix
correspond to the unit vectors of the axes of system B expressed in system H.
Note: If a map projection is used as global coordinate system (see next section), the yaw angle
will be automatically corrected for the meridian convergence. In this case, the system
is not oriented towards True North but towards Grid North.
World coordinate system
The world coordinate system may be specified by the global parameter coord_ref_sys.
Basically, two types of world coordinate systems are supported by this module:
- Geocentric, ECEF (Earth-Centered, Earth-Fixed) Cartesian coordinate systems (e.g. WGS84-XYZ)
- Conformal Transverse Mercator projections (e.g. UTM)
Note: Geographic coordinates (latitude, longitude, ellipsoidal height) have to be converted into one of the above-mentioned system types first.
The specification of the world coordinate system should contain the parameters
(semi major axis) and
(flattening) of the reference ellipsoid (if not, the parameters of the WGS84 ellipsoid are used instead). In case of a transverse mercator projection, the parameters false_easting (default: 0.0), false_northing (default: 0.0), and scale_factor (default: 1.0) should be contained, too.
For example, the system "UTM zone 33 - northern hemisphere" may be specified either by the WKT string
or by its EPSG code
In case of a geocentric system, a ground point given in the local horizon system
is transformed into the world system
by:

where
is a rotation matrix, which describes the attitude of the local horizon system
with respect to the world system
, and where
is the current (interpolated) trajectory point given in the world system
.
In case of a Transverse Mercator map projection, beside the meridian convergence (already considered by correction of the yaw angle), the projection's length distortion and earth curvature are taken into account to transform a ground point into the "projected" horizon system
(having the same origin as
), from where it is finally translated into the world system
:

where
contains the correction terms necessary due to the (space-dependent) length distortion and earth curvature
Trajectory file
At least one trajectory file is required for this module.
A trajectory file must contain a set of at least 2 records containing the following data:
- 3 coordinates (x,y,z) of the position given in a supported world coordinate system (see previous section)
- the gps time stamp (t)
- 3 rotation angles [radiant] which must comply with the above-mentioned aviation norm ARINC 705 (roll, pitch, yaw)
The module tries to recognise the trajectory format based on its content if not specified. The standard input format is the "trajectory file format (trj)" which supports ASCII and binary mode. The 7 columns can be given in two different orders:
- x, y, z, t, roll, pitch, yaw (angle unit: degree)
- t, x, y, z, roll, pitch, yaw (angle unit: degree)
Since the gps time is excepted to be in ascending order, the two formats can be easily differentiated without any specification. Whereas all angles columns are stored in radiant within the ODM (see ODM as a database table), the trajectory format assumes the angle to be given in degrees. Hence, while reading the angles are automatically converted. Please note, that in binary mode the the first 4 values are read as doubles (8 bytes per values) and the 3 angles as floats (4 bytes per value).
In case your trajecotry file doesn't match the format described above, it is possible to create an appropriate OPALS format description (see OPALS Generic Format) and specify those as tFormat parameter. Please note that angle values are expected in radians which can be simply realised specifying an appropriate transformation in the OPALS format description file.
If two ore more trajectory files are given, their time ranges (intervals between first and last entry) must not overlap. Furthermore, the time range of a scanner file must be completely within the time range of one trajectory.
Parameter description
Remarks: mandatory
input file(s) containing laser scanner data given in device coordinates
Remarks: estimable
input file format [auto, sdc, odm, las, fwf]
Estimation rule: from input file extension
Remarks: default=TIMELAG(0), SCANNERSYS(F-R-D), MOUNTSHIFT=GLOBAL (+0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00), MOUNTROTATION=GLOBAL (+1.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +1.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +1.000000000000e+00), TILTSHIFT=GLOBAL (+0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00), TILTROTATION=GLOBAL (+1.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +1.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +0.000000000000e+00 +1.000000000000e+00),
mounting calibration parameters
Remarks: estimable
In case of multiple trajectory files with present tFormat parameter, the number of tFormat and trjFiles entries have to match or only a single tFormat entry is specified (=all trajectory files have the same format).
Estimation rule: auto. The file content is used to recognise the file format.
Remarks: estimable
output file(s) containing laser scanner data given in world system (given by trajectory)
Estimation rule: inFile_+'dirGeoref'+.ext (.ext derived from oFormat)
Remarks: mandatory
output file format [sdw, odm, las, fwf]
Estimation rule: from output file extension (default='odm' if outFile is not given)
Examples
The data used in the following examples are located in the demo directory.
Example 1
We start from the given demo file 060622_173547.sdf. First, Module Fullwave has to be applied to this file in order to generate the file 060622_173547.sdc:
The associated trajectory file F002_20060622_UTM33_part.txt is given in UTM 33, the global parameter coord_ref_sys may be set as described in the example above.
In this example, we have a Down-Front-Right scanner system (without tilting). The time lag is -3.2 milliseconds.
As result, we obtain the LAS file 060622_173547_dirGeoref.las containing the georeferenced point cloud.
Example 2
We are starting from the demo file stripPart.sdc. Since the trajectory file trjPart_geoc.txt is given in geocentric WGS 84 coordinates, we set the global parameter coord_ref_sys to
or to
In this example, we have a Down-Back-Left scanner system (without tilting). There is no time lag.
As result, we obtain the LAS file stripPart_dirGeoref.las containing the georeferenced point cloud.
References
Bäumker, M., F.-J. Heimes (2001): New Calibration and Computing Method for Direct Georeferencing of Image and Scanner Data Using the Position and Angular Data of an Hybrid Navigation System. In: Proceedings OEEPE-Workshop Integrated Sensor Orientation, Hannover, 17.-18. Sept. 2001.
