<video id="tcgnu"></video>
      <video id="tcgnu"><input id="tcgnu"><sup id="tcgnu"></sup></input></video><video id="tcgnu"></video>
      <video id="tcgnu"><input id="tcgnu"></input></video>
          <video id="tcgnu"></video>

          一分钟详解「手眼标定」基本原理

          版权声明:本文为博主原创文章,未经博主允许不得转载。 http://www.uiq8143.tw/Yong_Qi2015/article/details/88220607

          原文首发于【3D视觉工坊】知识星球:传送门。

          一 前言

          机器人的视觉系统分为固定场景视觉系统和运动的「手-眼」视觉系统。摄像机与机器人的手部末端,构成手眼视觉系统。根据摄像机与机器人相互位置的不同,手眼视觉系统分为Eye-in-Hand系统和Eye-to-Hand系统。Eye-in-Hand系统的摄像机安装在机器人手部末端(end-effector),在机器人工作过程中随机器人一起运动。Eye-to-Hand系统的摄像机安装在机器人本体外的固定位置,在机器人工作工程中不随机器人一起运动。

          Eye-in-Hand系统的在工业机器人中应用比较广泛,随着机械手逐渐接近目标,摄像机与目标的距离越来越小,被测物体位置参数的绝对误差会随之降低。在Eye-in-Hand系统中,采用基于图像的视觉控制、基于位置的视觉控制以及结合两者的混合视觉控制,可以快速有效地标定被测物体的坐标。

          手眼标定方法通常分为3类:标准手眼标定、基于旋转运动的手眼标定以及在线手眼标定。以上方法是将摄像机标定与手眼标定分开进行,也有的论文采用的是联合标定法。

          本文重点讲解Eye-in-Hand的一般方法,重在阐述其基本原理。

          二 Eye-in-Hand

          2.1 基础知识准备

          在研究相机标定时,已较为熟悉,在本公众号「3D视觉工坊」里已有几篇文章做过总结,如:
          a) 一分钟详解OpenCV之相机标定函数calibrateCamera();
          b) 一分钟详解「本质矩阵」推导过程;
          c) 计算机视觉基本原理——RANSAC;
          d) 再谈「相机标定」;

          此处就不详细展开叙述了。

          2.2 Eye-in-Hand基本原理

          对目标点的空间三维坐标进行变换的过程中,首先遇到的问题是机器人末端关节坐标系与摄像机坐标系之间的位置变换关系,也就是机器人的手眼位置关系,该关系用符号X表示,具体可以用方程AX=XB求解。其中A表示相邻两次运动时机器人末端关节的变换关系;B表示相邻两次运动时摄像机坐标的相对运动。

          下面,简单介绍一下本问题模型中为何会引入AX=XB模型。
          如图1所示,为眼在手上,也即eye-in-hand。(本篇文章重点讨论的是双目,所以此处仅是为了演示效果图,而非真实的实验场景)。相机固定在机械臂末端,会随着机械臂的运动而运动。

          图1 眼在手上

          我们会得到一堆坐标系和坐标变换关系:

          • A:机器人末端在机械臂坐标系下的位姿,这其实就是机器人运动学正解的问题。(已知)。

          • B:相机在机器人末端坐标系下的位姿,这个变换是固定的,只要知道这个变换,我们就可以随时计算相机的实际位置,所以这就是我们想求的东西。(未知,待求)

          • C:相机在标定板坐标系下的位姿,这个其实就是求解相机的外参(已知)。

          • D:相机在机器人基坐标系下的位姿。实际使用过程中标定板并不存在,所以这个变换关系我们不关心。

          所以,只要我们能计算得到B变换,那么相机在机器人坐标系下的位姿D也就自然得到了。

          如图2所示,我们让机械臂运动两个位置,保证这两个位置下都可以看到标定板,然后构建空间变换回路:
          图2 机械臂运动到两个位置,构建变换回路

          image

          图3 谷歌学术搜索

          在谷歌学术用关键词「AX=XB」搜索便可以得到各种求解办法,见图3所示。

          以上图中的几篇论文,都很详细地给出了推导过程,按照它们写程序基本没问题。

          这样,我们便有了A、B和C,就能直接求解得到我们想要的手眼标定结果D了。

          前面主要是为了理清思路,对于每个部分的细节都给省略掉了,接下来进行详细说明。

          1)变换A: 它是机械臂末端在机器人基座坐标系下的位姿,其实就是机器人学里面最基础的运动学正解。如图4所示。
          图4 机器人运动学正解模型
          用DH矩阵等方法来计算机器人运动学正解??梢圆慰葱苡新字鞅嗟摹痘魅思际趸 氛獗臼?。在实际操作中,根据机器人的示教器读出欧拉角,即可换算出机械手爪坐标系到机械臂基座的转换矩阵。
          在这里插入图片描述

          2)变换C: 它是相机在标定板坐标系下的位姿。其实就是相机的外参。如图5所示,其中的R,T 即为相机在标定板下的位姿。
          图5 相机在标定板板坐标系下的位姿

          图6 相机模型

          相机模型有了,我们要做的就是先确定内参矩阵,然后根据不同时刻拍摄的标定板图片来求取外参矩阵:也即相机在世界坐标系下的变换关系C。

          目前来说,要解决这个问题,基本上都是采用张正友老师的方法。这个在之前的相机标定过程中,已经实现。

          3)求解AX=XB。

          关于这个公式的求解,对应着多种不同的解法,此处推荐一篇文章,如下:

          1. Daniilidis, Konstantinos. “Hand-eye calibration using dual quaternions.” The International Journal of Robotics Research 18.3 (1999): 286-298.

          注: 在公众号【3D视觉工坊】后台回复「解AX=XB」,即可获得下载上述文章的下载链接。

          得到X也即手眼关系,最后得到相机坐标系到机器人基座的坐标变换关系:D=A*X。
          式中A代表:机器人手抓到机器人基座坐标变换;X表示相机到机器人手抓的坐标变换。

          以上手眼标定流程,大体可以总结如图7所示:
          图7 手眼标定流程示意图

          手眼标定的基本原理如上所述,至于正确性,仍需由实验进一步验证。

          原文部分内容参考:https://mp.weixin.qq.com/s/nJx1dlpBXaL2_iT_J4W5Kg

          附:
          ??编写好的手眼标定界面如图:
          在这里插入图片描述

          在这里插入图片描述

          展开阅读全文

          没有更多推荐了,返回首页

          最新马报64期 古蔺县| 平阳县| 新安县| 于都县| 张家港市| 双城市| 纳雍县| 承德县| 广南县| 曲麻莱县| 延安市| 呼和浩特市| 邳州市| 永和县| 平武县| 阳原县| 铜鼓县| 松潘县| 武汉市| 石景山区| 云龙县| 大渡口区| 开阳县| 苍南县| 江安县| 多伦县| http://www.djslbki.tw 鲁山县| 澄江县| 枞阳县| 兴安盟| 拜泉县| 昌邑市| 资溪县| 神池县| 乌海市| 如东县| 台湾省| 正镶白旗| 新河县| 凭祥市| 永嘉县| 贺州市| 平阳县| 孟州市| 雅安市| 广安市| 武城县| 莱州市| 青海省| 阿勒泰市| 施秉县| 玉环县| 息烽县| 奉节县| 曲阜市| http://www.8959zsn.tw 会泽县| 乌鲁木齐县| 泾阳县| 依安县| 靖西县| 永城市| 五寨县| 揭西县| 肥东县| 眉山市| 资讯| 泰顺县| 龙泉市| 南岸区| 亳州市| 灵石县| 塔河县| 邹城市| 海城市| 万源市| 枣庄市| 曲周县| 海晏县| 湘潭县| 尼玛县| 耿马| 房山区| 湘潭县| 光泽县| 定兴县| 探索| 德州市| 柘荣县| 周宁县| http://8163rhs.tw 维西| 怀集县| 灵寿县| 常山县| 鄯善县| 黔东| 库车县| 浪卡子县| 石狮市| 洛扎县| 临潭县| 黔西县| 玉门市| 依兰县| 大同县| 华宁县| 花莲市| 曲沃县| 南投县| 长春市| 凉城县| 红安县| 南澳县| 双桥区| 修文县| 阿坝| 襄城县| 上林县| 大渡口区| http://www.qttnehd.tw 东乡县| 清涧县| 灵台县| 阿拉善左旗| 咸丰县| 永胜县| 始兴县| 大城县| 洪泽县| 新平| 扶风县| 乌拉特前旗| 三原县| 五指山市| 沛县| 兴山县| 西峡县| 婺源县| 雷波县| 景德镇市| 丰都县| 营山县| 石城县| 应城市| 哈尔滨市| 涿鹿县| 贵溪市| 南宁市| 霍林郭勒市| http://www.gwanneq.tw 新和县| 南阳市| 金塔县| 海丰县| 芷江| 罗定市| 闽清县| 石景山区| 辛集市| 华池县| 博兴县| 衡水市| 荆州市| 和田市| 宁晋县| 烟台市| 武隆县| 乌兰浩特市| 阿城市| 上蔡县| 富川| 定西市| 来宾市| 临湘市| 温泉县| 五大连池市| 博罗县| 宁南县| http://0817muj.tw 大理市| 印江| 平塘县| 钟祥市| 泸水县| 铁力市| 澄迈县| 青州市| 伊川县| 健康| 衡南县| 海门市| 温泉县| 朝阳县| 湛江市| 隆林| 柏乡县|