matlab tsai手眼标定程序代码_标定系列一 | 机器人手眼标定的基础理论分析

124acc2cfd90b8044c0675d1c2a63b2f.png
旷视MegMaster机器人系列是旷视自主研发的一系列AI智能机器人硬件设备,基于旷视全球领先的人工智能算法及机器人技术,可实现搬运、分拣、托举、存储等功能,被广泛应用于物流仓储、工厂制造等场景。旷视SLAM组主要负责多传感器建图、定位、标定等工作,在开发过程中总结了一些理论和实践方面的经验教训,在此分享出来,希望能够与大家一起探讨,为机器人行业贡献自己的绵薄之力。

近期我们会首先推出机器人多传感器标定的系列内容,包括:

  • 标定系列一 | 基础理论分析
  • 标定系列二 | 实践之Camera-Odometry标定
  • 标定系列三 | 实践之Camera-Lidar标定

本文作者是旷视研究院研究员卢彦斌,在文中为大家主要介绍了机器人手眼标定的一些理论基础,以及轮式机器人标定中的一些常见做法,希望能够给大家一些启发。

目录

  • 1 手眼标定的理论基础
    • 1.1 AX=XB
    • 1.2 约束条件分析
      • 1.2.1 旋转矩阵所需的方程数量
      • 1.2.2 平移向量的约束数量
  • 2 基于平面运动的外参标定方法
    • 2.1 传感器的旋转轴与平面法向量重合
    • 2.2 引入其它约束
  • 参考文献
  • 附录A

一、手眼标定的理论基础

1.1

手眼标定(hand eye calibration)是机器人领域中一个历史悠久的问题。这里的手常指的是机械臂,眼常指的是安装于机械臂上的相机或者固定于环境中的相机。如下图所示。

97486fdde38c130cd12b3e18a73cbbbe.png

在实际应用中,我们通常需要将相机观察到的外界环境中物体的姿态从相机坐标系转换到机械臂的坐标系中,辅助机械臂规划一些后续动作(如抓取)。为了得到两坐标系之间的转换矩阵,我们就要对机器人进行手眼标定。手眼标定有两种常见的标定方法。第一种是通过特殊的标定物,第二种是通过机器人运动建立约束。本文主要讨论后一种方法。

假设k时刻,机械臂相对于世界坐标系的位姿为

,相机相对于世界坐标系的位姿为
,相机相对于机械臂的位姿 X,那么有

同样地,对k+1时刻有

那么

,上式即是:

其中,A和B表示相邻时刻机械臂和相机的局部运动。机械臂的局部运动可以通过其运动模型推算得到,相机的局部运动通常可通过外部的标定板辅助得到。由此,手眼标定问题转化为求解
的问题。这里,我们称k时刻与k+1时刻构成的
的方程为一个测量。

1.2 约束条件分析

方程出发,我们分别考虑旋转矩阵R和平移向量t需要的方程数量(即测量数量)。假设:

那么

可以转化为:

6d1a71c5fae9690ebe3ff7c857f0ef3e.png

1.2.1 旋转矩阵所需的方程数量

本小节主要参考文献[1]。由上述等式条件可得:

f777ead159e61165e65956fac6df3d30.png

首先回顾一下旋转矩阵的性质,

  1. 旋转矩阵有且只有一个实数特征值1;
  2. 不考虑单位矩阵,旋转矩阵的实数特征值对应的特征向量即是axis-angle表达式的旋转轴,旋转矩阵的迹与旋转角度相关。

axis-angle表达式示意图如下所示[6]。

e9dd75079b93bfdee2bad1fc0865a041.png

旋转矩阵和axis-angle表达式的关系可以由Rodrigues公式表示。

0ccaa254fb7e5803c07856284d1bdf4f.png

其中

,
分别为旋转矩阵的旋转轴和旋转角度,
,定义如下

fbec5c483211a8dfbb852ab14774fed9.png

反对称矩阵有如下性质:

旋转矩阵的迹与旋转角度的关系为:

6d5d478cb368123cba69baf310851088.png

假设

分别为
的旋转向量,
分别为
的旋转角度,那么有:

e1b8f8629c1788545f7c2d51c043157b.png

862f56ae6da5e10223631a87efc77569.png

所以,

的实数特征值对应的特征向量,

eb6a9b81362fc634c75ac791fd47a7f8.png

上式说明,

的旋转轴经过
变换为
的旋转轴。实际上,我们能从上式得到如下关系:

eea1295cd6d8ceccaa348699c3d25936.png

证明见附录A。

如果令

,上式等价于

