浙江大学校长马琰铭:高等教育不能只"喂知识 ",AI时代要培养"**会提问,敢创造"**的人。
眼在手上就是相机装在机械手末端,随机械手一起动。目的是根据3D相机的数据求接触目标的3D坐标,通过标定的转换矩阵,求解出机械手的抓取坐标。
1、涉及的坐标系关系
如下图所示

机器人基坐标系 Base:机器人底座原点;
法兰坐标系 arm:机械手末端法兰;
相机坐标系 Cam:装在法兰上,和法兰刚性连接;
工具末端坐标系tool:显然机械臂在工作过程中,机械臂末端会搭载工具,而我们往往希望工具移动到某个位置,而不是机械臂末端运动到某个位置,这时我们就需要为工具建立一个它自己的坐标系,也就是工具末端坐标系。
手眼矩阵 HCamFlange:固定不变(一次标定终身用);
工件位姿 HObjCam:相机拍到的圆柱位姿。
如上图是一个机械臂,在关节末端附近安装了摄像头, 并搭配了机械夹爪作为工具。
机械臂手眼标定就是要找出相机坐标系到末端关节坐标系的转换关系。
2、相机安装及标定要求
3D 相机 固定在机械手末端法兰,相机朝下 / 斜朝下拍摄要抓取的目标。
标定板固定不动,移动手眼在不同姿态,获取图像数据和末端关节的位姿。
3、标定工作原理
眼在手上(Eye-in-Hand)3D 相机标定,如下图所示,核心是用固定标定板 + 少量位姿 + 成熟求解器,快速算出相机到机械臂末端的固定变换矩阵。
首先将相机固连在机械臂末端,根据方程:A·X = X·B
A两次运动末端相对位姿(已知)
B两次运动相机相对标定板位姿(已知)
X待求手眼矩阵(相机到末端)

关系推到可参考https://blog.csdn.net/leo0308/article/details/141498200?spm=1011.2415.3001.5331

则可以得到物体在基坐标系下的位姿:

标定时, 我们要保持物体位置不变, 机械臂基座不动,那么Posebase就是不变的。通过移动机械臂到N(为了保证标定效果, N一般取10~20)个不同位姿, 那么就得到了N个位姿变换关系:



机器人基座的位姿是固定不变的,这个关系是我们能进行标定的核心。

即可得到经典的AX=XB,其中A和B是已知的, 求解X。 这个问题的求解方法有很多。opencv中也集成了响应的方法可以直接求解。
4、手眼标定步骤
step1:准备好一张棋盘格标定板, 放置在一个平整的工作面上, 保证机械臂的摄像头可以清晰地看到这个标定板。机械臂运动:带动相机到**8--12 个不同位姿。**保持标定板不动, 机械臂的基座不动,转动机械臂到任意位姿, 记录下当前机械臂的位姿,并保存当前摄像头拍摄的标定板图片。 重复这个过程10 ~20次。
注意:姿态差异大,避免共线、共面且标定板始终在视野内。
step2:数据同步:每位姿记录机器人的末端 6D 位姿、保存标定板图像和点云数据。
step3:求解:用算法解算 X=T_末端→相机;重投影误差≤0.1mm为合格。
step4:验证:换位姿测精度,误差稳定即完成。
注意:相机一定固定紧,不能有松动、晃动的情形,否则影响测量精度。