Velodyne激光距離測試

Velodyne激光距離測試

在室內測試了VLP16和HDL-32E兩種激光雷達的數據輸出。
根據官方手冊25頁左右給出的說明,激光探頭是有安裝誤差和偏置的,因此想對偏置進行測試。

63-9113 REV J MANUAL,USER’S,HDL-32E.pdf

Coordinate Calculation Algorithm Sample Code
After removing all the correction parameters except vertical correction,
the calculation code is:
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 == O) {
coords[idx].setX(O.O);
coords[idx].setY(O.O);
coords[idx].setZ(O.O);
return;
}
float distance = db->getDistLSB() * (float)data->points[idx].distance;
II Get measured distance, distancel
float cosVertAngle = cal->getCosVertCorrection();
float sinVertAngle = cal->getSinVertCorrection();
float cosRotAngle = rotCosTable[data->position];
float sinRotAngle = rotSinTable[data->position];
float xyDistance = distance * cosVertAngle; II Convert to X-Y plane
coords[idx].setX(xyDistance * sinRotAngle + pos.getX()IVLS_DIM_SCALE);
II Calculate X coordinate
coords[idx].setY(xyDistance * cosRotAngle + pos.getY()IVLS_DIM_SCALE);
II Calculate Y coordinate
IICalculate Z coordinate
coords[idx].setZ(distance * sinVertAngle + pos.getZ()IVLS_DIM_SCALE);
}

其中的 pos.getX()IVLS_DIM_SCALE) pos.getY()IVLS_DIM_SCALE) pos.getZ()IVLS_DIM_SCALE) 就是偏置項。但是在附送的u盤或者github上下載的ros驅動中,這些偏置和校正都是0,(相比於速騰激光,每個激光都有對應的偏置文件),感覺很奇怪,按說如果不加偏置修正,測量出來的距離應該比實際距離來的小。因此進行實際測試。實際距離使用手持激光測距儀測量,精度可信。
測試環境如下圖所示:
在這裏插入圖片描述
猜想會存在的誤差
在這裏插入圖片描述

測試結果也是異常詭異,按說測量值應該小於實際距離,但是最終的結果,32線完美吻合,16線一左一右加起來反而比真實值大3-4cm!

實際距離 5.611m 5.387m
VLP16 5.65m 5.42m
HDL-32E 5.617m 5.389m
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章