5be3401ec46db496fdf2ae5f38dc6470.png

上述方程有一个显然的特解

94c39e1af7e0bb78d4038612ac491cfc.png

由于

秩为2,其一维零空间的基为
。因此
的解为

280ab6393e9aa91430c4dbb3f50d8c87.png

示意图如下图所示。

8b9b630a8df828a744d832472923401c.png

的定义可知,每个
对应于一个
,
。因此,从一个
方程无法求解得到
,有一个自由度求解不出来,且该自由度会同时影响
,

下面考虑两组组测量

。关于
的方程变为

d0b3c88bf6cbd48e64de19afe7a4c170.png

有唯一解当且仅当左端方程满秩。文献[1]中证明,这等价于

因此如果我们有两组测量,且传感器A(等价于B)在两组测量中的(局部坐标系下)旋转矩阵的旋转轴不同,那么能够求解得到

。从而,根据

7ea8e5ebbfd397383d2e0b11625a5b75.png

从Rodrigues公式可以求得

1.2.2 平移向量的约束数量

在已知旋转矩阵的情况下,平移向量的约束推导情况较为简单。从一个方程

中,我们可以得到

d513d295e3dc7503b14dbffc444f06b1.png

同样,因为

有非零解
,
不满秩,一个测量无法求解出
。当我们有两组测量时,文献[1]中证明,

02cdfc04e854c89ff3579b9d57544ded.png

满秩等价于

。因此,如果我们有两组测量,且传感器A(等价于B)在两组测量中的旋转矩阵的旋转轴不同,那么能够通过求解方程组求解得到

二、基于平面运动的外参标定方法

机器人上不同传感器之间的外参可以用手眼标定的方式来标定,这一般需要机器人在三维空间运动。对于一大类机器人而言,其通常被设计成在平面上运动。这种情况下,传感器实际上只能绕一个轴(即平面法向量)旋转,其在任何局部坐标系下的旋转运动的旋转轴均保持不变。此时,我们能够求解出哪些参数呢?

假设世界坐标系的XY平面即为机器人的运动平面,Z轴为平面法向量。直观上来说,两个传感器的安装高度差对于局部旋转和平面上的平移没有影响,因此两个传感器各自坐标系的原点在世界坐标系下的z轴高度差是无法观测到的。实际上,我们从

的方程能够看出这一点。首先,由第一部分我们知道,此时旋转轴
在所有的局部坐标系下是一样的。其次,我们可以证明
满足所有(A, B)的方程。

de1e34e1dbfa3c5ec2e13e8fa7345049.png

即是世界坐标系z轴在两个传感器局部坐标系下的表达式。

针对平面运动下的手眼标定问题,我们列举一些典型做法作为参考。

2.1 传感器的旋转轴与平面法向量重合

以带轮速计的机器人为例,通常可以假设轮速计的旋转轴和平面的法向量重合。我们能够证明,除了平移向量的z分量,其余5个参数都是可观的。

以参考文献[2]为例。作者的具体做法如下。

第一步,通过将

分解为欧拉角的ZYZ表示简化旋转矩阵参数的求解。假设

0b8165bdf321408e70cfd94299797360.png

那么旋转矩阵对应的方程变为

cea354d9c4b4ad923d95b375add32eb2.png

397b08ef2e5697422fcd25ab36a08dc6.png

已知

的情况下,我们可以同时求出
(注:如果轮速计内参未知,那么上述公式可用于提供轮速计的一个约束)。于是
变为只有最后一个Z旋转未知的旋转矩阵,可代入平移向量的方程中求解。文献[3]是类似的思路,同样都是利用A传感器的旋转轴是世界坐标系的z轴的性质,先解出旋转矩阵的两个参数,再利用平移向量的约束解出其余参数且有一个参数不可观。具体做法会由系列后续文章详细说明。

2.2 引入其它约束

我们可以引入外界约束以求解所有参数,例如,2D激光和相机的外参标定通常需要6自由度参数。文献[4]利用V型标定板和棋盘格建立点到面的约束。文献[5]则利用互相垂直的三面体构建直线到平面和点到平面的约束。这部分与本文重点关系较小,这里就不分析了。

参考文献

  1. Tsai, Roger Y., and Reimar K. Lenz. "A new technique for fully autonomous and efficient 3D robotics hand/eye calibration." IEEE Transactions on robotics and automation 5.3 (1989): 345-358.

2. Antonelli, Gianluca, et al. "Simultaneous calibration of odometry and camera for a differential drive mobile robot." IEEE International Conference on Robotics and Automation(2010).

