58 lines
1.9 KiB
C++
58 lines
1.9 KiB
C++
#ifndef IYSTATORWORKPIECEPOSITIONSTATUS_H
|
||
#define IYSTATORWORKPIECEPOSITIONSTATUS_H
|
||
|
||
#include <string>
|
||
#include <functional>
|
||
#include <vector>
|
||
#include <QImage>
|
||
#include <QMetaType>
|
||
|
||
// 使用 AppCommon 提供的通用接口和类型
|
||
#include "IVisionApplicationStatus.h"
|
||
|
||
struct WorkpiecePoint3D {
|
||
double x = 0.0;
|
||
double y = 0.0;
|
||
double z = 0.0;
|
||
|
||
WorkpiecePoint3D() = default;
|
||
WorkpiecePoint3D(double xValue, double yValue, double zValue)
|
||
: x(xValue), y(yValue), z(zValue) {}
|
||
};
|
||
|
||
// 机械臂六轴位姿和算法原始工件数据同时保留,供 UI 与协议层使用。
|
||
struct WorkpiecePosition : public PositionData<double> {
|
||
int workpieceType = 0;
|
||
int sourceDetectionIndex = -1;
|
||
double value = 0.0;
|
||
// 原始算法中心经手眼矩阵变换后的机器人坐标,不包含工具 offset;
|
||
// PositionData::x/y/z 才是加入工具 offset 后的最终目标点。
|
||
WorkpiecePoint3D center;
|
||
WorkpiecePoint3D xDir;
|
||
WorkpiecePoint3D yDir;
|
||
WorkpiecePoint3D zDir;
|
||
|
||
WorkpiecePosition() = default;
|
||
WorkpiecePosition(const WorkpiecePosition&) = default;
|
||
WorkpiecePosition& operator=(const WorkpiecePosition&) = default;
|
||
};
|
||
|
||
struct StatorWorkpiecePositionDetectionResult : public DetectionResultData<WorkpiecePosition> {
|
||
StatorWorkpiecePositionDetectionResult() = default;
|
||
StatorWorkpiecePositionDetectionResult(const StatorWorkpiecePositionDetectionResult&) = default;
|
||
StatorWorkpiecePositionDetectionResult& operator=(const StatorWorkpiecePositionDetectionResult&) = default;
|
||
};
|
||
|
||
// 状态回调接口
|
||
class IYStatorWorkpiecePositionStatus : public IVisionApplicationStatus<StatorWorkpiecePositionDetectionResult>
|
||
{
|
||
public:
|
||
virtual ~IYStatorWorkpiecePositionStatus() = default;
|
||
};
|
||
|
||
Q_DECLARE_METATYPE(WorkpiecePoint3D)
|
||
Q_DECLARE_METATYPE(WorkpiecePosition)
|
||
Q_DECLARE_METATYPE(StatorWorkpiecePositionDetectionResult)
|
||
|
||
#endif // IYSTATORWORKPIECEPOSITIONSTATUS_H
|