algoLib/sourceCode/SG_baseDataType.h

413 lines
8.1 KiB
C
Raw Normal View History

2025-06-08 10:46:41 +08:00
#pragma once
#include <VZNL_Types.h>
#include <vector>
#include <SG_errCode.h>
2025-06-08 10:46:41 +08:00
#define PI 3.141592654
// <20><><EFBFBD><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD>ǽṹ<C7BD><EFBFBD><E5A3A8>λ<EFBFBD><CEBB><EFBFBD>ȣ<EFBFBD>
typedef struct{
double roll; // <20><>X<EFBFBD><58><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double pitch; // <20><>Y<EFBFBD><59><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double yaw; // <20><>Z<EFBFBD><5A><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
}SSG_EulerAngles;
//<2F>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>ΪX<CEAA><58><><EFBFBD>򣩣<EFBFBD>ƽ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>ᴹֱ<E1B4B9><D6B1><EFBFBD><EFBFBD>ΪY<CEAA><EFBFBD><E1A3AC>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪZ<CEAA><5A>
typedef struct
{
bool validFlag; //ָʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
double x;
double y;
double z;
double pitchAngle; //<2F><><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>ƫת, <20><><EFBFBD><EFBFBD>
double rollAngle; //<2F><>ת<EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>ƫת, <20><><EFBFBD><EFBFBD>
double yawAngle; //ƫת<C6AB>ǣ<EFBFBD><C7A3><EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>ƫת, <20><><EFBFBD><EFBFBD>
}SSG_6AxisAttitude;
typedef struct
{
bool validFlag; //ָʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
double x;
double y;
double z;
}SSG_3AxisAttitude;
typedef enum
{
keSG_PoseSorting_Uknown = 0,
keSG_PoseSorting_ZMin2Max, ///<2F><>Z<EFBFBD><5A><EFBFBD><EFBFBD>
keSG_PoseSorting_L2R_T2B, ///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
keSG_PoseSorting_T2B_L2R, ///<2F><><EFBFBD>ϵ<EFBFBD><CFB5>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} ESG_poseSortingMode;
typedef struct
{
int data_0;
int data_1;
int idx;
}SSG_intPair;
typedef struct
{
double left;
double right;
double top;
double bottom;
}SSG_ROIRectD;
struct HSV {
double h; // ɫ<><C9AB> (0-360)
double s; // <20><><EFBFBD>Ͷ<EFBFBD> (0-1)
double v; // <20><><EFBFBD><EFBFBD> (0-1)
};
struct RGB {
int r;
int g;
int b;
};
2025-06-08 10:46:41 +08:00
#define LINE_FEATURE_NUM 16
#define LINE_FEATURE_UNDEF 0
#define LINE_FEATURE_L_JUMP_H2L 1
#define LINE_FEATURE_L_JUMP_L2H 2
#define LINE_FEATURE_L_SLOPE_H2L 3
#define LINE_FEATURE_L_SLOPE_L2H 4
#define LINE_FEATURE_V_SLOPE 5
#define LINE_FEATURE_LINE_ENDING_0 6 //ending<6E><67><EFBFBD><EFBFBD>
#define LINE_FEATURE_LINE_ENDING_1 7 //ending<6E>յ<EFBFBD>
#define LINE_FEATURE_RGN_EDGE 8 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ѿ<EFBFBD><D1BE>õ<EFBFBD><C3B5><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ı<EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define LINE_FEATURE_RIGHT_ANGLE_HR 9 //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ˮƽ-<2D><><EFBFBD><EFBFBD>
#define LINE_FEATURE_RIGHT_ANGLE_HF 10 //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:ˮƽ-<2D>½<EFBFBD>
#define LINE_FEATURE_RIGHT_ANGLE_RH 11 //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>-ˮƽ
#define LINE_FEATURE_RIGHT_ANGLE_FH 12 //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>½<EFBFBD>-ˮƽ
#define LINE_FEATURE_PEAK_TOP 13
#define LINE_FEATURE_PEAK_BOTTOM 14
#define LINE_FEATURE_CORNER_V 15
typedef struct
{
int featureType;
SVzNL2DPoint jumpPos2D;
SVzNL3DPoint jumpPos;
double featureValue;
2025-06-08 10:46:41 +08:00
}SSG_basicFeature1D;
typedef struct
{
int lineIdx;
double gap_start;
double gap_width;
double gap_depth;
SVzNL3DPosition gapPt_0; //gap<61>Ķ˵<C4B6>
SVzNL3DPosition gapPt_1; //gap<61>Ķ˵<C4B6>
SSG_ROIRectD roi;
}SSG_basicFeatureGap;
#define FEATURE_FLAG_UNDEF 0
#define FEATURE_FLAG_INVLD_START 1
#define FEATURE_FLAG_INVLD_END 2
#define FEATURE_FLAG_VALID_START 3
#define FEATURE_FLAG_VALID_END 4
#define FEATURE_FLAG_INVALID 5
2025-06-08 10:46:41 +08:00
typedef struct
{
int flag;
int lineIdx;
int startPtIdx;
int endPtIdx;
int midPtIdx;
SVzNL3DPoint midPt;
2025-06-08 10:46:41 +08:00
double width;
double pkHeight;
}SSG_featureSemiCircle;
typedef struct
{
int lineIdx;
std::vector<SSG_basicFeature1D> features;
std::vector<SSG_basicFeature1D> endings;
}SSG_lineFeature;
typedef struct
{
/* <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD>С<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
double continuityTh; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD>ʹ<EFBFBD><CAB9>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊz<CEAA><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> */
double outlierTh;
}SSG_outlierFilterParam;
typedef struct
{
double LSlopeZWin; //<2F><>L<EFBFBD><4C>Slope<70><65><EFBFBD><EFBFBD><EFBFBD>¶ȼ<C2B6><C8BC><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>ڳ<EFBFBD><DAB3><EFBFBD>
double validSlopeH;
double minLJumpH;
double minEndingGap;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}SSG_slopeParam;
typedef struct
{
2025-07-18 16:27:34 +08:00
double minEndingGap; //y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double minEndingGap_z; //z<><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-06-08 10:46:41 +08:00
double scale; //<2F><><EFBFBD><EFBFBD><E3B7BD><EFBFBD>ǵĴ<C7B5><C4B4>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>
double cornerTh; //<2F>ս<EFBFBD><D5BD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD>յ<EFBFBD>
double jumpCornerTh_1; //<2F>жϹս<CFB9><D5BD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><DEA1><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>޴<EFBFBD><DEB4><EFBFBD>jumpCornerTh_1<5F><31><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>С<EFBFBD><D0A1>jumpCornerTh_2ʱ<32><CAB1><EFBFBD><EFBFBD>
double jumpCornerTh_2;
}SSG_cornerParam;
typedef struct
{
double scale_angle; //<2F><><EFBFBD><EFBFBD><E3B7BD><EFBFBD>ǵĴ<C7B5><C4B4>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>
double scale_corner; //<2F><><EFBFBD><EFBFBD><E3B7BD><EFBFBD><EFBFBD>ת<EFBFBD>ǵĴ<C7B5><C4B4>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>
double cornerTh; //<2F>ս<EFBFBD><D5BD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ޣ<EFBFBD>Ϊ<EFBFBD><CEAA>ЧArc
}SSG_gloveArcParam;
2025-06-08 10:46:41 +08:00
typedef struct
{
double H_len; //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮƽ<CBAE>εij<CEB5><C4B3><EFBFBD>
double V_len; //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>εij<CEB5><C4B3><EFBFBD>
double maxDelta;
}SSG_lineRightAngleParam;
typedef struct
{
double valleyMinH;
double valleyMaxW;
}SSG_VFeatureParam;
typedef struct
{
double sameGapTh;
int gapChkWin;
}SSG_tearFeatureExtactPara;
typedef struct
{
double yDeviation_max;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><59><C6AB>
double zDeviation_max; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><5A><C6AB>
int maxLineSkipNum; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD> -1ʱʹ<CAB1><CAB9>maxDkipDistance
double maxSkipDistance; //<2F><>maxLineSkipNumΪ-1<><31> ʹ<>ô˲<C3B4><CBB2><EFBFBD>.<2E><>Ϊ-1ʱ<31><CAB1><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>Ч
double minLTypeTreeLen; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵĽڵ<C4BD><DAB5><EFBFBD>Ŀ<EFBFBD><C4BF>С<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
double minVTypeTreeLen; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵĽڵ<C4BD><DAB5><EFBFBD>Ŀ<EFBFBD><C4BF>С<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
}SSG_treeGrowParam;
typedef struct
{
double bagL; //<2F><>
double bagW; //<2F><>
double bagH; //<2F><>
}SSG_bagParam;
typedef struct
{
ESG_poseSortingMode sortMode;
}SSG_objSortParam;
typedef struct
{
double angleStep;
double radiusStep;
}SSG_polarScanParam;
typedef struct
{
int treeState;
int treeType;
int sLineIdx;
int eLineIdx;
double tree_value;
2025-06-08 10:46:41 +08:00
SSG_ROIRectD roi;
std::vector< SSG_basicFeature1D> treeNodes;
}SSG_featureTree;
typedef struct
{
int treeState;
int treeType;
int sLineIdx;
int eLineIdx;
SSG_ROIRectD roi;
SVzNL3DPoint centerPt;
SVzNL2DPoint centerPos;
int treeMidType; //1:<3A>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ӹ<EFBFBD>
2025-06-08 10:46:41 +08:00
std::vector< SSG_featureSemiCircle> treeNodes;
}SSG_semiCircleFeatureTree;
typedef struct
{
int vTreeFlag;
int treeIdx;
int treeType;
int sLineIdx;
int eLineIdx;
SSG_ROIRectD roi;
}SSG_treeInfo;
typedef struct
{
int seachW_lines;
int searchW_pts;
}SSG_localPkParam;
typedef struct
{
int x;
int y;
int value;
double valueD;
int sideID; //1-T, 2-B, 3-L, 4-R
}SSG_2DValueI;
typedef struct
{
int start;
int len;
int value;
}SSG_RUN;
typedef struct
{
double mean;
double var;
}SSG_meanVar;
typedef struct
{
int x;
int y;
int type;
int edgeId;
int blockFlag;//<2F>ڵ<EFBFBD><DAB5><EFBFBD>־
double scanDist;
SVzNL3DPoint edgePt;
}SSG_contourPtInfo;
typedef struct
{
int lineIdx;
std::vector<SSG_contourPtInfo> contourPts;
}SSG_lineConotours;
typedef struct
{
int lineIdx;
int edgeId_0;
int edgeId_1;
double ptPairDist;
SSG_contourPtInfo contourPt_0;
SSG_contourPtInfo contourPt_1;
}SSG_conotourPair;
typedef struct
{
double x;
double y;
double z;
double x_roll;
double y_pitch;
double z_yaw;
}SSG_6DOF;
typedef struct
{
double L;
double W;
double H;
double angle;
SVzNL3DPoint endings[4];
} SSG_boxCarDimension;
typedef struct
{
SVzNL3DPoint opCenter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
int neighbourNum; //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double opAngle; //<2F><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>120<32>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>Ƕȡ<C7B6><C8A1><EFBFBD>Y<EFBFBD><59>Ϊ<EFBFBD><CEAA>׼<EFBFBD>Ƕȣ<C7B6>0<EFBFBD><30>)
double obstacleDist; //<2F><><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ϰ<EFBFBD><CFB0>ľ<EFBFBD><C4BE><EFBFBD>
}SSG_motorStatorPosition;
typedef struct
{
int pkRgnIdx;
SVzNLSizeD objSize;
SVzNL2DPoint pos2D;
SSG_6DOF centerPos;
}SSG_peakRgnInfo;
typedef struct
{
int pkRgnIdx;
SVzNLSizeD objSize;
SVzNL2DPoint pos2D;
SSG_6DOF centerPos;
int orienFlag; //0-δ֪<CEB4><D6AA>1 - <20><><EFBFBD>棬 2-<2D><><EFBFBD><EFBFBD>
}SSG_peakOrienRgnInfo;
2025-06-08 10:46:41 +08:00
typedef struct
{
SVzNL3DPoint sPt;
SVzNL3DPoint ePt;
double scanDist;
int ptNum;
}SSG_contourEdgeInfo;
typedef struct
{
double meanDist;
double varDist;
double minDist;
double maxDist;
int matchNum;
int level2_num; //level2Ϊ<32>߿<EFBFBD><DFBF>Ŷ<EFBFBD>(<28><><EFBFBD><EFBFBD>ΪJump<6D><70>Ending;
int level1_num; //level1-Ϊ<>п<EFBFBD><D0BF>Ŷȣ<C5B6>һ<EFBFBD><D2BB>ΪJump<6D><70>Ending<6E><67>
SSG_ROIRectD roi;
}SSG_edgeMatchInfo;
typedef struct
{
int id1;
int id2;
int matchPts;
int matchType; //<2F><><EFBFBD>Ŷȣ<C5B6><32>߿<EFBFBD><DFBF>Ŷ<EFBFBD>(<28><><EFBFBD><EFBFBD>ΪJump<6D><70>Ending; 1-Ϊ<>п<EFBFBD><D0BF>Ŷȣ<C5B6>һ<EFBFBD><D2BB>ΪJump<6D><70>Ending<6E><67><EFBFBD><EFBFBD>0-Ϊ<>Ϳ<EFBFBD><CDBF>Ŷ<EFBFBD>
double matchValue;
double varValue;
double minMatchValue;
double maxMatchValue;
SSG_ROIRectD roi;
}SSG_matchPair;
typedef struct
{
int objIdx;
bool isValid; //<2F>Ƿ<EFBFBD>Ϊ<EFBFBD>ϸ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EAA1A3><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ɨ<EFBFBD><EFBFBD><E8B5BD><EFBFBD>ߣ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ϸ<EFBFBD>Ŀ<EFBFBD><C4BF>
SSG_ROIRectD objROI;
SVzNL3DPoint objPos;
SSG_6DOF graspPos;
}SSG_sideBagInfo;
typedef struct
{
SVzNLRect roi;
int ptCounter;
int labelID;
}SSG_Region;
typedef struct
{
double planeCalib[9]; //<2F><>ת<EFBFBD><D7AA><EFBFBD>󣬽<EFBFBD><F3A3ACBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>ƽ
double planeHeight;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ĸ߶ȣ<DFB6><C8A3><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double invRMatrix[9]; //<2F><>ת<EFBFBD><D7AA><EFBFBD>󣬻ص<F3A3ACBB>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ϵ
}SSG_planeCalibPara;
typedef struct
{
int pntIdx;
double forwardAngle; //ǰ<><C7B0><EFBFBD><EFBFBD>
double backwardAngle; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double corner; //<2F>ս<EFBFBD>
double forwardDiffZ;
double backwardDiffZ;
double pre_stepDist;
double post_stepDist;
}SSG_pntDirAngle;