hybridPosePositioning
version 1.3.4 : 修正了转子钢芯定位算法中的bug
This commit is contained in:
parent
432c2a3289
commit
ffd50bc6c5
@ -2087,7 +2087,7 @@ void HaiRuiMa_rotorCorePositioning_test(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
SVzNLRange fileIdx[HRM_RotorCore_TEST_GROUP] = {
|
SVzNLRange fileIdx[HRM_RotorCore_TEST_GROUP] = {
|
||||||
{1,9},
|
{1,10},
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* ver = wd_hybridPositioningVersion();
|
const char* ver = wd_hybridPositioningVersion();
|
||||||
@ -2130,7 +2130,10 @@ void HaiRuiMa_rotorCorePositioning_test(void)
|
|||||||
|
|
||||||
sprintf_s(_scan_file, "%s%d_result.txt", dataPath[grp], fidx);
|
sprintf_s(_scan_file, "%s%d_result.txt", dataPath[grp], fidx);
|
||||||
std::vector<WD_objArea2D> objROIs;
|
std::vector<WD_objArea2D> objROIs;
|
||||||
|
if( (grp == 0) && (fidx <= 9))
|
||||||
vzReadObj2DROI(_scan_file, objROIs);
|
vzReadObj2DROI(_scan_file, objROIs);
|
||||||
|
else
|
||||||
|
vzReadObj2DROI_1(_scan_file, objROIs);
|
||||||
|
|
||||||
SWD_Cylinder workpieceParam; //圆柱形工件的标称半径和高度
|
SWD_Cylinder workpieceParam; //圆柱形工件的标称半径和高度
|
||||||
workpieceParam.radius = 45.0;
|
workpieceParam.radius = 45.0;
|
||||||
@ -2523,8 +2526,8 @@ typedef enum
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_地面调平;
|
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_地面调平;
|
||||||
ESG_testMode testMode = keSG_2D3D定位_海瑞马_锥形工件;
|
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_锥形工件;
|
||||||
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_转子芯;
|
ESG_testMode testMode = keSG_2D3D定位_海瑞马_转子芯;
|
||||||
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛料筐定位;
|
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛料筐定位;
|
||||||
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛工件尺寸测量;
|
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛工件尺寸测量;
|
||||||
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛位置规划;
|
//ESG_testMode testMode = keSG_2D3D定位_海瑞马_码垛位置规划;
|
||||||
|
|||||||
@ -14,7 +14,8 @@
|
|||||||
//version 1.3.1 : 添加了海瑞马转子钢芯定位位置属性计算,区分出中央,边和角的位置,按照中心排序,先输出最中央的目标
|
//version 1.3.1 : 添加了海瑞马转子钢芯定位位置属性计算,区分出中央,边和角的位置,按照中心排序,先输出最中央的目标
|
||||||
//version 1.3.2 : 添加了海瑞马锥形工件的ID号,ID号为输入的ROI下标+1(从1开始)
|
//version 1.3.2 : 添加了海瑞马锥形工件的ID号,ID号为输入的ROI下标+1(从1开始)
|
||||||
//version 1.3.3 : 改进了海瑞马锥形工件定位算法,优化的ROI重叠时的处理逻辑
|
//version 1.3.3 : 改进了海瑞马锥形工件定位算法,优化的ROI重叠时的处理逻辑
|
||||||
std::string m_strVersion = "HybridPositioning 1.3.3";
|
//version 1.3.4 : 修正了转子钢芯定位算法中的bug
|
||||||
|
std::string m_strVersion = "HybridPositioning 1.3.4";
|
||||||
const char* wd_hybridPositioningVersion(void)
|
const char* wd_hybridPositioningVersion(void)
|
||||||
{
|
{
|
||||||
return m_strVersion.c_str();
|
return m_strVersion.c_str();
|
||||||
@ -440,8 +441,10 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
exSegs.push_back(a_seg);
|
exSegs.push_back(a_seg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (exSegs.size() == 0)
|
|
||||||
return a_pose;
|
std::vector<SWD_indexingSeg> validExSegs;
|
||||||
|
if (exSegs.size() > 0)
|
||||||
|
{
|
||||||
//去除低的段:如果两个段的meanZ相差达到工件高度的一半,视为低的段
|
//去除低的段:如果两个段的meanZ相差达到工件高度的一半,视为低的段
|
||||||
int highestSeg = 0;
|
int highestSeg = 0;
|
||||||
for (int m = 1; m < (int)exSegs.size(); m++)
|
for (int m = 1; m < (int)exSegs.size(); m++)
|
||||||
@ -451,7 +454,7 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
}
|
}
|
||||||
|
|
||||||
double highestZ = exSegs[highestSeg].segMeanZ;
|
double highestZ = exSegs[highestSeg].segMeanZ;
|
||||||
std::vector<SWD_indexingSeg> validExSegs;
|
|
||||||
for (int m = 0; m < (int)exSegs.size(); m++)
|
for (int m = 0; m < (int)exSegs.size(); m++)
|
||||||
{
|
{
|
||||||
double zDiff = exSegs[m].segMeanZ - highestZ;
|
double zDiff = exSegs[m].segMeanZ - highestZ;
|
||||||
@ -460,6 +463,7 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
validExSegs.push_back(exSegs[m]);
|
validExSegs.push_back(exSegs[m]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
vScanLineSegs.push_back(validExSegs);
|
vScanLineSegs.push_back(validExSegs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,6 +545,10 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
exSegs.push_back(a_seg);
|
exSegs.push_back(a_seg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<SWD_indexingSeg> validExSegs;
|
||||||
|
if (exSegs.size() > 0)
|
||||||
|
{
|
||||||
//去除低的段:如果两个段的meanZ相差达到工件高度的一半,视为低的段
|
//去除低的段:如果两个段的meanZ相差达到工件高度的一半,视为低的段
|
||||||
int highestSeg = 0;
|
int highestSeg = 0;
|
||||||
for (int m = 1; m < (int)exSegs.size(); m++)
|
for (int m = 1; m < (int)exSegs.size(); m++)
|
||||||
@ -550,7 +558,6 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
}
|
}
|
||||||
|
|
||||||
double highestZ = exSegs[highestSeg].segMeanZ;
|
double highestZ = exSegs[highestSeg].segMeanZ;
|
||||||
std::vector<SWD_indexingSeg> validExSegs;
|
|
||||||
for (int m = 0; m < (int)exSegs.size(); m++)
|
for (int m = 0; m < (int)exSegs.size(); m++)
|
||||||
{
|
{
|
||||||
double zDiff = exSegs[m].segMeanZ - highestZ;
|
double zDiff = exSegs[m].segMeanZ - highestZ;
|
||||||
@ -559,6 +566,7 @@ WD_workpieceInfo _computeWorkpiecePose(
|
|||||||
validExSegs.push_back(exSegs[m]);
|
validExSegs.push_back(exSegs[m]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
hScanLineSegs.push_back(validExSegs);
|
hScanLineSegs.push_back(validExSegs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1093,6 +1101,8 @@ void wd_HRM_RotorCorePositioning(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (roiLineIndice.nMax < roiLineIndice.nMin)
|
||||||
|
continue;
|
||||||
|
|
||||||
//生成ROI中的扫描数据
|
//生成ROI中的扫描数据
|
||||||
SWDScanPosition centerPosition = { 0, 0 };
|
SWDScanPosition centerPosition = { 0, 0 };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user