wheelArchHeigthMeasure version 1.3.4 :

轮眉到轮心高度计算方法进行了修正,由Y高度差修改为两点距离
This commit is contained in:
jerryzeng 2026-04-13 17:01:59 +08:00
parent 676b597a04
commit 43faaa9fd9
2 changed files with 7 additions and 6 deletions

View File

@ -12,7 +12,8 @@
//version 1.3.1 : 添加了一个检测轮毂是否存在的函数
//version 1.3.2 : 针对不理想点云改进了算法,增强鲁棒性
//version 1.3.3 : 轮眉点的提取进行了改进,修正了可能的取点错误
std::string m_strVersion = "1.3.3";
//version 1.3.4 : 轮眉到轮心高度计算方法进行了修正由Y高度差修改为两点距离
std::string m_strVersion = "1.3.4";
const char* wd_wheelArchHeigthMeasureVersion(void)
{
return m_strVersion.c_str();
@ -966,7 +967,7 @@ WD_wheelArchInfo wd_wheelArchHeigthMeasure(
}
result.centerLine[0] = { downWheelPt.x - outLineLen, centerY, scanLines[searchLine][minPtIdx].pt3D.z };
result.centerLine[1] = { downWheelPt.x + outLineLen, centerY, scanLines[searchLine][minPtIdx].pt3D.z };
result.archToCenterHeigth = centerY - arcPt.y;
result.archToCenterHeigth = sqrt(pow(centerY - arcPt.y, 2) + pow(scanLines[searchLine][minPtIdx].pt3D.z - arcPt.z, 2)); // centerY - arcPt.y;
result.archToGroundHeigth = groundCalibPara.planeHeight - arcPt.y;
//将数据重新投射回原来的坐标系,以保持手眼标定结果正确
for (int i = 0; i < lineNum; i++)

View File

@ -2725,7 +2725,7 @@ int main()
};
SVzNLRange fileIdx[TEST_GROUP] = {
{1,2}, {1,4}, {1,7}, {1,7}, {1,7},{1,7}
{1,2}, {1,4}, {8,9}, {8,9}, {8,9},{9,9}
};
SSG_planeCalibPara poseCalibPara;
@ -2739,7 +2739,7 @@ int main()
poseCalibPara.planeCalib[6] = 0.0;
poseCalibPara.planeCalib[7] = 0.0;
poseCalibPara.planeCalib[8] = 1.0;
poseCalibPara.planeHeight = -1.0;
poseCalibPara.planeHeight = 500.0;
for (int i = 0; i < 9; i++)
poseCalibPara.invRMatrix[i] = poseCalibPara.planeCalib[i];
@ -2749,7 +2749,7 @@ int main()
char _scan_file[256];
int endGroup = TEST_GROUP - 1;
for (int grp = 2; grp <= endGroup; grp++)
for (int grp = 5; grp <= endGroup; grp++)
{
char calibFile[250];
sprintf_s(calibFile, "%sground_calib_para.txt", dataPath[grp]);
@ -2834,7 +2834,7 @@ int main()
sprintf_s(_dbg_file, "%sresult\\LaserLine%d_result.txt", dataPath[grp], fidx);
_outputScanDataFile_RGBD_obj(_dbg_file, scanData, 0, 0, 0, wheelArcHeight);
#endif
printf("%s: height=%f, arcToGrund=%f, time=%d(ms)!\n", _scan_file, wheelArcHeight.archToCenterHeigth, wheelArcHeight.archToGroundHeigth, (int)(t2 - t1));
printf("%s: arcY=%f, height=%f, arcToGrund=%f, time=%d(ms)!\n", _scan_file, wheelArcHeight.wheelArchPos.y, wheelArcHeight.archToCenterHeigth, wheelArcHeight.archToGroundHeigth, (int)(t2 - t1));
}
else
{