This commit is contained in:
2024-08-27 10:46:43 +08:00
parent 4f76fa0c65
commit 84da863898
13 changed files with 42 additions and 11 deletions
@@ -347,9 +347,9 @@ void ALGO_Correction(std::shared_ptr <detData> data)
qDebug() << "productIndex:"<< data->productType <<"ox:" << resultPoints.Origin[0] << "oy : " << resultPoints.Origin[1] << "oz : " << resultPoints.Origin[2];
qDebug() << "Rx:" << point.x << "Ry:" << point.y << "Rz:" << point.z;
double baseOffsetX = data->_productDataStruct.basePos[0] - resultPoints.OriginX;
double baseOffsetY = data->_productDataStruct.basePos[1] - resultPoints.OriginY;
double baseOffsetZ = data->_productDataStruct.basePos[2] - resultPoints.OriginZ;
data->pointsOffsetStruct_.baseOffsetX = data->_productDataStruct.basePos[0] - resultPoints.OriginX;
data->pointsOffsetStruct_.baseOffsetY = data->_productDataStruct.basePos[1] - resultPoints.OriginY;
data->pointsOffsetStruct_.baseOffsetZ = data->_productDataStruct.basePos[2] - resultPoints.OriginZ;
//double offsetRx = data->_productDataStruct.baseRad[0] - point.x;
//double offsetRy = data->_productDataStruct.baseRad[1] - point.y;
@@ -369,12 +369,12 @@ void ALGO_Correction(std::shared_ptr <detData> data)
//offsetRy = doubleLmit(offsetRy, 3);
//offsetRz = doubleLmit(offsetRz, 3);
std::cout << "offsetX:" << baseOffsetX << "offsetY:" << baseOffsetY << "offsetZ:" << baseOffsetZ << std::endl;
std::cout << "offsetX:" << data->pointsOffsetStruct_.baseOffsetX << "offsetY:" << data->pointsOffsetStruct_.baseOffsetY << "offsetZ:" << data->pointsOffsetStruct_.baseOffsetZ << std::endl;
//std::cout << "offsetRx:" << offsetRx << "offsetRy:" << offsetRy << "offsetRz:" << offsetRz << std::endl;
createModbusStrs(310, baseOffsetX,data);
createModbusStrs(313, baseOffsetY, data);
createModbusStrs(316, baseOffsetZ, data);
createModbusStrs(310, data->pointsOffsetStruct_.baseOffsetX,data);
createModbusStrs(313, data->pointsOffsetStruct_.baseOffsetY, data);
createModbusStrs(316, data->pointsOffsetStruct_.baseOffsetZ, data);
//createModbusStrs(319, offsetRx, data);
//createModbusStrs(322, offsetRy, data);
+1 -1
View File
@@ -8,7 +8,7 @@ double templateMatchAndAngle(const cv::Mat& img, const cv::Mat& templ) {
// 执行模板匹配
cv::matchTemplate(img, templ, result, cv::TM_CCOEFF_NORMED);
// 通过 minMaxLoc 查找最佳匹配位置
double minVal, maxVal;
cv::Point minLoc, maxLoc;
+1
View File
@@ -29,6 +29,7 @@ public:
int algoThreadIndex = -1;
//检测参数
pointsOffsetStruct pointsOffsetStruct_;
correctionStruct laserData;
int armPos = -1;
int productType = -1;
@@ -66,8 +66,10 @@ void detThreadManager::process()
}
void detThreadManager::resultHandle(std::shared_ptr <detData> data)
{
for (auto func : resultHandleCallbacks)
func(data);
//for (auto func : resultHandleCallbacks)
// func(data);
if (data->algoThreadIndex < resultHandleCallbacks.size())
resultHandleCallbacks[data->algoThreadIndex](data);
}
void detThreadManager::run()
{
+23 -1
View File
@@ -18,7 +18,6 @@ public:
_cameraManager.initialization();
_triggerManager.initialization(this);
detProcessCallbackRegister();
}
//初始化
void run()
@@ -99,6 +98,7 @@ public:
_triggerManager.registerCallback(361, 2, [this](QByteArray& byteArray) {detectionSwitch2(byteArray); }, "检测结束1");
_triggerManager.registerCallback(362, 1, [this](QByteArray& byteArray) {detectionEnd(byteArray); }, "检测结束2");
_threadManager.registerCallback([this](std::shared_ptr<detData>data) {correctionResultHandle(data); });
_threadManager.registerCallback([this](std::shared_ptr<detData>data) {detectionResultHandle(data); });
}
//检测程序是否在运行
@@ -106,6 +106,7 @@ public:
int backArmIndex = -1;
bool currentBack = false;
//激光校准数据缓存 //SN 数据
pointsOffsetStruct lastPointsOffsetStruct_;
correctionStruct laserDataCache;
//总流程开始,机器人发送1至寄存器259
//上位机确认OK之后,清零寄存器259,并发送1至寄存器260
@@ -331,6 +332,11 @@ public:
}
}
//校准结果处理
void correctionResultHandle(std::shared_ptr<detData>data)
{
lastPointsOffsetStruct_ = data->pointsOffsetStruct_;
}
//检测结果处理
void detectionResultHandle(std::shared_ptr<detData>data)
{
@@ -442,6 +448,22 @@ public slots:
currentBack = true;
_triggerManager.sendFinsMsg("write_short_350_" + QString::number(backArmIndex));//清零
_triggerManager.sendFinsMsg("write_short_351_1");
qDebug() << "运行背后检测程序";
_triggerManager.sendFinsMsg("write_short_310_" + QString::number(lastPointsOffsetStruct_.baseOffsetX < 0 ? 2 : 1));
_triggerManager.sendFinsMsg("write_short_311_"+QString::number(abs(static_cast<int>(lastPointsOffsetStruct_.baseOffsetX))));
double pvalueX = lastPointsOffsetStruct_.baseOffsetX - static_cast<int>(lastPointsOffsetStruct_.baseOffsetX);
_triggerManager.sendFinsMsg("write_short_312_" + QString::number(static_cast<int>(abs(pvalueX * 100))));
_triggerManager.sendFinsMsg("write_short_313_" + QString::number(lastPointsOffsetStruct_.baseOffsetY < 0 ? 2 : 1));
_triggerManager.sendFinsMsg("write_short_314_" + QString::number(abs(static_cast<int>(lastPointsOffsetStruct_.baseOffsetY))));
double pvalueY = lastPointsOffsetStruct_.baseOffsetY - static_cast<int>(lastPointsOffsetStruct_.baseOffsetY);
_triggerManager.sendFinsMsg("write_short_315_" + QString::number(static_cast<int>(abs(pvalueY * 100))));
_triggerManager.sendFinsMsg("write_short_316_" + QString::number(lastPointsOffsetStruct_.baseOffsetZ < 0 ? 2 : 1));
_triggerManager.sendFinsMsg("write_short_317_" + QString::number(abs(static_cast<int>(lastPointsOffsetStruct_.baseOffsetZ))));
double pvalueZ = lastPointsOffsetStruct_.baseOffsetZ - static_cast<int>(lastPointsOffsetStruct_.baseOffsetZ);
_triggerManager.sendFinsMsg("write_short_318_" + QString::number(static_cast<int>(abs(pvalueZ * 100))));
}
}
void writeArmStartSignal(int productTypeIn, QString SN)
+6
View File
@@ -61,6 +61,12 @@ struct imageDoubleCheckPack
int armPos;
int type;//1 halcon 2ai
};
struct pointsOffsetStruct
{
double baseOffsetX;
double baseOffsetY;
double baseOffsetZ;
};
static QImage cvMatToQImage(cv::Mat& src)
{
if (src.channels() == 1) { // if grayscale image
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.