2026-07-03 19:21:24 +08:00

84 lines
2.4 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef IYJIURUIWORKPIECEPOSESTATUS_H
#define IYJIURUIWORKPIECEPOSESTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
#include "IVisionApplicationStatus.h"
// WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义
// 工件信息结构体(来自 Jiurui_getWorkpiecePose 返回的 SSG_pointPose
struct JiuruiWorkpieceInfo {
// 工件中心点Eye坐标系
double centerX = 0.0;
double centerY = 0.0;
double centerZ = 0.0;
// 工件姿态 X 轴方向向量
double poseXx = 0.0;
double poseXy = 0.0;
double poseXz = 0.0;
// 工件姿态 Y 轴方向向量
double poseYx = 0.0;
double poseYy = 0.0;
double poseYz = 0.0;
// 工件姿态 Z 轴方向向量(法向)
double poseZx = 0.0;
double poseZy = 0.0;
double poseZz = 0.0;
JiuruiWorkpieceInfo() = default;
JiuruiWorkpieceInfo(const JiuruiWorkpieceInfo&) = default;
JiuruiWorkpieceInfo& operator=(const JiuruiWorkpieceInfo&) = default;
};
// 位置结构体(继承自 PositionData 模板)
struct JiuruiWorkpiecePosition : public PositionData<double> {
JiuruiWorkpiecePosition() : PositionData<double>() {}
JiuruiWorkpiecePosition(double _x, double _y, double _z,
double _roll, double _pitch, double _yaw)
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
JiuruiWorkpiecePosition(const JiuruiWorkpiecePosition&) = default;
JiuruiWorkpiecePosition& operator=(const JiuruiWorkpiecePosition&) = default;
JiuruiWorkpiecePosition(const PositionData<double>& pos)
: PositionData<double>(pos) {}
};
// 检测结果结构体
struct DetectionResult : public DetectionResultData<JiuruiWorkpiecePosition> {
// 工件信息列表
std::vector<JiuruiWorkpieceInfo> workpieceInfoList;
bool success = true;
QString message = "检测成功";
DetectionResult() = default;
DetectionResult(const DetectionResult&) = default;
DetectionResult& operator=(const DetectionResult&) = default;
};
// 状态回调接口
class IYJiuruiWorkpiecePoseStatus : public IVisionApplicationStatus<DetectionResult>
{
public:
virtual ~IYJiuruiWorkpiecePoseStatus() = default;
};
Q_DECLARE_METATYPE(JiuruiWorkpieceInfo)
Q_DECLARE_METATYPE(JiuruiWorkpiecePosition)
Q_DECLARE_METATYPE(DetectionResult)
#endif // IYJIURUIWORKPIECEPOSESTATUS_H