http://www.ihalcon.com/read-7445.html
在进行手眼标定时走了一些弯路,特在此总结,希望其他人少走一些弯路。
实验了
1. 2D面阵相机,3DTOF相机
2. 固定相机以及移动相机的手眼标定。
在进行手眼标定时(不管是移动相机还是固定相机,不管是2D还是3D sensor)需要的数据准备:
1.ToolInBasePose即从机器人上读取的机械臂法兰盘当前的位姿,这其中类型很重要(XYZ?ZYX?ZYZ?。。。),
类型设置错了,标定就会不正确。我就因为这个原因花了很多时间。开始没注意也不明白什么意思。哎,没想到用的ZYZ类型的呀。
2020/5/22勇哥注:
这个XYZ, ZXY类型被称为欧拉角
它表示是一种描述物体空间姿态的角度给定法,它是位姿坐标系绕动坐标系进行三次转动所得。
详细请参考另一篇文章:《四自由度仿手臂机器人报告(论文)》的第三章
2.ObjInCamPose即物体在相机中的位姿,从图像中得到。
需要设置的数据:StartCamParam(根据使用的相机进行设置初始参数)
(1)2D + 移动相机手眼标定(参考例程:handeye_movingcam_calibration.hdev)
相机固定在机械臂法兰盘处,halcon标定板(自己打印的)放置在一固定平面上,移动机械臂至不同位置处(15处),记录每处ToolInBasePose以及图像。参考例程标定即可。
(2)2D + 固定相机手眼标定(参考例程:handeye_stationarycam_calibration.hdev)
2D相机固定在某一固定位置处,halcon标定板固定在机械臂法兰盘处,移动机械臂至不同位置处(15处),记录每处ToolInBasePose以及图像。参考例程标定即可。
(3)3D+移动相机手眼标定(参考例程:handeye_movingcam_calibration.hdev+calibrate_hand_eye_stationary_3d_sensor.hdev)
相机固定在机械臂法兰盘处,标定物体固定在某一位置,移动机械臂至不同位置处(15处),记录每处ToolInBasePose以及深度图像。
1)自己制作了一个简易的3D标定物体 (将两个长方形物体粘合在一起)
2)使用3D画图软件制作了标定物体的一个模型,read_object_model_3d读取模型;
3)find_surface_model找到模板
4)refine_surface_model_pose 最后得到ObjInCamPose。
根据ToolInBasePose,以及ObjInCamPose手眼标定即可。
感谢在此过程中帮助过我的每一位朋友。

