我有一个装备,可以很好地估计相机和基于CAD的关节之间的静态转换。但是它有一些错误,我希望通过进行手眼校准来修复它。因此,我首先根据已经进行的转换生成一些数据。从我一直阅读的论文中,他们都想通过将$ A $,$ B $转换为双四元数或将方程简化为
$$ n_A来解决$$ AX = XB $$问题。 = Xn_B $$,其中$ n_A $,$ n_B $是对应于$ A $和$ B $旋转的特征值1的特征向量。

生成数据后,我测试了我的数据是否集合是正确的,我通过检查生成的所有$ A $ s和$ B $ s的$ AX = XB $来验证它。我使用CamOdoCal库来尝试解决问题,但是我得到了-

/hand_eye_calib_node    : 
[ 0.00196822,   -0.457069,    0.889429,    0.143463;
   -0.999965, -0.00813605, -0.00196822,    -1.74257;
  0.00813605,   -0.889394,   -0.457069,   0.0270069;
           0,           0,           0,           1]

----------------------------------------

/hand_eye_calib_node    : Actual transform
    0         0         1   0.08891
   -1         0         0 -0.070465
    0        -1         0   0.07541
    0         0         0         1


实际的转换是我基于$ A $和$ B进行的转换$数据。然后,我尝试使用LM解算器实现Tsai-Lenz和Horaud和Dornaika的非线性优化技术,但无济于事。我没有从任何求解器中得到正确的变换。

因此,我想知道您是否可以将我指向手眼校准库或行之有效的论文。

评论

欢迎使用NandanBanerjee机器人技术,但恐怕您的要求不清楚。我们倾向于根据您遇到的实际问题提出实用,可回答的问题,因此最好包含要实现的目标,尝试的目标,发现的目标以及期望看到的目标的详细信息。请查看“如何提问和游览”以获取有关堆栈交换工作原理的更多信息,并通过机器人问题清单来编辑您的问题以使其更清楚。

具体来说,您的测试设置是什么?您执行了什么测试?您是否包括轮换?你的输出是什么?您如何计算“实际变换”?

对于遇到这种情况的人,我在robotics.stackexchange.com/questions/7163/hand-eye-calibration上回答了类似的问题,可以在github.com/jhu-lcsr/handeye_calib_camodocal

#1 楼

从您的数据来看,问题出在哪里并不明显。您能提供更多详细信息吗?

这是用Matlab编写的常用手眼校准例程:
http://lazax.com/www.cs.columbia.edu/~laza/ html / Stewart / matlab / handEye.m

(请注意,您还需要从同一目录下载辅助函数quat2rot.m。)

它实现Tsai-Lenz方法。

通常,手眼校准的一个常见错误是提供逆变换。
也许您要用一组逆变换来重新运行例程?