3. Guo, Chao X., Faraz M. Mirzaei, and Stergios I. Roumeliotis. "An analytical least-squares solution to the odometer-camera extrinsic calibration problem." 2012 IEEE International Conference on Robotics and Automation. IEEE, 2012.

4. Dong, Wenbo, and Volkan Isler. "A novel method for the extrinsic calibration of a 2D laser rangefinder and a camera." IEEE Sensors Journal 18.10 (2018): 4200-4211.

5. Gomez-Ojeda, Ruben, et al. "Extrinsic calibration of a 2D laser-rangefinder and a camera based on scene corners." 2015 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2015.

6. http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/

附录A

a1d0a0d6e37d566c1a744e1e6070579f.png

作者简介

卢彦斌,北京大学博士,目前为旷视研究院高级研究员,长期从事三维重建和SLAM技术的产品化工作,对机器人、AR等领域有浓厚兴趣;作为核心成员参与研发了世界领先的口腔三维真彩扫描仪,其产品曾于2015年获得Bronze Edison Award for Innovation。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8中的外观(JavaFX8)

JavaFX8在外观方面进行了一些更改 ,其中最相关的是新CSS API ,它允许您为控件以及已公开的Skin类创建新CSS属性和伪类。 使用CSS可以改变控件的很多外观,但是CSS只能实现很多功能,而这正是Skin类的用处。从“ UI控件体系结构”快…

600分理科选计算机专业,天津600分左右,计算机或电子信息专业,怎么选院校?...

原标题:天津600分左右,计算机或电子信息专业,怎么选院校?想学计算机或电子信息,一定是偏理选科对吧!所谓的换算,是指的高考后出了全天津市不分文理的总排名后,如何换算成相当于天津市…

[TypeScript] Export public types from your library

If youre a library author, its useful to expose your public types as interfaces, to allow your consumers to extend them if needed. For example: To resolve the issues, we can do : // typings.d.tsinterface JQuery {hideChildren(): JQuery } 转载于:https://www.…

python tkinter选择路径控件_Python3 Tkinter选择路径功能的实现方法

效果基于Python3。 在自己写小工具的时候因为这个功能纠结了一会儿,这里写个小例子,供有需要的参考。 小例子,就是点击按钮打开路径选择窗口,选择后把值传给Entry输出。 效果预览 这是选择前:选择:选择后&a…

小米10pro使用说明书_华为Mate40、华为P40和小米10拍照对比:哪一款最好?

华为Mate 40 Pro、华为P40 Pro和小米10 Pro拍照对比:哪一款最好?华为Mate 40 Pro、小米10至尊纪念版、华为P40 Pro和小米10 Pro三款手机是在DxOMark上排名靠前的4部手机。而我们刚好拥有华为Mate 40 Pro、华为P40 Pro和小米10 Pro三款手机——作为同样搭…

xml和xml解析

1.简介XML XML 可扩展标记语言&#xff0c;传输数据 HTML超文本标记语言&#xff0c;显示数据 XML 文档声明 只能放在第一行&#xff0c;注释不能放在声明之前 <?xml version"1.0" encoding"UTF-8" standalone"no"?> standalone表示文…

win8.1 计算机 桌面快捷方式,win8.1操作系统中我的电脑在哪里?win8.1我的电脑快捷键添加方法介绍...

很多刚刚接触win8的用户会发现&#xff0c;xp中的“我的电脑”&#xff0c;win7中的“计算机”&#xff0c;到了win8难道只有“资源管理器”了吗&#xff1f;开始菜单里边倒是有“计算机”&#xff0c;但是无法放到桌面。在最新版的win8.1中也是如此&#xff0c;大家会发现熟悉…

mac你没有权限打开应用程序_如何管理Mac的隐私权限控制

在使用MAC电脑清理软件的时候&#xff0c;经常会出现需要权限问题&#xff0c;在没有权限的情况下&#xff0c;我们不能对一些文件进行更改和删除&#xff0c;那么该如何管理Mac的隐私权限控制呢&#xff1f;下面的文章就来告诉大家该如何设置隐身权限问题。第一步&#xff1a;…

Linux网卡绑定

很多情况下我们都需要用到网卡绑定这中情况&#xff0c;例如&#xff1a;大数据传输备份、网卡冗余。使用网卡绑定可以提高网络的传输速度&#xff0c;并且还能保证网络安全性&#xff0c;做到网卡的高可用&#xff0c;甚至可以节省IP地址。 网卡绑定模式 mode0&#xff1a;轮询…

c# 中通快递对接_快递共配是什么?行业前景怎么样?

