99 lines
2.6 KiB
C++
99 lines
2.6 KiB
C++
#pragma once
|
||
|
||
#include "SG_algo_Export.h"
|
||
#include <vector>
|
||
|
||
#define _OUTPUT_DEBUG_DATA 1
|
||
|
||
typedef struct
|
||
{
|
||
SVzNL3DPoint center; //螺杆端部中心点
|
||
SVzNL3DPoint axialDir; //轴向向量
|
||
}SSX_rodPoseInfo; //
|
||
|
||
typedef struct
|
||
{
|
||
SVzNL3DPoint center; //螺杆端部中心点
|
||
SVzNL3DPoint xDir;
|
||
SVzNL3DPoint yDir;
|
||
SVzNL3DPoint normalDir; //法向向量
|
||
}SSX_pointPoseInfo; //
|
||
|
||
typedef struct
|
||
{
|
||
double diameter;
|
||
double len;
|
||
}SSX_rodParam; //棒材信息
|
||
|
||
typedef struct
|
||
{
|
||
SVzNL3DPoint center; //螺杆端部中心点
|
||
SVzNL3DPoint axialDir; //轴向向量
|
||
SVzNL3DPoint normalDir; //法向量
|
||
SVzNL3DPoint startPt;
|
||
SVzNL3DPoint endPt;
|
||
}SSX_rodPositionInfo;
|
||
|
||
typedef struct
|
||
{
|
||
SVzNL3DPoint startPt;
|
||
SVzNL3DPoint endPt;
|
||
SVzNL3DPoint center;
|
||
SVzNL3DPoint normalDir; //法向量
|
||
}SSX_weldSeamInfo;
|
||
|
||
//读版本号
|
||
SG_APISHARED_EXPORT const char* wd_rodAndBarDetectionVersion(void);
|
||
|
||
//计算一个平面调平参数。
|
||
//数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平
|
||
//旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数
|
||
SG_APISHARED_EXPORT SSG_planeCalibPara sx_rodPosition_getBaseCalibPara(
|
||
std::vector< std::vector<SVzNL3DPosition>>& scanLines);
|
||
|
||
#if 0
|
||
//相机姿态调平,并去除地面
|
||
SG_APISHARED_EXPORT void sx_rodPosition_lineDataR(
|
||
std::vector< SVzNL3DPosition>& a_line,
|
||
const double* camPoseR,
|
||
double groundH);
|
||
#endif
|
||
|
||
//六角头螺杆端部中心点和轴向测量
|
||
SG_APISHARED_EXPORT void sx_hexHeadScrewMeasure(
|
||
std::vector< std::vector<SVzNL3DPosition>>& scanLines,
|
||
bool isHorizonScan, //true:激光线平行槽道;false:激光线垂直槽道
|
||
const SSG_cornerParam cornerPara,
|
||
const SSG_outlierFilterParam filterParam,
|
||
const SSG_treeGrowParam growParam,
|
||
double rodDiameter,
|
||
std::vector<SSX_rodPoseInfo>& screwInfo,
|
||
int* errCode);
|
||
|
||
//计算定位盘中心点位姿
|
||
SG_APISHARED_EXPORT SSX_pointPoseInfo sx_getLocationPlatePose(
|
||
std::vector< std::vector<SVzNL3DPosition>>& scanLines,
|
||
const SSG_cornerParam cornerPara,
|
||
int* errCode);
|
||
|
||
//棒材抓取定位
|
||
SG_APISHARED_EXPORT void sx_rodPositioning(
|
||
std::vector< std::vector<SVzNL3DPosition>>& scanLines,
|
||
const SSG_planeCalibPara poseCalibPara,
|
||
const SSG_cornerParam cornerPara,
|
||
const SSG_outlierFilterParam filterParam,
|
||
const SSG_treeGrowParam growParam,
|
||
const SSX_rodParam rodParam,
|
||
std::vector<SSX_rodPositionInfo>& rodInfo,
|
||
int* errCode);
|
||
|
||
//筑裕钢结构钢筋焊缝定位
|
||
SG_APISHARED_EXPORT void sx_rebarWeldSeamPositioning(
|
||
std::vector< std::vector<SVzNL3DPosition>>& scanLines,
|
||
const SSG_planeCalibPara poseCalibPara,
|
||
const SSG_cornerParam cornerPara,
|
||
const SSG_outlierFilterParam filterParam,
|
||
const SSG_treeGrowParam growParam,
|
||
const SSX_rodParam rodParam,
|
||
std::vector<SSX_weldSeamInfo>& weldSeamInfo,
|
||
int* errCode); |