From 85fb6d1434a6358702fa676d40507bd6b1bbaf1b Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Sun, 27 Sep 2026 18:34:17 +0800 Subject: [PATCH] =?UTF-8?q?hybridPosePositioning=20version=201.4.4=20:=20?= =?UTF-8?q?=E8=BD=AC=E5=AD=90=E9=92=A2=E8=8A=AF=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E5=BC=82=E5=B8=B8=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hybridPosePositioning_test.cpp | 4 +- sourceCode/hybridPosePositioning.cpp | 38 ++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/hybridPosePositioning_test/hybridPosePositioning_test.cpp b/hybridPosePositioning_test/hybridPosePositioning_test.cpp index 7fa41f0..67a543b 100644 --- a/hybridPosePositioning_test/hybridPosePositioning_test.cpp +++ b/hybridPosePositioning_test/hybridPosePositioning_test.cpp @@ -2364,13 +2364,13 @@ void HaiRuiMa_rotorCorePositioning_test(void) }; SVzNLRange fileIdx[HRM_RotorCore_TEST_GROUP] = { - {1,10}, {3,70},{8,8}, {5,47}, {1,54}, {1,6} + {1,10}, {3,70},{9,9}, {5,47}, {1,54}, {1,6} }; const char* ver = wd_hybridPositioningVersion(); printf("ver:%s\n", ver); - for (int grp = 4; grp <= 4; grp++) + for (int grp = 2; grp <= 2; grp++) { SSG_planeCalibPara groundCalibPara; //åˆ�始化æˆ�å�•ä½�阵 diff --git a/sourceCode/hybridPosePositioning.cpp b/sourceCode/hybridPosePositioning.cpp index df1fe15..359167f 100644 --- a/sourceCode/hybridPosePositioning.cpp +++ b/sourceCode/hybridPosePositioning.cpp @@ -26,7 +26,8 @@ //version 1.4.1 : ת×Ó¸Öо£¬ ÿ¸öÊä³ö½á¹ûÌí¼ÓÁË2DͼÏñ×ø±ê //version 1.4.2 : ת×Ó¸Öо£¬ ÓÅ»¯Á˵ãÔÆÖд¹Ö±²¿·ÖÈ¥³ýµÄÃÅÏÞ //version 1.4.3 : ת×Ó¸Öо£¬ (1)·Ö²ãϵÊýºÍ±ß¾àϵÊýÌí¼Ó-1.0²ÎÊýÖµ£¬±íʾ²»½øÐзֲã»ò±ß¾à¡££¨2£©Ìí¼ÓÑ¡ÏîÑ¡ÔñʹÓù¤¼þµÄ×ÔÉí·¨Ïò»òͳһʹÓõ÷ƽµØÃæ·¨Ïò -std::string m_strVersion = "HybridPositioning 1.4.3"; +//version 1.4.4 : ת×Ó¸Öо£¬Ìí¼ÓÁËÒì³£±£»¤ +std::string m_strVersion = "HybridPositioning 1.4.4"; const char* wd_hybridPositioningVersion(void) { return m_strVersion.c_str(); @@ -1760,28 +1761,39 @@ void wd_HRM_RotorCorePositioning( //ͳ¼ÆROIÖеÄɨÃèÏߺÍPtIdx·¶Î§ SVzNLRange roiLineIndice = { INT_MAX, 0 }; SVzNLRange roiPtIndice = { INT_MAX, 0 }; + bool isValid = true; for (int x = L; x <= R; x++) { for (int y = T; y <= B; y++) { - mapping2DTo3D& a_mapping = mappingTable[x][y]; - for (int m = 0; m < (int)a_mapping.mappings.size(); m++) + if (x < mappingTable.size()) { - int lineIdx = a_mapping.mappings[m].lineIdx; - int ptIdx = a_mapping.mappings[m].ptIdx; - if (scanLines[lineIdx][ptIdx].pt3D.z > 1e-4) + if (y < mappingTable[x].size()) { - scanLinesInput[lineIdx][ptIdx].nPointIdx &= 0xffff0000; - scanLinesInput[lineIdx][ptIdx].nPointIdx |= (idx + 1); - roiLineIndice.nMin = roiLineIndice.nMin > lineIdx ? lineIdx : roiLineIndice.nMin; - roiLineIndice.nMax = roiLineIndice.nMax < lineIdx ? lineIdx : roiLineIndice.nMax; - roiPtIndice.nMin = roiPtIndice.nMin > ptIdx ? ptIdx : roiPtIndice.nMin; - roiPtIndice.nMax = roiPtIndice.nMax < ptIdx ? ptIdx : roiPtIndice.nMax; + mapping2DTo3D& a_mapping = mappingTable[x][y]; + for (int m = 0; m < (int)a_mapping.mappings.size(); m++) + { + int lineIdx = a_mapping.mappings[m].lineIdx; + int ptIdx = a_mapping.mappings[m].ptIdx; + if (scanLines[lineIdx][ptIdx].pt3D.z > 1e-4) + { + scanLinesInput[lineIdx][ptIdx].nPointIdx &= 0xffff0000; + scanLinesInput[lineIdx][ptIdx].nPointIdx |= (idx + 1); + roiLineIndice.nMin = roiLineIndice.nMin > lineIdx ? lineIdx : roiLineIndice.nMin; + roiLineIndice.nMax = roiLineIndice.nMax < lineIdx ? lineIdx : roiLineIndice.nMax; + roiPtIndice.nMin = roiPtIndice.nMin > ptIdx ? ptIdx : roiPtIndice.nMin; + roiPtIndice.nMax = roiPtIndice.nMax < ptIdx ? ptIdx : roiPtIndice.nMax; + } + } } + else + isValid = false; } + else + isValid = false; } } - if (roiLineIndice.nMax < roiLineIndice.nMin) + if ( (roiLineIndice.nMax < roiLineIndice.nMin) || (isValid == false)) continue; //Éú³ÉROIÖеÄɨÃèÊý¾Ý