Compare commits

..

No commits in common. "a67f02ceba13bc4d69b8a3bcf63d7502b2aa21e1" and "b72226f4cf596461642125d2f65d21a3aac1d39a" have entirely different histories.

28 changed files with 30 additions and 133 deletions

View File

@ -3,8 +3,8 @@
#define WHEELMEASURE_VERSION_STRING "1.0.1"
#define WHEELMEASURE_BUILD_STRING "5"
#define WHEELMEASURE_FULL_VERSION_STRING "V" WHEELMEASURE_VERSION_STRING "_" WHEELMEASURE_BUILD_STRING
#define WHEELMEASURE_BUILD_STRING "4"
#define WHEELMEASURE_FULL_VERSION_STRING "V1.0.1.4"
// 获取版本信息的便捷函数
inline const char* GetWheelMeasureVersion() {

View File

@ -1,7 +1,4 @@
# 1.0.1
## build_5 2026-01-17
1. 更新算法 1.3.0
## build_4
1. 增加debug功能在检测前存储点云

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>659</width>
<height>453</height>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
@ -65,7 +65,7 @@
<property name="geometry">
<rect>
<x>170</x>
<y>400</y>
<y>350</y>
<width>101</width>
<height>38</height>
</rect>
@ -86,7 +86,7 @@
<property name="geometry">
<rect>
<x>380</x>
<y>400</y>
<y>350</y>
<width>111</width>
<height>38</height>
</rect>
@ -109,7 +109,7 @@
<x>130</x>
<y>110</y>
<width>511</width>
<height>271</height>
<height>221</height>
</rect>
</property>
<property name="font">
@ -135,7 +135,7 @@ padding: 5px;</string>
<rect>
<x>20</x>
<y>60</y>
<width>634</width>
<width>621</width>
<height>41</height>
</rect>
</property>

View File

@ -72,7 +72,7 @@ struct WheelCornerParam
double minEndingGap = 20.0; // y方向最短结束间隙
double minEndingGap_z = 20.0; // z方向最短结束间隙
double scale = 50.0; // 计算方向角的窗口比例
double cornerTh = 45.0; // 空角阈值,大于此阈值为有效空点
double cornerTh = 60.0; // 空角阈值,大于此阈值为有效空点
double jumpCornerTh_1 = 10.0; // 判断空角是否为跳变的阈值
double jumpCornerTh_2 = 60.0; // 判断空角是否为跳变的阈值
};

View File

