From a0054f7d50794e4b4586a850eee23fa3ca158096 Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Wed, 30 Sep 2026 14:07:11 +0800 Subject: [PATCH] =?UTF-8?q?hybridPosePositioning=20version=201.4.5=20:=20?= =?UTF-8?q?=E8=BD=AC=E5=AD=90=E9=92=A2=E8=8A=AF=EF=BC=8C=E9=9A=94=E6=9D=BF?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=86=85=E9=83=A8=E5=8F=82=E6=95=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=9A2:1=E6=8A=BD=E6=A0=B7=EF=BC=8C=E8=81=9A?= =?UTF-8?q?=E7=B1=BB=E8=B7=9D=E7=A6=BB=E9=97=A8=E9=99=905mm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hybridPosePositioning_test.cpp | 49 ++++++++++--------- sourceCode/hybridPosePositioning.cpp | 10 ++-- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/hybridPosePositioning_test/hybridPosePositioning_test.cpp b/hybridPosePositioning_test/hybridPosePositioning_test.cpp index 67a543b..a397570 100644 --- a/hybridPosePositioning_test/hybridPosePositioning_test.cpp +++ b/hybridPosePositioning_test/hybridPosePositioning_test.cpp @@ -1924,33 +1924,36 @@ void _genXOYProjectionImage_workpieceInfo( std::vector binRectVertex;//最å°�外接矩形顶点 if (binInfo) { - binRectVertex.resize(4); - for (int i = 0; i < 4; i++) + if (binInfo->center.z > 1e-4) { - binRectVertex[i] = _ptRotate(binInfo->minRectVertex[i], matrix3d); - if (rx_range.max < rx_range.min) + binRectVertex.resize(4); + for (int i = 0; i < 4; i++) { - rx_range.min = binRectVertex[i].x; - rx_range.max = binRectVertex[i].x; - } - else - { - if (rx_range.min > binRectVertex[i].x) + binRectVertex[i] = _ptRotate(binInfo->minRectVertex[i], matrix3d); + if (rx_range.max < rx_range.min) + { rx_range.min = binRectVertex[i].x; - if (rx_range.max < binRectVertex[i].x) rx_range.max = binRectVertex[i].x; - } - if (ry_range.max < ry_range.min) - { - ry_range.min = binRectVertex[i].y; - ry_range.max = binRectVertex[i].y; - } - else - { - if (ry_range.min > binRectVertex[i].y) + } + else + { + if (rx_range.min > binRectVertex[i].x) + rx_range.min = binRectVertex[i].x; + if (rx_range.max < binRectVertex[i].x) + rx_range.max = binRectVertex[i].x; + } + if (ry_range.max < ry_range.min) + { ry_range.min = binRectVertex[i].y; - if (ry_range.max < binRectVertex[i].y) ry_range.max = binRectVertex[i].y; + } + else + { + if (ry_range.min > binRectVertex[i].y) + ry_range.min = binRectVertex[i].y; + if (ry_range.max < binRectVertex[i].y) + ry_range.max = binRectVertex[i].y; + } } } } @@ -2364,13 +2367,13 @@ void HaiRuiMa_rotorCorePositioning_test(void) }; SVzNLRange fileIdx[HRM_RotorCore_TEST_GROUP] = { - {1,10}, {3,70},{9,9}, {5,47}, {1,54}, {1,6} + {1,10}, {3,70},{9,9}, {1,49}, {1,54}, {1,6} }; const char* ver = wd_hybridPositioningVersion(); printf("ver:%s\n", ver); - for (int grp = 2; grp <= 2; grp++) + for (int grp = 3; grp <= 3; grp++) { SSG_planeCalibPara groundCalibPara; //åˆ�始化æˆ�å�•ä½�阵 diff --git a/sourceCode/hybridPosePositioning.cpp b/sourceCode/hybridPosePositioning.cpp index 359167f..16bbb37 100644 --- a/sourceCode/hybridPosePositioning.cpp +++ b/sourceCode/hybridPosePositioning.cpp @@ -27,7 +27,8 @@ //version 1.4.2 : ת×Ó¸Öо£¬ ÓÅ»¯Á˵ãÔÆÖд¹Ö±²¿·ÖÈ¥³ýµÄÃÅÏÞ //version 1.4.3 : ת×Ó¸Öо£¬ (1)·Ö²ãϵÊýºÍ±ß¾àϵÊýÌí¼Ó-1.0²ÎÊýÖµ£¬±íʾ²»½øÐзֲã»ò±ß¾à¡££¨2£©Ìí¼ÓÑ¡ÏîÑ¡ÔñʹÓù¤¼þµÄ×ÔÉí·¨Ïò»òͳһʹÓõ÷ƽµØÃæ·¨Ïò //version 1.4.4 : ת×Ó¸Öо£¬Ìí¼ÓÁËÒì³£±£»¤ -std::string m_strVersion = "HybridPositioning 1.4.4"; +//version 1.4.5 : ת×Ó¸Öо£¬¸ô°å¼ì²âÄÚ²¿²ÎÊýÐ޸ģº2:1³éÑù£¬¾ÛÀà¾àÀëÃÅÏÞ5mm +std::string m_strVersion = "HybridPositioning 1.4.5"; const char* wd_hybridPositioningVersion(void) { return m_strVersion.c_str(); @@ -1144,7 +1145,7 @@ void spacerBoardDetection( for (int line = 0; line < lineNum; line++) { //scanLines[line].resize(linePtNum); - scanLines[line].insert(scanLines[line].end(), scanLinesIn[line * 3].begin(), scanLinesIn[line * 3].end()); + scanLines[line].insert(scanLines[line].end(), scanLinesIn[line * xDownSample].begin(), scanLinesIn[line * xDownSample].end()); } std::vector> localNormals; localNormals.resize(lineNum); @@ -1325,7 +1326,7 @@ void spacerBoardDetection( } //¾ÛÀà int clusterCheckWin = 3; - double clusterDist = 3.0; + double clusterDist = 5.0; int distType = 1; //0 - 2d distance; 1- 3d distance std::vector> objClusters; //result wd_pointClustering_speedUp( @@ -1500,6 +1501,7 @@ void wd_HRM_RotorCorePositioning( int* errCode) { *errCode = 0; + memset(&binInfo, 0, sizeof(WD_HRM_BinInfo)); //ÅжÏÊý¾Ý¸ñʽÊÇ·ñΪgrid¡£Ëã·¨Ö»ÄÜ´¦ÀígridÊý¾Ý¸ñʽ int lineNum = (int)scanLinesInput.size(); @@ -1726,7 +1728,7 @@ void wd_HRM_RotorCorePositioning( SVzNL3DPoint vec_norm = { 0.0, 0.0, -1.0 }; SVzNL3DPoint calib_board_normal = wd_ptRotate(vec_norm, groundCalibPara.invRMatrix); double spacerAngleRange = 10.0; - int xDownSample = 3;//ɨÃè·½Ïò3£º1³éÑù + int xDownSample = 2;//ɨÃè·½Ïò3£º1³éÑù std::vector spacerPoints; spacerBoardDetection( spacerDetectPoints, spacerParam, xDownSample, chkWin, localR, calib_board_normal, spacerAngleRange, spacerInfo, spacerPoints); if (spacerInfo.center.z > 1e-4)