待解决

六轴手眼标定搞了半天误差还是2mm多,正常吗

薄利多销
薄利多销
2026/04/28 08:40

小弟刚转机器人应用这边,之前一直做PLC。手上一个项目,六轴机器人配的相机装在末端法兰上(eye-in-hand),用九点标定算出来的变换矩阵,跑下来目标位置和实际抓取点对不上,误差稳定在2mm往上走,标定做了好几遍都差不多这个数。

相机是普通的500万全局快门,标定板用的1mm圆点阵列玻璃板,工作距离大概400mm左右,视野覆盖被抓工件。九点我是手动JOG让机器人末端分别走那九个点,每个点用相机拍一次圆心坐标,姿态全程保持法兰朝下没动。

想问下这个2mm多的误差到底算正常还是标定哪里出问题了,TCP本身已经校过了,重复定位精度测下来0.05mm以内,是不是我标定板或者点提的精度不够?有没有必要上更高精度的标定板?

348 4

全部回复 (4)

2801209588
2801209588#1

2mm在手眼标定里基本就是个不达标的结果,正常做下来这个配置应该能压到0.3到0.5像素当量以内。你说TCP重复定位0.05mm,那问题大概率不在机器人这边,多半出在标定数据本身。

先排查这几个:九点之间的位姿变化范围够不够,你九个点全在一个小范围内凑一起,姿态没拉开,标定出来的矩阵就是病态的;相机标定重投影误差多少,超过0.2像素就该重新标内参;还有就是你抓的点是不是亚像素提取的,用重心法还是圆拟合,1mm的点阵在400mm距离上亚像素误差占比不小。

另外你eye-in-hand每次法兰朝下不动,那其实等效于固定相机,标定出来的矩阵退化成了2D平面变换,这种情况下九点分布必须在视野里尽量铺开,而且至少要有一个点偏离主平面高度,不然z方向基本是估的,2mm误差很可能就是z上漂的。建议九点里起码穿插两三个姿态有明显变化的点,别全程法兰朝下死板板的。

2026/04/28 13:42
知足常乐
知足常乐#2

别急着换标定板,你那1mm点阵玻璃板在400mm工作距离下完全够用。先把你九点对应的机器人法兰坐标和图像坐标都导出来,自己用opencv的calibrateHandEye或者Tsai-Lenz跑一遍,看看残差分布,如果九点里有一两个点残差明显偏大,直接干掉重做那几点,比你整体重来快多了。

2026/04/29 03:39
顺顺利利
顺顺利利#3

九点手眼标定本来就是2D平面做法,你eye-in-hand姿态不变的时候z方向基本不可观,2mm误差完全说得通。真要压到亚像素级别得上张正友那种带多姿态变化的标定方法,或者直接halcon里的hand_eye_movingcam_full_pose,十几二十个位姿拍一圈下来,标定精度能稳进0.1mm量级。你这需求要是只抓平面摆放的件,2mm能接受就先凑合用,要是不行就老老实实改标定流程。

2026/04/30 01:56
小明
小明#4

你相机装法兰上每次姿态还不变,那跟固定相机有啥区别,这种情况下你测出来的所谓手眼关系本质就是个像素-毫米比例关系加一个旋转偏移,z分量基本是假的,2mm误差里大概率有一大半是z方向的。换句话说哪怕你把标定板精度提到0.01mm,姿态不变这个前提下你也压不下去多少。

2026/04/30 23:08