GrabBag/SDK/Device/VzNLSDK/Inc/VZNL_EyeHandPosConvert.h

135 lines
3.4 KiB
C
Raw Normal View History

2026-03-17 22:27:58 +08:00
#ifndef __VIZUM_HANDEYECONVERT_HEADER__
#define __VIZUM_HANDEYECONVERT_HEADER__
#include "VZNL_Export.h"
#include "VZNL_Types.h"
/// @brief
/// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef void* VZEHPCHANDLE;
// <20><EFBFBD><EAB6A8>ʽ
enum EVzHandEyeConvertType
{
EVzHandEyeConvertType_Eye_In_Hand = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EVzHandEyeConvertType_Eye_To_Hand = 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
enum EVzRPYSeqConvertType
{
RPYSeqConvertType_S_ZYX,
RPYSeqConvertType_S_XYZ,
RPYSeqConvertType_S_XZY,
RPYSeqConvertType_S_YXZ,
RPYSeqConvertType_S_YZX,
RPYSeqConvertType_S_ZXY,
RPYSeqConvertType_R_XYZ
};
// <20><>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB6A8>
typedef struct
{
double x, y, z, a, b, c;
}SVzNLRobotPointD;
typedef struct {
float rx[3];
float ry[3];
float rz[3];
}SVzNLNormal3D;
typedef struct {
SVzNL3DPoint point; //XYZ<59><5A><EFBFBD><EFBFBD>
SVzNLNormal3D normal; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}SVzNLPCameraPointinfo;
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hDevice <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param [out] pErrorCode <EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Ϊ NULLʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VZNLAPI VZEHPCHANDLE VzNL_CreateEyeHandPosConvertHandle(VZNLHANDLE hDevice, int* pErrorCode);
/**
* @brief <EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
* @param hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_ReleaseEyeHandPosConvert(VZEHPCHANDLE hConvertHandle);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
* hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* pCameraPoint <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* nCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
* dCalibMatrix <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* eConvertType <EFBFBD><EFBFBD><EFBFBD>ʽ
* pRobotPoint <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_EyeHandPosConvert3(VZEHPCHANDLE hConvertHandle,
SVzNL3DPoint* pCameraPoints,
int nCount,
double dCalibMatrix[16],
EVzHandEyeConvertType eConvertType,
SVzNL3DPoint* pRobotPoint);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>
* hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* pCameraPoints <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* pRobpose <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* nCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
* dCalibMatrix <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* eConvertType <EFBFBD><EFBFBD><EFBFBD>ʽ
* ePosSeqType <EFBFBD><EFBFBD>̬˳<EFBFBD><EFBFBD>
* pRobotPoint <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_EyeHandPosConvert6WithNormal(VZEHPCHANDLE hConvertHandle,
SVzNLPCameraPointinfo* pCameraPoints,
SVzNLRobotPointD* pRobpose,
int nCount,
double dCalibMatrix[16],
EVzHandEyeConvertType eConvertType,
EVzRPYSeqConvertType ePosSeqType,
SVzNLRobotPointD* pRobotPoint);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8><EFBFBD><EFBFBD><EFBFBD>ӿڣ<D3BF><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><>̬<EFBFBD><CCAC>
* hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* pCameraPoints <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>// xyzabc
* pRobpose <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* nCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,Ŀǰ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
* dCalibMatrix <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* eConvertType <EFBFBD><EFBFBD><EFBFBD>ʽ
* ePosSeqType <EFBFBD><EFBFBD>̬˳<EFBFBD><EFBFBD>
* pRobotPoint <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_EyeHandPosConvert6WithEuler(VZEHPCHANDLE hConvertHandle,
SVzNLRobotPointD* pCameraPoints,
SVzNLRobotPointD* pRobpose,
int nCount,
double dCalibMatrix[16],
EVzHandEyeConvertType eConvertType,
EVzRPYSeqConvertType ePosSeqType,
SVzNLRobotPointD* pRobotPoint);
/**
* @brief R2RPY <EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תRPY<EFBFBD><EFBFBD>
* @param hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param R <EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3*3
* @param RPY RPY<EFBFBD><EFBFBD>,˳<EFBFBD><EFBFBD>ΪRoll-Pitch-Yaw. <EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_R2RPY(VZEHPCHANDLE hConvertHandle, double R[9], double RPY[3], const EVzRPYSeqConvertType ePosSeqType);
/**
* @brief R2RPY RPY<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param hConvertHandle ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param R <EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3*3
* @param RPY RPY<EFBFBD><EFBFBD>,˳<EFBFBD><EFBFBD>ΪRoll-Pitch-Yaw.<EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
VZNLAPI int VzNL_RPY2R(VZEHPCHANDLE hConvertHandle, double RPY[3], double R[9], const EVzRPYSeqConvertType ePosSeqType);
#endif