84 lines
2.4 KiB
C
84 lines
2.4 KiB
C
|
|
#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
|