我有一个装备,可以很好地估计相机和基于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的非线性优化技术,但无济于事。我没有从任何求解器中得到正确的变换。
因此,我想知道您是否可以将我指向手眼校准库或行之有效的论文。
#1 楼
从您的数据来看,问题出在哪里并不明显。您能提供更多详细信息吗?这是用Matlab编写的常用手眼校准例程:
http://lazax.com/www.cs.columbia.edu/~laza/ html / Stewart / matlab / handEye.m
(请注意,您还需要从同一目录下载辅助函数
quat2rot.m
。)它实现Tsai-Lenz方法。
通常,手眼校准的一个常见错误是提供逆变换。
也许您要用一组逆变换来重新运行例程?
评论
欢迎使用NandanBanerjee机器人技术,但恐怕您的要求不清楚。我们倾向于根据您遇到的实际问题提出实用,可回答的问题,因此最好包含要实现的目标,尝试的目标,发现的目标以及期望看到的目标的详细信息。请查看“如何提问和游览”以获取有关堆栈交换工作原理的更多信息,并通过机器人问题清单来编辑您的问题以使其更清楚。具体来说,您的测试设置是什么?您执行了什么测试?您是否包括轮换?你的输出是什么?您如何计算“实际变换”?
对于遇到这种情况的人,我在robotics.stackexchange.com/questions/7163/hand-eye-calibration上回答了类似的问题,可以在github.com/jhu-lcsr/handeye_calib_camodocal