备份
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
|
||||
|
||||
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.
Reference in New Issue
Block a user