手眼标定实现

 手眼标定基于Tsai的两步法标定,是经典的Ax = xB 求解模型。

Tsai的两步法标定是基于径向校正约束;第一步:利用最小二乘法求解线性方程组,得出相机的外参数;第二步:根据获得的相机外参数,求取相机的内参数;如果无透视畸变,可以使用一个线性方程求出。         

 

罗第6、7章;特别:P164-166)

1.手眼标定就是对机械手和相机的位置关系进行标定,这样根据识别得到的像素位置去引导机械手去抓取。

2.eye-in-hand:通过相机标定确定相机坐标系和世界坐标系之间的关系;即P&&R。这时如果知道相机坐标系和机械手基础坐标系之间的关系,即可得到物体在机械手坐标系中的坐标。

3.eye-to-hand:通过相机标定确定相机坐标系和世界坐标系之间的关系;即P&&R;因为相机和机械手基础坐标系之间的关系是固定的,即:只要求出相机坐标系在基础坐标系中的位置,即可获得物体在机械手基础坐标系中的位置。

 

****************手眼标定执行流程
**创建数据模型
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)
 

转载于:https://www.cnblogs.com/jefy/p/9617540.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值