workpieceHolePositioning version 1.4.1 :

华航孔定位客户发布初始版本,修正了1.4.0版本的一些问题
This commit is contained in:
jerryzeng 2026-03-26 07:17:19 +08:00
parent 1036c152c1
commit de3bc61e5f
3 changed files with 17 additions and 14 deletions

View File

@ -682,7 +682,7 @@ void sg_getLineLocalPeaks_2(
std::vector< SVzNL3DPosition> zBtm; std::vector< SVzNL3DPosition> zBtm;
for (int i = 0; i < dataSize; i++) for (int i = 0; i < dataSize; i++)
{ {
if (i == 355) if (i == 141)
int kkk = 1; int kkk = 1;
lineData[i].nPointIdx = i; lineData[i].nPointIdx = i;
SVzNL3DPosition* curr_data = &lineData[i]; SVzNL3DPosition* curr_data = &lineData[i];

View File

@ -11,7 +11,8 @@
//version 1.2.0 : 算法完成了6轴验证 //version 1.2.0 : 算法完成了6轴验证
//version 1.3.0 : (1)算法进行了迭代 (2)对结果进行了分层和排序,输出最上层目标 //version 1.3.0 : (1)算法进行了迭代 (2)对结果进行了分层和排序,输出最上层目标
//version 1.4.0 : 添加了华航孔定位功能 //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) const char* wd_workpieceHolePositioningVersion(void)
{ {
return m_strVersion.c_str(); return m_strVersion.c_str();
@ -430,7 +431,7 @@ void wd_getHoleInfo(
int nullPtSize = 0; int nullPtSize = 0;
SSG_ROIRectD roi = { -1, -1, -1, -1 }; SSG_ROIRectD roi = { -1, -1, -1, -1 };
SVzNLRange ptIdxRange = { -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++) for (int m = 0; m < (int)a_tree.treeNodes.size(); m++)
{ {
@ -465,7 +466,7 @@ void wd_getHoleInfo(
int nullPtSize = 0; int nullPtSize = 0;
SSG_ROIRectD roi = { -1, -1, -1, -1 }; SSG_ROIRectD roi = { -1, -1, -1, -1 };
SVzNLRange ptIdxRange = { -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++) for (int m = 0; m < (int)a_tree.treeNodes.size(); m++)
{ {
@ -1062,12 +1063,12 @@ void wd_HolePositioning(
std::vector<std::vector<SSG_basicFeature1D>> zMaxPeaks_v; std::vector<std::vector<SSG_basicFeature1D>> zMaxPeaks_v;
for (int line = 0; line < lineNum; line++) for (int line = 0; line < lineNum; line++)
{ {
if (line == 1047) if (line == 152)
int kkk = 1; int kkk = 1;
std::vector<SVzNL3DPosition>& lineData = scanLines[line]; std::vector<SVzNL3DPosition>& lineData = scanLines[line];
//滤波,滤除异常点 //滤波,滤除异常点
sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], linePtNum, filterParam); //sg_lineDataRemoveOutlier_changeOriginData(&lineData[0], linePtNum, filterParam);
std::vector< SSG_pntDirAngle> line_ptDirAngles; std::vector< SSG_pntDirAngle> line_ptDirAngles;
wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles); wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles);
@ -1108,12 +1109,12 @@ void wd_HolePositioning(
std::vector<std::vector<SSG_pntDirAngle>> pntDirAngles_h; std::vector<std::vector<SSG_pntDirAngle>> pntDirAngles_h;
for (int line = 0; line < linePtNum; line++) for (int line = 0; line < linePtNum; line++)
{ {
if (line == 974) if (line == 234)
int kkk = 1; int kkk = 1;
std::vector<SVzNL3DPosition>& lineData = hLines_raw[line]; std::vector<SVzNL3DPosition>& lineData = hLines_raw[line];
//滤波,滤除异常点 //滤波,滤除异常点
int ptNum = (int)lineData.size(); 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; std::vector< SSG_pntDirAngle> line_ptDirAngles;
wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles); wd_computeDirAngle_wholeLine(lineData, cornerParam, line_ptDirAngles);
@ -1135,6 +1136,8 @@ void wd_HolePositioning(
std::vector<_zMaxInfo> objPeaks; std::vector<_zMaxInfo> objPeaks;
for (int line = 0; line < lineNum; line++) for (int line = 0; line < lineNum; line++)
{ {
if (line == 144)
int kkk = 1;
std::vector<SSG_basicFeature1D>& a_lineZMax = zMaxPeaks_v[line]; std::vector<SSG_basicFeature1D>& a_lineZMax = zMaxPeaks_v[line];
for (int j = 0; j < (int)a_lineZMax.size(); j++) 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.pkValue = objPeaks[j].pkValue;
a_info.zMaxPos = objPeaks[j].zMaxPos; a_info.zMaxPos = objPeaks[j].zMaxPos;
objPeaks[j].flag = -1;
} }
objPeaks[j].flag = -1;
} }
} }
objPeaks[i] = a_info; objPeaks[i] = a_info;

View File

@ -830,11 +830,11 @@ void HuaHang_holePosition_test(void)
printf("ver:%s\n", ver); printf("ver:%s\n", ver);
#if TEST_COMPUTE_HOLE #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++) for (int fidx = fileIdx[grp].nMin; fidx <= fileIdx[grp].nMax; fidx++)
{ {
//fidx =4; //fidx =2;
char _scan_file[256]; char _scan_file[256];
sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx); sprintf_s(_scan_file, "%sLaserData_%d.txt", dataPath[grp], fidx);
std::vector<std::vector< SVzNL3DPosition>> scanLines; std::vector<std::vector< SVzNL3DPosition>> scanLines;
@ -846,7 +846,7 @@ void HuaHang_holePosition_test(void)
SSG_lineSegParam lineSegPara; SSG_lineSegParam lineSegPara;
lineSegPara.distScale = 25.0; lineSegPara.distScale = 25.0;
lineSegPara.segGapTh_y = 15.0; // lineSegPara.segGapTh_y = 25.0; //
lineSegPara.segGapTh_z = 0.0; //z方向间隔大于10mm认为是分段 lineSegPara.segGapTh_z = 0.0; //z方向间隔大于10mm认为是分段
SSG_cornerParam cornerParam; SSG_cornerParam cornerParam;
@ -865,8 +865,8 @@ void HuaHang_holePosition_test(void)
growParam.yDeviation_max = 4.0; growParam.yDeviation_max = 4.0;
growParam.maxSkipDistance = 0.0; growParam.maxSkipDistance = 0.0;
growParam.zDeviation_max = 10.0;// growParam.zDeviation_max = 10.0;//
growParam.minLTypeTreeLen = 2.0; //mm growParam.minLTypeTreeLen = 1.0; //mm
growParam.minVTypeTreeLen = 2.0; //mm growParam.minVTypeTreeLen = 1.0; //mm
WD_workpieceHoleParam workpiecePara; WD_workpieceHoleParam workpiecePara;
workpiecePara.workpieceType = 0; workpiecePara.workpieceType = 0;
workpiecePara.holeDiameter = 6.0; // workpiecePara.holeDiameter = 6.0; //