105 lines
2.8 KiB
C++
105 lines
2.8 KiB
C++
#ifndef IYDISCHOLEPOSESTATUS_H
|
|
#define IYDISCHOLEPOSESTATUS_H
|
|
|
|
#include <string>
|
|
#include <functional>
|
|
#include <vector>
|
|
#include <QImage>
|
|
#include <QMetaType>
|
|
|
|
#include "IVisionApplicationStatus.h"
|
|
|
|
// WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义
|
|
|
|
// 砂轮盘孔信息结构体
|
|
struct DiscHoleInfo {
|
|
// 孔中心点
|
|
double centerX = 0.0;
|
|
double centerY = 0.0;
|
|
double centerZ = 0.0;
|
|
|
|
// 孔的法向量方向
|
|
double normDirX = 0.0;
|
|
double normDirY = 0.0;
|
|
double normDirZ = 0.0;
|
|
|
|
DiscHoleInfo() = default;
|
|
|
|
DiscHoleInfo(double cx, double cy, double cz,
|
|
double nx, double ny, double nz)
|
|
: centerX(cx), centerY(cy), centerZ(cz)
|
|
, normDirX(nx), normDirY(ny), normDirZ(nz) {}
|
|
|
|
DiscHoleInfo(const DiscHoleInfo&) = default;
|
|
DiscHoleInfo& operator=(const DiscHoleInfo&) = default;
|
|
};
|
|
|
|
// 砂轮盘架子信息结构体
|
|
struct DiscRackInfo {
|
|
// 架子中心点
|
|
double centerX = 0.0;
|
|
double centerY = 0.0;
|
|
double centerZ = 0.0;
|
|
|
|
// 姿态欧拉角(度)
|
|
double roll = 0.0;
|
|
double pitch = 0.0;
|
|
double yaw = 0.0;
|
|
|
|
DiscRackInfo() = default;
|
|
|
|
DiscRackInfo(double cx, double cy, double cz,
|
|
double r, double p, double yw)
|
|
: centerX(cx), centerY(cy), centerZ(cz)
|
|
, roll(r), pitch(p), yaw(yw) {}
|
|
|
|
DiscRackInfo(const DiscRackInfo&) = default;
|
|
DiscRackInfo& operator=(const DiscRackInfo&) = default;
|
|
};
|
|
|
|
// 位置结构体(继承自 PositionData 模板)
|
|
struct DiscHolePosition : public PositionData<double> {
|
|
|
|
DiscHolePosition() : PositionData<double>() {}
|
|
|
|
DiscHolePosition(double _x, double _y, double _z,
|
|
double _roll, double _pitch, double _yaw)
|
|
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
|
|
|
|
DiscHolePosition(const DiscHolePosition&) = default;
|
|
DiscHolePosition& operator=(const DiscHolePosition&) = default;
|
|
|
|
DiscHolePosition(const PositionData<double>& pos)
|
|
: PositionData<double>(pos) {}
|
|
};
|
|
|
|
// 检测结果结构体
|
|
struct DetectionResult : public DetectionResultData<DiscHolePosition> {
|
|
// 砂轮盘孔信息列表
|
|
std::vector<DiscHoleInfo> discHoleInfoList;
|
|
// 砂轮盘架子信息列表
|
|
std::vector<DiscRackInfo> discRackInfoList;
|
|
|
|
bool success = true;
|
|
QString message = "检测成功";
|
|
|
|
DetectionResult() = default;
|
|
|
|
DetectionResult(const DetectionResult&) = default;
|
|
DetectionResult& operator=(const DetectionResult&) = default;
|
|
};
|
|
|
|
// 状态回调接口
|
|
class IYDiscHolePoseStatus : public IVisionApplicationStatus<DetectionResult>
|
|
{
|
|
public:
|
|
virtual ~IYDiscHolePoseStatus() = default;
|
|
};
|
|
|
|
Q_DECLARE_METATYPE(DiscHoleInfo)
|
|
Q_DECLARE_METATYPE(DiscRackInfo)
|
|
Q_DECLARE_METATYPE(DiscHolePosition)
|
|
Q_DECLARE_METATYPE(DetectionResult)
|
|
|
|
#endif // IYDISCHOLEPOSESTATUS_H
|