From de3bc61e5f3707f73c8cd4de61e39e7d26c5a79f Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Thu, 26 Mar 2026 07:17:19 +0800 Subject: [PATCH] =?UTF-8?q?workpieceHolePositioning=20version=201.4.1=20:?= =?UTF-8?q?=20=E5=8D=8E=E8=88=AA=E5=AD=94=E5=AE=9A=E4=BD=8D=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E5=8F=91=E5=B8=83=E5=88=9D=E5=A7=8B=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=BA=861.4.0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sourceCode/SG_lineFeature.cpp | 2 +- sourceCode/workpieceHolePositioning.cpp | 19 +++++++++++-------- .../workpieceHolePositioning_test.cpp | 10 +++++----- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/sourceCode/SG_lineFeature.cpp b/sourceCode/SG_lineFeature.cpp index 34cd059..bfc1df7 100644 --- a/sourceCode/SG_lineFeature.cpp +++ b/sourceCode/SG_lineFeature.cpp @@ -682,7 +682,7 @@ void sg_getLineLocalPeaks_2( std::vector< SVzNL3DPosition> zBtm; for (int i = 0; i < dataSize; i++) { - if (i == 355) + if (i == 141) int kkk = 1; lineData[i].nPointIdx = i; SVzNL3DPosition* curr_data = &lineData[i]; diff --git a/sourceCode/workpieceHolePositioning.cpp b/sourceCode/workpieceHolePositioning.cpp index acc285f..5768d2f 100644 --- a/sourceCode/workpieceHolePositioning.cpp +++ b/sourceCode/workpieceHolePositioning.cpp @@ -11,7 +11,8 @@ //version 1.2.0 : 算法完成了6轴验证 //version 1.3.0 : (1)算法进行了迭代 (2)对结果进行了分层和排序,输出最上层目标 //version 1.4.0 : 添加了华航孔定位功能 -std::string m_strVersion = "1.4.0"; +//version 1.4.1 : 华航孔定位客户发布初始版本,修正了1.4.0版本的一些问题 +std::string m_strVersion = "1.4.1"; const char* wd_workpieceHolePositioningVersion(void) { return m_strVersion.c_str(); @@ -430,7 +431,7 @@ void wd_getHoleInfo( int nullPtSize = 0; SSG_ROIRectD roi = { -1, -1, -1, -1 }; SVzNLRange ptIdxRange = { -1, -1 }; - if (a_tree.treeNodes.size() > 2) + if (a_tree.treeNodes.size() > 0) { for (int m = 0; m < (int)a_tree.treeNodes.size(); m++) { @@ -465,7 +466,7 @@ void wd_getHoleInfo( int nullPtSize = 0; SSG_ROIRectD roi = { -1, -1, -1, -1 }; SVzNLRange ptIdxRange = { -1, -1 }; - if (a_tree.treeNodes.size() > 2) + if (a_tree.treeNodes.size() > 0) { for (int m = 0; m < (int)a_tree.treeNodes.size(); m++) { @@ -1062,12 +1063,12 @@ void wd_HolePositioning( std::vector> zMaxPeaks_v; for (int line = 0; line < lineNum; line++) { - if (line == 1047) + if (line == 152) int kkk = 1; std::vector& lineData = scanLines[line]; //滤波,滤除异常点 - sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], linePtNum, filterParam); + //sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], linePtNum, filterParam); std::vector< SSG_pntDirAngle> line_ptDirAngles; wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles); @@ -1108,12 +1109,12 @@ void wd_HolePositioning( std::vector> pntDirAngles_h; for (int line = 0; line < linePtNum; line++) { - if (line == 974) + if (line == 234) int kkk = 1; std::vector& lineData = hLines_raw[line]; //滤波,滤除异常点 int ptNum = (int)lineData.size(); - sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], ptNum, filterParam); + //sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], ptNum, filterParam); std::vector< SSG_pntDirAngle> line_ptDirAngles; wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles); @@ -1135,6 +1136,8 @@ void wd_HolePositioning( std::vector<_zMaxInfo> objPeaks; for (int line = 0; line < lineNum; line++) { + if (line == 144) + int kkk = 1; std::vector& a_lineZMax = zMaxPeaks_v[line]; for (int j = 0; j < (int)a_lineZMax.size(); j++) { @@ -1188,8 +1191,8 @@ void wd_HolePositioning( { a_info.pkValue = objPeaks[j].pkValue; a_info.zMaxPos = objPeaks[j].zMaxPos; - objPeaks[j].flag = -1; } + objPeaks[j].flag = -1; } } objPeaks[i] = a_info; diff --git a/workpieceHolePositioning_test/workpieceHolePositioning_test.cpp b/workpieceHolePositioning_test/workpieceHolePositioning_test.cpp index ce98551..b373ff2 100644 --- a/workpieceHolePositioning_test/workpieceHolePositioning_test.cpp +++ b/workpieceHolePositioning_test/workpieceHolePositioning_test.cpp @@ -830,11 +830,11 @@ void HuaHang_holePosition_test(void) printf("ver:%s\n", ver); #if TEST_COMPUTE_HOLE - for (int grp = 1; grp <= 3; grp++) + for (int grp = 0; grp <= 3; grp++) { for (int fidx = fileIdx[grp].nMin; fidx <= fileIdx[grp].nMax; fidx++) { - //fidx =4; + //fidx =2; char _scan_file[256]; sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx); std::vector> scanLines; @@ -846,7 +846,7 @@ void HuaHang_holePosition_test(void) SSG_lineSegParam lineSegPara; lineSegPara.distScale = 25.0; - lineSegPara.segGapTh_y = 15.0; // + lineSegPara.segGapTh_y = 25.0; // lineSegPara.segGapTh_z = 0.0; //z方向间隔大于10mm认为是分段 SSG_cornerParam cornerParam; @@ -865,8 +865,8 @@ void HuaHang_holePosition_test(void) growParam.yDeviation_max = 4.0; growParam.maxSkipDistance = 0.0; growParam.zDeviation_max = 10.0;// - growParam.minLTypeTreeLen = 2.0; //mm - growParam.minVTypeTreeLen = 2.0; //mm + growParam.minLTypeTreeLen = 1.0; //mm + growParam.minVTypeTreeLen = 1.0; //mm WD_workpieceHoleParam workpiecePara; workpiecePara.workpieceType = 0; workpiecePara.holeDiameter = 6.0; //