58 lines
1.7 KiB
C
58 lines
1.7 KiB
C
#ifndef VRHANDEYECALIBCONFIG_H
|
|
#define VRHANDEYECALIBCONFIG_H
|
|
|
|
#include <cstring>
|
|
|
|
/**
|
|
* @brief 手眼标定矩阵(多项目共用)
|
|
*
|
|
* 每台相机独立保存:标定矩阵、欧拉角顺序以及工具坐标轴绕 X/Y/Z 三轴的补偿旋转。
|
|
* 欧拉角顺序同时用于机器人法兰姿态的分解(输入)和工具姿态的合成(输出)。
|
|
* rotX/Y/Z : Eye 坐标系下施加的预补偿,按 Rx(rotX)*Ry(rotY)*Rz(rotZ) 合成(手眼变换之前)
|
|
* outRotX/Y/Z: Robot 坐标系下施加的后补偿,按 Rx*Ry*Rz 合成(手眼变换之后、提欧拉角之前)
|
|
* 用于把"算法定义的工具系"修正到"机器人期望的 TCP 系",避免输出进入万向节锁。
|
|
*/
|
|
struct VrHandEyeCalibMatrix
|
|
{
|
|
int cameraIndex;
|
|
double matrix[16];
|
|
int eulerOrder;
|
|
double rotX;
|
|
double rotY;
|
|
double rotZ;
|
|
/* 接近点偏移 (mm): approach point offset along -axialDir (screw) / -normalDir (tool disk). */
|
|
double approachOffset;
|
|
/* 目标点在 Robot 坐标系下沿 X/Y/Z 轴的补偿偏移 (mm)。 */
|
|
double offsetX;
|
|
double offsetY;
|
|
double offsetZ;
|
|
double outRotX;
|
|
double outRotY;
|
|
double outRotZ;
|
|
|
|
VrHandEyeCalibMatrix()
|
|
: cameraIndex(1)
|
|
, eulerOrder(11)
|
|
, rotX(0.0)
|
|
, rotY(0.0)
|
|
, rotZ(0.0)
|
|
, approachOffset(0.0)
|
|
, offsetX(0.0)
|
|
, offsetY(0.0)
|
|
, offsetZ(0.0)
|
|
, outRotX(0.0)
|
|
, outRotY(0.0)
|
|
, outRotZ(14.56)
|
|
{
|
|
double identity[16] = {
|
|
1.0, 0.0, 0.0, 0.0,
|
|
0.0, 1.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
0.0, 0.0, 0.0, 1.0
|
|
};
|
|
memcpy(matrix, identity, sizeof(matrix));
|
|
}
|
|
};
|
|
|
|
#endif // VRHANDEYECALIBCONFIG_H
|