EasyManua.ls Logo

Velodyne HDL-64E S3 - Appendix F: Dual Two Point Calibration Methodology & Code Samples; Coordinate Calculation Algorithm

Velodyne HDL-64E S3
54 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
HDL-64E S3
High Definition LiDAR Sensor
Page 43
Velodyne LiDAR, Inc.
©
2019
63-HDL64ES3 REV K
Appendix F: Dual Two Point Calibration Methodology &
Code Samples
Velodyne uses a dual point calibration methodology to calculate the values in the .xml file. This section
describes this calibration methodology. The steps for the calibration are as follows:
1. Perform far point calibration at 25.04m
2. Perform near point X calibration at 2.4m
3. Perform near point Y calibration at 1.93m
4. Perform linear interpolation to get distance correction for X and Y (Nearer than 25.00m only)
D
x
= D
1x
+ (D
2x
D
1x
)
( x x
1
)
( x
2
x
1
)
Where:
x
1
= 2.4 m
x
2
= 25.04 m
y
1
= 1.93 m
D
y
= D
1
y
+
(
D
2x
D
1
y
)
( y
y
1
)
( y
2
y
1
)
D
1x
= distance corrected in X direction for near point
D
1 y
= distance corrected Y direction for near point
D
2 x
= D
2 y
= distance correction for far point
Coordinate Calculation Algorithm Sample Code
firingData::computeCoords(guintl6 laserNum, boost::shared_ptr<CalibrationDB> db, GLpos_t
&pos)
{
guintl6 idx = laserNum % VLS_LASER_PER_FIRING;
boost::shared_ptr<CalibrationPoint> cal = db->getCalibration(laserNum);
if (data->points[idx].distance == 0) {
coords[idx].setX(0.0);
coords[idx].setY(0.0);
coords[idx].setZ(0.0);
return;
}
float distancel = db->getDistLSB() * (float)data->points[idx].distance;
float distance = distancel+ cal->getDistCorrection();
float cosVertAngle = cal->getCosVertCorrection();
float sinVertAngle = cal->getSinVertCorrection();
float cosRotCorrection = cal->getCosRotCorrection();
float sinRotCorrection = cal->getSinRotCorrection();
//g_assert(data->position < 36000);
float cosRotAngle = rotCosTable[data->position]*cosRotCorrection + rotSinTable[data-
>position]*sinRotCorrection;
float sinRotAngle = rotSinTable[data->position]*cosRotCorrection - rotCosTable[data-
>position]*sinRotCorrection;
//distancel /= VLS_DIM_SCALE;
//distance /= VLS_DIM_SCALE;
float hOffsetCorr = cal->getHorizOffsetCorrection()/VLS_DIM_SCALE;
float vOffsetCorr = cal->getVertOffsetCorrection()/VLS_DIM_SCALE;

Table of Contents

Related product manuals