手眼標定基於Tsai的兩步法標定,是經典的Ax = xB 求解模型。
Tsai的兩步法標定是基於徑向校正約束;第一步:利用最小二乘法求解線性方程組,得出相機的外參數;第二步:根據獲得的相機外參數,求取相機的內參數;如果無透視畸變,可以使用一個線性方程求出。
羅第6、7章;特別:P164-166)
1.手眼標定就是對機械手和相機的位置關系進行標定,這樣根據識別得到的像素位置去引導機械手去抓取。
2.eye-in-hand:通過相機標定確定相機坐標系和世界坐標系之間的關系;即P&&R。這時如果知道相機坐標系和機械手基礎坐標系之間的關系,即可得到物體在機械手坐標系中的坐標。
3.eye-to-hand:通過相機標定確定相機坐標系和世界坐標系之間的關系;即P&&R;因為相機和機械手基礎坐標系之間的關系是固定的,即:只要求出相機坐標系在基礎坐標系中的位置,即可獲得物體在機械手基礎坐標系中的位置。
可直接聯系客服QQ交代需求:953586085
****************手眼標定執行流程
**創建數據模型
create_calib_data ('calibration_object', 1, 1, CalibDataID)
***設置相機參數
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', [])
**設置標定板描述文件
set_calib_data_calib_object (CalibDataID, 0, 'calplate.cpd')
**循環讀取標定板圖像
for index := 1 to 10 by 1
read_image (Image, 'fabrik')
*讀取機械手法蘭盤在基礎坐標系中的位置姿態
read_pose ('campose.dat', Pose)
*將機械手法蘭盤在基礎坐標系中的位置姿態添加到標定數據模型中
set_calib_data (CalibDataID, 'model', 'general', 'reference_camera', Pose)
**獲取標定對象,並添加到數據模型中
find_calib_object (Image, CalibDataID, 0, 0, 0, [], [])
*獲得世界坐標系和相機坐標系的相對位置關系
get_calib_data_observ_pose (CalibDataID, 0, 0, 0, ObjInCameraPose)
endfor
calibrate_hand_eye (CalibDataID, Errors)
*獲得機械手基礎坐標系在攝像機坐標系下的坐標
get_calib_data (CalibDataID, 'camera', 0, 'params', DataValue)
**獲得攝像機坐標系在機械手基礎坐標系下的坐標
pose_invert (ObjInCameraPose, PoseInvert)
*根據攝像機在機械手基礎坐標系下的姿態和目標在攝像機坐標系下的姿態,求解目標在攝像機基礎坐標系下的姿態
pose_compose (PoseInvert, PoseInvert, PoseCompose)
---------------------