diff --git a/AppAlgo/workpieceHolePositioning/Arm/aarch64/libbaseAlgorithm.so b/AppAlgo/workpieceHolePositioning/Arm/aarch64/libbaseAlgorithm.so index 94937313..1182b17f 100644 Binary files a/AppAlgo/workpieceHolePositioning/Arm/aarch64/libbaseAlgorithm.so and b/AppAlgo/workpieceHolePositioning/Arm/aarch64/libbaseAlgorithm.so differ diff --git a/AppAlgo/workpieceHolePositioning/Arm/aarch64/libworkpieceHolePositioning.so b/AppAlgo/workpieceHolePositioning/Arm/aarch64/libworkpieceHolePositioning.so index 8584beed..2320ecdf 100644 Binary files a/AppAlgo/workpieceHolePositioning/Arm/aarch64/libworkpieceHolePositioning.so and b/AppAlgo/workpieceHolePositioning/Arm/aarch64/libworkpieceHolePositioning.so differ diff --git a/AppAlgo/workpieceHolePositioning/Inc/SG_baseAlgo_Export.h b/AppAlgo/workpieceHolePositioning/Inc/SG_baseAlgo_Export.h index c04266c3..71dddbf6 100644 --- a/AppAlgo/workpieceHolePositioning/Inc/SG_baseAlgo_Export.h +++ b/AppAlgo/workpieceHolePositioning/Inc/SG_baseAlgo_Export.h @@ -319,9 +319,8 @@ SG_APISHARED_EXPORT void wd_getXYVertialFeature_dirAngleMethod( /// SG_APISHARED_EXPORT void wd_getXYVertialFeature_perSeg_dirAngleMethod( std::vector< SVzNL3DPosition>& lineData, + std::vector& segs, int lineIdx, - const double maxDistTh, - const double minSegSize, const SSG_cornerParam cornerPara, std::vector& xyVerticalFlags ); @@ -338,6 +337,16 @@ SG_APISHARED_EXPORT void wd_getXYHorizontalFeature_dirAngleMethod( std::vector& xyHorizontalFlags ); +SG_APISHARED_EXPORT void wd_getRimConvexFeature( + std::vector< SVzNL3DPosition>& lineData, + std::vector& segs, + int lineIdx, + const SWDRimEdgeParam rimPara_1, + const SWDRimEdgeParam rimPara_2, + const SVzNLRangeD rimWidth, + std::vector& rimFeatures +); + /// 提取激光线上的拐点特征。是在PSM, LVTypeFeature, BQ等拐点算法的基础上的版本。 /// 使用平均点距进行加速 /// nPointIdx被重新定义成Feature类型 @@ -723,6 +732,14 @@ SG_APISHARED_EXPORT double fitCircleByLeastSquare_3( const std::vector& pointArray, SVzNL2DPointD& center, double& radius); +// 加权迭代最小二乘圆拟合(Huber权重或Tukey权重) +SG_APISHARED_EXPORT double fitCircleRobust( + const std::vector& points, + SVzNL3DPoint& robustCenter, + double& robustRadius, + double outlierThreshold = 2.5, // 标准差倍数 + int maxIter = 20, + double minPointsRatio = 0.5); //抛物线最小二乘拟合 y=ax^2 + bx + c SG_APISHARED_EXPORT bool leastSquareParabolaFitEigen( @@ -819,7 +836,7 @@ SG_APISHARED_EXPORT void SG_TwoPassLabel( //计算面参数: z = Ax + By + C //res: [0]=A, [1]= B, [2]=-1.0, [3]=C, SG_APISHARED_EXPORT void vzCaculateLaserPlane( - std::vector Points3ds, + std::vector& Points3ds, std::vector& res); SG_APISHARED_EXPORT Plane robustFitPlane( diff --git a/AppAlgo/workpieceHolePositioning/Inc/SG_baseDataType.h b/AppAlgo/workpieceHolePositioning/Inc/SG_baseDataType.h index 821cc80f..b7d09b1e 100644 --- a/AppAlgo/workpieceHolePositioning/Inc/SG_baseDataType.h +++ b/AppAlgo/workpieceHolePositioning/Inc/SG_baseDataType.h @@ -41,6 +41,17 @@ typedef struct double z; }SWD3DPoint; +typedef struct +{ + double cx, cy, r; +}SWD_Circle; + +typedef struct +{ + double rimEdgeAngleTh; + double rimCornerTh; +}SWDRimEdgeParam; + typedef struct { int lineIdx; diff --git a/AppAlgo/workpieceHolePositioning/Inc/workpieceHolePositioning_Export.h b/AppAlgo/workpieceHolePositioning/Inc/workpieceHolePositioning_Export.h index e59a95dd..e24b67d8 100644 --- a/AppAlgo/workpieceHolePositioning/Inc/workpieceHolePositioning_Export.h +++ b/AppAlgo/workpieceHolePositioning/Inc/workpieceHolePositioning_Export.h @@ -33,6 +33,13 @@ typedef struct double thickness; //轮胎宽度 }WD_tireParam; +typedef struct +{ + double len; //工件长 + double width; //工件宽度 + double thickness; +}WD_JiuruiWorkpieceParam; + typedef struct { SVzNL3DPoint center; @@ -43,6 +50,7 @@ typedef struct typedef struct { double rotorDiameter; + double rotorH; double removeGroundHOffset; //去除时的高度偏置,用于设置架子高度 double basket_L; //零件筐-长 double basket_W; //零件筐-宽 @@ -111,4 +119,13 @@ SG_APISHARED_EXPORT void sx_getRotorCorePose( const SSG_planeCalibPara groundCalibPara, const WD_rotorAppParam rotorParam, std::vector& rotorPositions, + int* errCode); + +//北京玖瑞工件定位 +SG_APISHARED_EXPORT void Jiurui_getWorkpiecePose( + std::vector< std::vector>& scanLinesInput, + const SSG_cornerParam cornerPara, + const SSG_planeCalibPara groundCalibPara, + const WD_JiuruiWorkpieceParam workpieceParam, + std::vector& tirePositions, int* errCode); \ No newline at end of file diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.dll b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.dll index ead72842..4e1967d6 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.dll and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.dll differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.lib b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.lib index b3783e23..e4b348b2 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.lib and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.lib differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.pdb b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.pdb index 19f0d635..c3f607a6 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.pdb and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/baseAlgorithm.pdb differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.dll b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.dll index d29c4313..3ecd1aae 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.dll and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.dll differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.lib b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.lib index 0a00d81a..66e70a56 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.lib and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.lib differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.pdb b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.pdb index b1a21d18..22ec4e8d 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.pdb and b/AppAlgo/workpieceHolePositioning/Windows/x64/Debug/workpieceHolePositioning.pdb differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.dll b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.dll index 4bd990e8..a8d68927 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.dll and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.dll differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.lib b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.lib index ff3cf2fa..3514a6b7 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.lib and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.lib differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.pdb b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.pdb index b29664da..9e35ad1b 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.pdb and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/baseAlgorithm.pdb differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.dll b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.dll index 2e7386d4..a31e5058 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.dll and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.dll differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.lib b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.lib index 593a36b3..5f2c04d1 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.lib and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.lib differ diff --git a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.pdb b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.pdb index 8e3a6b6a..95c4b3bd 100644 Binary files a/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.pdb and b/AppAlgo/workpieceHolePositioning/Windows/x64/Release/workpieceHolePositioning.pdb differ