From 8962f03d2afd202a3ba76921f7597a3e929dda6d Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Sun, 20 Sep 2026 17:25:30 +0800 Subject: [PATCH] =?UTF-8?q?hybridPosePositioning=20version=201.4.2=20:=20?= =?UTF-8?q?=E8=BD=AC=E5=AD=90=E9=92=A2=E8=8A=AF=EF=BC=8C=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BA=86=E7=82=B9=E4=BA=91=E4=B8=AD=E5=9E=82=E7=9B=B4?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=8E=BB=E9=99=A4=E7=9A=84=E9=97=A8=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hybridPosePositioning_test.cpp | 33 ++++++++++++------- sourceCode/hybridPosePositioning.cpp | 7 ++-- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/hybridPosePositioning_test/hybridPosePositioning_test.cpp b/hybridPosePositioning_test/hybridPosePositioning_test.cpp index 4b356f3..dbb35e0 100644 --- a/hybridPosePositioning_test/hybridPosePositioning_test.cpp +++ b/hybridPosePositioning_test/hybridPosePositioning_test.cpp @@ -285,7 +285,7 @@ void _removeZeroLines_XYZUV(std::vector>& scanData) } -void vzReadObj2DROI_1(const char* fileName, std::vector& objROIs) +void vzReadObj2DROI(const char* fileName, std::vector& objROIs) { std::ifstream inputFile(fileName); std::string linedata; @@ -300,9 +300,19 @@ void vzReadObj2DROI_1(const char* fileName, std::vector& objROIs) int objID; char type; float L, T, W, H, score; - sscanf_s(linedata.c_str(), "obj_%d: C=%c, Rect={ %f, %f, %f, %f }, Score=%f", - &objID, &type, sizeof(type), &L, &T, &W, &H, &score); - + size_t pos = linedata.find("Rect"); + if (pos != std::string::npos) + sscanf_s(linedata.c_str(), "obj_%d: C=%c, Rect={ %f, %f, %f, %f }, Score=%f", &objID, &type, sizeof(type), &L, &T, &W, &H, &score); + else + { + float Cx, Cy, R; + sscanf_s(linedata.c_str(), "obj_%d: C=%c, { %f, %f }, R=%f, Score=%f", + &objID, &type, sizeof(type), &Cx, &Cy, &R, &score); + L = Cx - R; + T = Cy - R; + W = R * 2; + H = R * 2; + } WD_objArea2D a_roi; if ('a' == type) a_roi.workpieceType = 1; @@ -322,6 +332,7 @@ void vzReadObj2DROI_1(const char* fileName, std::vector& objROIs) return; } +#if 0 void vzReadObj2DROI(const char* fileName, std::vector& objROIs) { std::ifstream inputFile(fileName); @@ -358,6 +369,7 @@ void vzReadObj2DROI(const char* fileName, std::vector& objROIs) inputFile.close(); return; } +#endif void _outputRGBDResult_XYZUV_RGBD( char* fileName, @@ -2188,7 +2200,7 @@ void HaiRuiMa_TaperedWorkpiece_test(void) sprintf_s(_scan_file, "%s%d_result.txt", dataPath[grp], fidx); std::vector objROIs; - vzReadObj2DROI_1(_scan_file, objROIs); + vzReadObj2DROI(_scan_file, objROIs); long t1 = (long)GetTickCount64();//统计时间 @@ -2351,13 +2363,13 @@ void HaiRuiMa_rotorCorePositioning_test(void) }; SVzNLRange fileIdx[HRM_RotorCore_TEST_GROUP] = { - {1,10}, {3,70},{2,2}, {1,47}, {1,54} + {1,10}, {3,70},{3,7}, {1,47}, {1,54} }; const char* ver = wd_hybridPositioningVersion(); printf("ver:%s\n", ver); - for (int grp = 3; grp < HRM_RotorCore_TEST_GROUP; grp++) + for (int grp = 2; grp <= 2; grp++) { SSG_planeCalibPara groundCalibPara; //åˆ�始化æˆ�å�•ä½�阵 @@ -2427,10 +2439,7 @@ void HaiRuiMa_rotorCorePositioning_test(void) else sprintf_s(_scan_file, "%s%d_result.txt", dataPath[grp], fidx); std::vector objROIs; - if( ((grp == 0) && (fidx <= 9)) || ((grp >=3)&&(grp<=4))) - vzReadObj2DROI(_scan_file, objROIs); - else - vzReadObj2DROI_1(_scan_file, objROIs); + vzReadObj2DROI(_scan_file, objROIs); SWD_Cylinder workpieceParam; //圆柱形工件的标称å�Šå¾„和高度 if (grp == 3) @@ -2451,7 +2460,7 @@ void HaiRuiMa_rotorCorePositioning_test(void) SVzNLSizeD spacerParam; //éš”æ�¿å�‚数:长和宽 spacerParam.dWidth = 720.0; - spacerParam.dHeight = 510.0; + spacerParam.dHeight = 520.0; double layerRatio = 0.5; //分层系数,分层门é™�=分层系数*工件高度;当两个工件的高度差大于分层门é™�时,判断为在ä¸�å�Œå±‚ const double distToSideRatio = 1.1; //è¾¹è·�系数,边è·�é—¨é™�=è¾¹è·�系数*工件直径;当工件è·�边的è·�离大于边è·�é—¨é™�时,判断为边上的工件 diff --git a/sourceCode/hybridPosePositioning.cpp b/sourceCode/hybridPosePositioning.cpp index 2510e4b..ceb6261 100644 --- a/sourceCode/hybridPosePositioning.cpp +++ b/sourceCode/hybridPosePositioning.cpp @@ -24,7 +24,8 @@ //version 1.3.11 : ת×Ó¸Öо£¬ ½«±ß¾àϵÊýÓÉÄÚ²¿²ÎÊýתΪÊäÈë²ÎÊý //version 1.4.0 : ת×Ó¸Öо£¬ Ìí¼ÓÁ˸ô°åµÄʶ±ðºÍ¶¨Î»¡£ µ±¶¨Î»¸ô°åʱ£¬¹¤¼þÀàÐÍΪ9 //version 1.4.1 : ת×Ó¸Öо£¬ ÿ¸öÊä³ö½á¹ûÌí¼ÓÁË2DͼÏñ×ø±ê -std::string m_strVersion = "HybridPositioning 1.4.1"; +//version 1.4.2 : ת×Ó¸Öо£¬ ÓÅ»¯Á˵ãÔÆÖд¹Ö±²¿·ÖÈ¥³ýµÄÃÅÏÞ +std::string m_strVersion = "HybridPositioning 1.4.2"; const char* wd_hybridPositioningVersion(void) { return m_strVersion.c_str(); @@ -400,7 +401,7 @@ WD_workpieceInfo _computeWorkpiecePose( std::vector> vScanLineSegs; for (int line = 0; line < lineNum; line++) { - if (line == 83) + if (line == 62) int kkk = 1; //·Ö¶Î std::vector simpleSegs; @@ -1570,7 +1571,7 @@ void wd_HRM_RotorCorePositioning( SSG_cornerParam removeVertialPara; memset(&removeVertialPara, 0, sizeof(SSG_cornerParam)); removeVertialPara.scale = 3.0; - removeVertialPara.cornerTh = 60; + removeVertialPara.cornerTh = 45; std::vector> flags; flags.resize(lineNum);