algoLib/sourceCode/motorStatorPosition_Export.h
jerryzeng c1af27cf46 motorStatorPosition version 1.0.0
定子线圈抓取,初始版本
2026-02-18 10:14:11 +08:00

70 lines
1.9 KiB
C++
Raw Permalink 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
#if defined(SG_API_LIBRARY)
# define SG_APISHARED_EXPORT __declspec(dllexport)
#else
# define SG_APISHARED_EXPORT __declspec(dllimport)
#endif
#include "SG_baseDataType.h"
#include <vector>
typedef struct
{
double statorOuterD; //定子外直径
double statorInnerD; //定子内孔直径
double statorHeight; //定子高度
double plateThickness; //隔板厚度
double plateW;//隔板长
double plateH;//隔板宽
}SWD_statorParam;
typedef struct
{
SSG_outlierFilterParam filterParam;
SSG_cornerParam cornerParam;
SSG_treeGrowParam growParam;
}SWD_statorPositonParam;
typedef enum
{
keWD_OPERATE_Uknown = 0,
keSG_OPERATE_TOP_LAYER, //抓取上层
keSG_OPERATE_BTM_LAYER, //抓取下层
keSG_OPERATE_PLATE, //抓取隔板
} ESG_OpeationState;
typedef struct
{
SVzNL3DPoint refPos;
ESG_OpeationState opState; //指示前一目标参考位置是否有效
}SWD_statorGriperState;
//读版本号
SG_APISHARED_EXPORT const char* wd_particleSegVersion(void);
//计算一个平面调平参数。
//数据输入中可以有一个地平面和参考调平平面,以最高的平面进行调平
//旋转矩阵为调平参数,即将平面法向调整为垂直向量的参数
SG_APISHARED_EXPORT SSG_planeCalibPara wd_getBaseCalibPara(
std::vector< std::vector<SVzNL3DPosition>>& scanLines);
//相机姿态调平,并去除地面
SG_APISHARED_EXPORT void wd_lineDataR(
std::vector< SVzNL3DPosition>& a_line,
const double* camPoseR,
double groundH);
///数据输入必须是grid格式以进行水平方向和垂直方向的处理
//电机定子定位。
//算法逻辑:找到定子的高度->设置截取Z去掉底面->
// 投影(注意此时边框也同时投影)->距离变换->提取定子目标->
// 根据相邻和边框寻找最佳抓取目标和抓取点
SG_APISHARED_EXPORT void wd_motorStatorPosition(
std::vector< std::vector<SVzNL3DPosition>>& scanLinesInput,
const SWD_statorParam statorParam,
const SSG_planeCalibPara groundCalibPara,
const SWD_statorPositonParam algoParam,
SWD_statorGriperState* opState, //操作状态机。指示当前状态
int* errCode,
std::vector<SWD_statorInnerGrasper>& resultObjPositions);