手眼标定原理ur5_手眼标定实现「建议收藏」

手眼标定原理ur5_手眼标定实现「建议收藏」手眼标定基于Tsai的两步法标定,是经典的Ax=xB求解模型。Tsai的两步法标定是基于径向校正约束;第一步:利用最小二乘法求解线性方程组,得出相机的外参数;第二步:根据获得的相机外参数,求取相机的内参数;如果无透视畸变,可以使用一个线性方程求出。罗第6、7章;特别:P164-166)1.手眼标定就是对机械手和相机的位置关系进行标定,这样根据识别得到的像素位置去引导机械手去抓取。2.eye-…

大家好,又见面了,我是你们的朋友全栈君。

手眼标定基于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://javaforall.net/138614.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java velocity 语法_Velocity 语法

    java velocity 语法_Velocity 语法VelocityNotes变量名$name为空时打印变量本身。$!name为空时打印空字符串(不打印任何内容)。${name}类似$name,为空时原样打印。但可以将变量和连续的字符串分隔,例如:${name}space。$!{name}类似$!name,为空时打印空字符串,但可以将变量和连续的字符串分隔。例如:$!{name}space。$name$!name${name}$!{name…

    2022年7月14日
    35
  • phpstorm 2021.4.2激活码_通用破解码

    phpstorm 2021.4.2激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    88
  • vim 命令

    vim 命令

    2021年4月23日
    224
  • 剑指Offer面试题:2.二维数组中的查找

    一题目:二维数组中的查找二代码实现>>>23>>>1

    2021年12月19日
    44
  • 带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)「建议收藏」

    带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)「建议收藏」带通滤波器电路图设计(一)传统的带通滤波器设计方法中涉及了很多复杂的理论分析和计算。针对上述缺点,介绍一种使用EDA软件进行带通滤波器的设计方案,详细阐述了使用FilterPro软件进行有源带通滤波器电路的设计步骤,然后给出了在Proteus中对所设计的滤波器进行仿真分析和测试的方法。测试结果表明,使用该方法设计的带通滤波器具有性能稳定。设计难度小等优点,也为滤波器的设计提供了一个新的思路。…

    2022年6月7日
    71
  • @Param注解的使用和解析「建议收藏」

    @Param注解的使用和解析「建议收藏」作用:用注解来简化xml配置的时候(比如Mybatis的Mapper.xml中的sql参数引入),@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)。实例说明:1,使用@Param注解  Mapper接口方法:publicintgetUsersDetail(@Param("u…

    2025年7月23日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号