66 lines
2.7 KiB
C++
66 lines
2.7 KiB
C++
#ifndef IHANDEYECALIB_H
|
|
#define IHANDEYECALIB_H
|
|
|
|
#include <vector>
|
|
|
|
#include "HandEyeCalib_global.h"
|
|
#include "HandEyeCalibTypes.h"
|
|
|
|
// Public hand-eye calibration interface used by apps and tools in this repo.
|
|
// Keep this surface focused on workflows that are actually consumed.
|
|
class IHandEyeCalib
|
|
{
|
|
public:
|
|
virtual ~IHandEyeCalib() = default;
|
|
|
|
virtual int CalculateRT(const std::vector<HECPoint3D>& eyePoints,
|
|
const std::vector<HECPoint3D>& robotPoints,
|
|
HECCalibResult& result) = 0;
|
|
|
|
virtual int CalculateRT(const std::vector<HECCalibPointPair>& pointPairs,
|
|
HECCalibResult& result) = 0;
|
|
|
|
virtual void TransformPoint(const HECRotationMatrix& R,
|
|
const HECTranslationVector& T,
|
|
const HECPoint3D& srcPoint,
|
|
HECPoint3D& dstPoint) = 0;
|
|
|
|
virtual void RotatePoint(const HECRotationMatrix& R,
|
|
const HECPoint3D& srcPoint,
|
|
HECPoint3D& dstPoint) = 0;
|
|
|
|
virtual void RotationMatrixToEuler(const HECRotationMatrix& R,
|
|
HECEulerOrder order,
|
|
HECEulerAngles& angles) = 0;
|
|
|
|
virtual void EulerToRotationMatrix(const HECEulerAngles& angles,
|
|
HECEulerOrder order,
|
|
HECRotationMatrix& R) = 0;
|
|
|
|
virtual bool TransformPose(const HECCalibResult& calibResult,
|
|
const HECPoint3D& eyeCenter,
|
|
const HECPoint3D& longAxisDir,
|
|
const HECPoint3D& normalDir,
|
|
int dirVectorInvert,
|
|
HECEulerOrder eulerOrder,
|
|
HECLongAxisDir longAxisMapping,
|
|
HECPoseResult& poseResult) = 0;
|
|
|
|
virtual double CalculateError(const std::vector<HECPoint3D>& eyePoints,
|
|
const std::vector<HECPoint3D>& robotPoints,
|
|
const HECCalibResult& calibResult) = 0;
|
|
|
|
virtual int CalculateEyeInHand(const std::vector<HECEyeInHandData>& calibData,
|
|
HECCalibResult& result) = 0;
|
|
|
|
virtual HECTCPCalibResult CalculateTCP(const HECTCPCalibData& data) = 0;
|
|
|
|
virtual int CalculateEyeToHandWithPose(const std::vector<HECEyeToHandData>& calibData,
|
|
HECCalibResult& result) = 0;
|
|
};
|
|
|
|
IHandEyeCalib* CreateHandEyeCalibInstance();
|
|
void DestroyHandEyeCalibInstance(IHandEyeCalib* instance);
|
|
|
|
#endif // IHANDEYECALIB_H
|