首先了解快递共配是什么&#xff0c;随着快递市场竞争的加剧&#xff0c;降本增效成为快递网点越来越重视的方面&#xff0c;末端整合就成为快递网点普遍关注的一个焦点&#xff0c;即大家通常所说的共配。如何提升快递末端效率&#xff0c;一直都是快递企业比较关心的话题。不…

ceph存储原理_热门的分布式存储系统ceph入门介绍

一、什么是cephceph是当前最热门的分布式存储系统之一&#xff0c;是软件定义存储(SDS,SoftwareDefinedStorage)解决方案中的典范。其具备良好的可靠性、可扩展性&#xff0c;应用范围包括块存储(RBD,RadosBlockDevice)、文件存储(CephFS,CephFileSystem)和对象存储(RADOSGW,Re…

小程序点击调转带参数_带你走遍苏大的每个角落,校园导览小程序上线!

精彩推荐 1. 招新 | 携手趁韶华&#xff0c;约你同做“校媒人”&#xff01;2. 迎新现场 | 今天&#xff0c;“小20”是苏大的主角3. 苏州大学与亨通集团签订战略合作协议钟楼、红楼、精正楼……存菊堂、敬贤堂、子实堂……初至校园的“小20”们是否会有这样的烦恼在这楼宇亭台…

爬虫

爬虫 1、设计 分布式爬虫系统允许位于多个不同主机上的爬虫程序并行爬取提交的爬虫作业&#xff0c;进而协调他们之间的爬取能力。爬取队列由redis管理&#xff0c;每个spider通过修改的调度程序从queue中拉取job。 页面被spider成功爬取后&#xff0c;就交给管线进行进一步处理…

python下划线怎么输入_python下划线怎么打出来

python中下划线使用键盘上的Shift减号键即可打出&#xff0c;减号键位于0和加号键之间。 在Python中下划线还具有 private 和 protected 类似的访问权限作用&#xff0c;下面我们具体分析。Python主要存在四种命名&#xff1a; &#xff08;1&#xff09;object #公用方法 &…

二、先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash

1. 制作SD卡 先准备一张2G的SD卡&#xff08;不能用8G的&#xff0c;2G的卡和8G的卡协议不一样&#xff09;&#xff0c;和烧写SD卡的工具write_sd以及需要烧写到SD卡中的u-boot-movi.bin。将SD卡格式化后连接到Ubuntu虚拟机中&#xff0c;注意在SD卡需要插入到读卡器中&#x…

java comparator_Java基础之String漫谈(二)

Java-String1. 导读上期分享了本人关于String四个问题, 本期我们继续探讨String中的两个问题:.1 String既然已经实现了Comparable接口, 为什么还要提供内部类----CaseInsensitiveComparator;.2 使用 "" 拼接String究竟干了什么? 为什么在循环中不让使用""…

掌握Java字节码

嘿! Happy Advent&#xff1a;D我是ZeroTurnaround的技术布道者Simon Maple&#xff08; sjmaple&#xff09; 。 您知道&#xff0c; JRebel伙计们&#xff01; 由于编写了类似于JRebel的产品&#xff0c;该产品与字节码进行交互的结果比您想像的更多&#xff0c;因此&#xf…

敲代码括号技巧_理解代码块概念,养成良好编程习惯 | 亲子课堂 第 3 课

亲子课堂关卡解析 / 英语教学 / 编程讲解 做亲子编程教育的好帮手&#xff01; 每周二、四定期更新 地牢面向真正0编程基础的孩子们&#xff0c;关卡被设计成迷宫的形式&#xff0c;引导孩子们使用编程思维解决问题。以循序渐进的方式&#xff0c;让大家理解掌握几个Pyth…

在struts2中push方法的使用_电脑使用中怎么截屏的几种方法

电脑在日常工作中经常需要用到截屏的操作&#xff0c;为了截取画面提供证明或者说明&#xff0c;像我就经常需要用到&#xff0c;当然我在写文章的时候更是需要用到&#xff0c;来配合文字的描述&#xff0c;使大家能更直观更容易的去操作&#xff0c;以达到快速解决电脑问题的…

卸载WPS后,原office出现各种问题,报错,图标混乱

1.运行环境win7专业版64位操作系统&#xff0c;之前电脑上装了WPS和office2013&#xff0c;后来卸载了WPS&#xff0c;导致office图标显示不正常&#xff08;因为WPS与office有很多冲突的地方&#xff0c;卸载的时候会影响到注册表&#xff0c;导致office的注册表损坏&#xff…