algoLib/sourceCode/workpieceHolePositioning_Export.h
2026-03-25 18:24:56 +08:00

69 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "SG_algo_Export.h"
#include <vector>
#define _OUTPUT_DEBUG_DATA 1
typedef struct
{
int workpieceType;
double holeDiameter; //孔直径
double holeDist_L; //孔间距_长
double holeDist_W; //孔间距_宽
double xLen; //x方向长 用于结果排序
double yLen; //y方向长 用于结果排序
double H;
}WD_workpieceHoleParam;
typedef struct
{
int workpieceType;
std::vector<SVzNL3DPoint> holes;
std::vector<SVzNL3DPoint> holesDir;
SVzNL3DPoint center;
SVzNL3DPoint z_dir; //z方向向量归一化
SVzNL3DPoint y_dir; //y方向向量归一化
SVzNL3DPoint x_dir; //x方向向量归一化
}WD_workpieceInfo;
typedef struct
{
SVzNL3DPoint center;
SVzNL3DPoint normDir; //方向向量(归一化)
}WD_HolePositionInfo;
//读版本号
SG_APISHARED_EXPORT const char* wd_workpieceHolePositioningVersion(void);
//相机水平安装计算地面调平参数。。
//旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数
SG_APISHARED_EXPORT SSG_planeCalibPara wd_getGroundCalibPara(
std::vector< std::vector<SVzNL3DPosition>>& scanLines);
//相机水平时姿态调平,并去除地面
SG_APISHARED_EXPORT void wd_lineDataR(
std::vector< SVzNL3DPosition>& a_line,
const double* camPoseR,
double groundH);
//工件孔定位-拓普发工件孔定位
SG_APISHARED_EXPORT void wd_workpieceHolePositioning(
std::vector< std::vector<SVzNL3DPosition>>& scanLinesInput,
const WD_workpieceHoleParam workpiecePara,
const SSG_lineSegParam lineSegPara,
const SSG_outlierFilterParam filterParam,
const SSG_treeGrowParam growParam,
const SSG_planeCalibPara groundCalibPara,
std::vector< WD_workpieceInfo>& workpiecePositioning,
int* errCode);
//单个孔或凹坑定位-华航孔定位
SG_APISHARED_EXPORT void wd_HolePositioning(
std::vector< std::vector<SVzNL3DPosition>>& scanLinesInput,
const SSG_lineSegParam lineSegPara,
const SSG_cornerParam cornerParam,
const SSG_outlierFilterParam filterParam,
const SSG_treeGrowParam growParam,
std::vector< WD_HolePositionInfo>& holePositioning,
int* errCode);