备份
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user