matlab - 静态相机手眼标定算法参数错误
问题描述
我尝试使用静态相机和 Matlab 中的以下算法进行手眼校准。https://de.mathworks.com/matlabcentral/fileexchange/48696-camera-to-robotic-arm-calibration
该算法运行良好,没有错误。它还提供了相机矩阵,这是正确的,因为我用另一个相机校准对其进行了校对。
但我的问题是,转换矩阵对我来说看起来不正确。输出图片的可视化也很奇怪。
这是变换矩阵和输出图片之一。
最终相机到手臂基础变换是
-0.2809 -0.1394 -0.9496 0.5000
0.9594 -0.0165 -0.2814 -0.5000
0.0236 -0.9901 0.1384 0.5000
0 0 0 1.0000
棋盘变换的最终末端执行器是
0.2479 0.2346 -0.9399 -0.0432
-0.6196 -0.7075 -0.3400 -1.0000
-0.7448 0.6666 -0.0300 0.3707
0 0 0 1.0000
我的相机在 x,y,z 上距离底座不正好 0.5m,棋盘也没有安装在距离 tcp 1m 处。
我正在使用 UR10。该算法的一个输入是从 base 到 tcp 的变换矩阵,每个姿势对应的图片。
所以我使用图片中基础的 TCP 坐标来创建我的矩阵。因此,我将每个角度的旋转矩阵相乘——> R= rot(rx)*rot(ry)*rot(rz)。我使用了平移向量 t= (xyz)。然后我的变换矩阵是 T= [R t; 0 0 0 1]。还是我的想法有问题?
也许你们中的一个可以帮助我。如果有任何问题,请随时提问。也许您还知道另一种在 python 或 Matlab 中使用棋盘进行手眼校准的好算法(请不要使用 ROS)。