@ -139,6 +139,9 @@ int DetectPresenter::DetectWorkpiece(
if(cameraCalibParam){
LOG_DEBUG("Processing data with plane calibration\n");
double groundH = -1;
#ifdef _WIN32
groundH = 1780;
#endif
for(size_t i = 0; i < xyzData.size(); i++){
sx_BQ_lineDataR(xyzData[i], cameraCalibParam->planeCalib, groundH);
}

View File

@ -473,19 +473,6 @@ bool WorkpiecePresenter::CalculatePlaneCalibration(
// 调用工件项目的调平算法
SSG_planeCalibPara calibResult = sx_BQ_getBaseCalibPara(xyzData);
// 打印算法返回结果
LOG_INFO("=== sx_BQ_getBaseCalibPara 算法结果 ===\n");
LOG_INFO("planeHeight: %.6f\n", calibResult.planeHeight);
LOG_INFO("planeCalib (调平旋转矩阵):\n");
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.planeCalib[0], calibResult.planeCalib[1], calibResult.planeCalib[2]);
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.planeCalib[3], calibResult.planeCalib[4], calibResult.planeCalib[5]);
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.planeCalib[6], calibResult.planeCalib[7], calibResult.planeCalib[8]);
LOG_INFO("invRMatrix (逆旋转矩阵):\n");
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.invRMatrix[0], calibResult.invRMatrix[1], calibResult.invRMatrix[2]);
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.invRMatrix[3], calibResult.invRMatrix[4], calibResult.invRMatrix[5]);
LOG_INFO(" [%.6f, %.6f, %.6f]\n", calibResult.invRMatrix[6], calibResult.invRMatrix[7], calibResult.invRMatrix[8]);
LOG_INFO("========================================\n");
// 将结构体中的数据复制到输出参数
for (int i = 0; i < 9; i++) {
planeCalib[i] = calibResult.planeCalib[i];

View File

@ -3,8 +3,8 @@
#define WORKPIECE_VERSION_STRING "1.0.2"
#define WORKPIECE_BUILD_STRING "4"
#define WORKPIECE_FULL_VERSION_STRING "V" WORKPIECE_VERSION_STRING "_" WORKPIECE_BUILD_STRING
#define WORKPIECE_BUILD_STRING "3"
#define WORKPIECE_FULL_VERSION_STRING "V1.0.2.3"
// 获取版本信息的便捷函数
inline const char* GetWorkpieceVersion() {

View File

@ -1,9 +1,7 @@
# 1.0.2
## build_4 2026-01-09
1. 更新算法 1.3.0
## build_3 2025-12-17
1. 测试不同的工件
2.
## build_2 2025-12-14
1. 完善协议

View File

@ -265,18 +265,6 @@ typedef struct
int angleChkScalePos; //仅用于加速angleCheck的速度
}SSG_featureTree;
typedef struct
{
int treeState;
int treeType;
int sLineIdx;
int eLineIdx;
double tree_value;
SSG_ROIRectD roi;
std::vector< SSG_basicFeatureGap> treeNodes;
int angleChkScalePos; //仅用于加速angleCheck的速度
}SSG_gapFeatureTree;
typedef struct
{
int treeState;
@ -543,5 +531,4 @@ typedef struct
int clusterIdx;
int ptSize;
SVzNL3DRangeD roi3D;
SVzNLRect roi2D;
}SWD_clustersInfo;

View File

@ -649,22 +649,21 @@ void _outputRGBDScanLapWeld_RGBD(
#define CONVERT_TO_GRID 0
#define TEST_COMPUTE_CALIB_PARA 0
#define TEST_COMPUTE_CORNER 1
#define TEST_GROUP 8
#define TEST_GROUP 7
int main()
{
const char* dataPath[TEST_GROUP] = {
"F:/ShangGu/项目/冠钦_博清科技/数据/", //0
"F:/ShangGu/项目/冠钦_博清科技/数据/工件点云/角度1/", //1
"F:/ShangGu/项目/冠钦_博清科技/数据/工件点云/角度2/", //2
"F:/ShangGu/项目/冠钦_博清科技/数据/工件点云/角度3/", //3
"F:/ShangGu/项目/冠钦_博清科技/数据/工件点云/角度4/", //4
"F:/ShangGu/项目/冠钦_博清科技/数据/工件点云/", //5
"F:/ShangGu/项目/冠钦_博清科技/数据/顶板样式/", //6
"F:/ShangGu/项目/冠钦_博清科技/定位纠偏/现场数据/0107/", //7
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\", //0
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\工件点云\\角度1\\", //1
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\工件点云\\角度2\\", //2
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\工件点云\\角度3\\", //3
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\工件点云\\角度4\\", //4
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\工件点云\\", //5
"F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\顶板样式\\", //6
};
SVzNLRange fileIdx[TEST_GROUP] = {
{1,3}, {6,8}, {6,8}, {6,8}, {6,8}, {9,11}, {2,4}, {1,4}
{1,3}, {6,8}, {6,8}, {6,8}, {6,8}, {9,11}, {2,4}
};
#if CONVERT_TO_GRID
@ -691,7 +690,7 @@ int main()
#if TEST_COMPUTE_CALIB_PARA
char _calib_datafile[256];
sprintf_s(_calib_datafile, "%sLaserline_1.txt", dataPath[7]);
sprintf_s(_calib_datafile, "F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\顶板样式\\节点4.txt");
int lineNum = 0;
float lineV = 0.0f;
int dataCalib = 0;
@ -727,10 +726,10 @@ int main()
}
//
char calibFile[250];
sprintf_s(calibFile, "%sground_calib_para.txt", dataPath[7]);
sprintf_s(calibFile, "F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\顶板样式\\ground_calib_para.txt");
_outputCalibPara(calibFile, calibPara);
char _out_file[256];
sprintf_s(_out_file, "%sscanData_ground_1_calib.txt", dataPath[7]);
sprintf_s(_out_file, "F:\\ShangGu\\项目\\冠钦_博清科技\\数据\\顶板样式\\scanData_ground_1_calib.txt");
int headNullLines = 0;
_outputScanDataFile_vector(_out_file, scanData, false, &headNullLines);
printf("%s: calib done!\n", _calib_datafile);
@ -741,7 +740,7 @@ int main()
const char* ver = wd_BQWorkpieceCornerVersion();
printf("ver:%s\n", ver);
for (int grp = 6; grp <= 7; grp++)
for (int grp = 5; grp <= 6; grp++)
{
SSG_planeCalibPara poseCalibPara;
//初始化成单位阵
@ -769,8 +768,6 @@ int main()
sprintf_s(_scan_file, "%sscanData_%d_grid.txt", dataPath[grp], fidx);
else if(6 == grp)
sprintf_s(_scan_file, "%s节点%d.txt", dataPath[grp], fidx);
else if (7 == grp)
sprintf_s(_scan_file, "%sLaserline_%d.txt", dataPath[grp], fidx);
else
sprintf_s(_scan_file, "%s%d_LazerData_Hi229229.txt", dataPath[grp], fidx);
std::vector<std::vector< SVzNL3DPosition>> scanLines;
@ -823,10 +820,7 @@ int main()
growParam.minLTypeTreeLen = 100; //mm
growParam.minVTypeTreeLen = 100; //mm
SSX_BQworkpiecePara workpieceParam;
if(grp == 7)
workpieceParam.lineLen = 120.0; //直线段长度
else
workpieceParam.lineLen = 160.0; //直线段长度
workpieceParam.lineLen = 160.0; //直线段长度
int errCode = 0;
std::vector<SSX_debugInfo> debug_conturs;
SSX_BQworkpieceResult workpieceCorner = sx_BQ_getWorkpieceCorners(

View File

@ -48,17 +48,6 @@ typedef struct
int idx;
}SSG_intPair;
typedef struct
{
int featurType;
int featureIdx_v;
int featureIdx_h;
int clusterID;
int flag;
int lineIdx;
int ptIdx;
}SSG_featureClusteringInfo;
typedef struct
{
double left;
@ -168,13 +157,6 @@ typedef struct
double jumpCornerTh_2;
}SSG_cornerParam;
typedef struct
{
double segGapTh_y; //y方向连续段门限。大于此门限为不连续
double segGapTh_z; //z方向连续段门限。大于此门限为不连续
double maxDist; //计算方向角的窗口比例尺
}SSG_lineSegParam;
typedef struct
{
double scale_angle; //计算方向角的窗口比例尺
@ -265,18 +247,6 @@ typedef struct
int angleChkScalePos; //仅用于加速angleCheck的速度
}SSG_featureTree;
typedef struct
{
int treeState;
int treeType;
int sLineIdx;
int eLineIdx;
double tree_value;
SSG_ROIRectD roi;
std::vector< SSG_basicFeatureGap> treeNodes;
int angleChkScalePos; //仅用于加速angleCheck的速度
}SSG_gapFeatureTree;
typedef struct
{
int treeState;
@ -513,35 +483,4 @@ typedef struct
{
SVzNL3DPoint pt1;
SVzNL3DPoint pt2;
}SWD_3DPointPair;
typedef struct
{
int pkId;
int lineIdx;
int ptIdx;
int cptIndex; //圆周扫描上的点序
//double cornerAngle; //以点为中心的两侧弦的夹角
double R;
double angle;
double x;
double y;
double z;
}SWD_polarPt;
typedef struct
{
int cptIndex;
int L1_ptIndex;
int L2_ptIndex;
double cornerAngle;
int cornerDir;
}SWD_polarPeakInfo;
typedef struct
{
int clusterIdx;
int ptSize;
SVzNL3DRangeD roi3D;
SVzNLRect roi2D;
}SWD_clustersInfo;
}SWD_3DPointPair;

View File

@ -16,15 +16,7 @@
#define SX_ERR_ZERO_CONTOUR_PT -2005
#define SX_ERR_INVLID_RPEAK_NUM -2006
#define SX_ERR_INVLID_RPEAK_PAIR -2007
#define SX_ERR_INVLID_MARK_NUM -2008
//¶¨×Óץȡ
#define SX_ERR_INVLID_CUTTING_Z -2101
#define SX_ERR_ZERO_OBJ -2102
//拆包
#define SX_BAG_TRAY_EMPTY -2201
//汽车轮眉高度测量
#define SX_ERR_INVALID_ARC -2301
#define SX_ERR_ZERO_OBJ -2102