#pragma once #include "SG_algo_Export.h" #include typedef enum { keSX_ScanMode_V = 0, //激光线垂直焊缝扫描 keSX_ScanMode_H, //激光线平行焊缝扫描 keSX_ScanMode_Both, //既有垂直扫描,也有水平扫描 } ESX_WeldScanMode; typedef struct { double lapHeight;//搭接厚度 double weldMinLen; //最小焊缝长度,用于过滤可能的虚假焊缝 int weldRefPoints; //输出的直线焊缝的参考点,默认是2个(起点和终点) ESX_WeldScanMode scanMode; }SSX_lapWeldParam; typedef struct { SWD_segFeature startSeg; SWD_segFeature curSegBuff[5]; int bufCounter; }SWD_weldSegment; SG_APISHARED_EXPORT const char* wd_weldSeamAlgoVersion(void); //计算一个平面调平参数。 //数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平 //旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数 SG_APISHARED_EXPORT SSG_planeCalibPara sx_getBaseCalibPara( std::vector< std::vector>& scanLines); //相机姿态调平,并去除地面 SG_APISHARED_EXPORT void sx_lineDataR( std::vector< SVzNL3DPosition>& a_line, const double* camPoseR, double groundH); //提取搭接焊缝 SG_APISHARED_EXPORT void sx_getLapWeldPostion( std::vector< std::vector>& scanLines, const SSG_cornerParam cornerPara, SSG_treeGrowParam growParam, SSX_lapWeldParam lapWeldParam, SSG_planeCalibPara groundCalibPara, std::vector>& objOps, int* errCode); //检查焊板的起始位置 SG_APISHARED_EXPORT void BQ_checkWeldingStartLine( std::vector& a_line, const int lineIdx, const double innerPara_lineDeviTh, //扫描线是直线的判断门限:点到起点终点构成直线的距离的最大值 const double innerPara_endingZDeviTh, //连续面扫描线端点的Z偏离最大门限 const double innerPara_endingDistTh, //连线面扫描线端点距离最大门限 SWD_weldSegment& weldStartLine); //计算焊缝位置 SG_APISHARED_EXPORT void BQ_getWeldSeamPose( std::vector& trees, const SWD_segFeature& weldingStartLine, const SWD_segFeature& weldingEndLine, int weldRefPoints, //焊缝中间参考点位置 std::vector& weldOps, //焊缝位置 std::vector& weldRawPoints, //用于显示和debug int* errCode);