自动驾驶之多传感器融合--相机与IMU的同步

作者 | 韦韦道来  编辑 | 韦心雕AI

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【多传感器融合】技术交流群

后台回复【多传感器融合综述】获取图像/激光雷达/毫米波雷达融合综述等干货资料!

    最近的事情比较多,已经将近两个月没有好好维护了。很有幸迎来一位新的常驻小伙伴,贝塔。贝塔也将不定期的推送一些论文笔记。今天来叨叨自动驾驶多传感器融合系列的相机与IMU同步内容。

在自动驾驶中,往往认为IMU所在的位置为车体坐标系的原点(不绝对),所以需要计算相机到IMU之间的时空同步。相机与IMU具有互补性:相机在高速运动、光照改变情况下容易失效,但能够获得丰富的环境信息;而IMU能够获得车辆的运动信息,并且不受周围环境的影响,从而弥补相机的不足。可以通过视觉匹配完成回环检测与回环校正,有效的修正IMU的累计漂移误差,即所谓的相机与IMU的相对位姿。

c5ed5ad8e000da86215163713eaedce2.png 

1)相机与IMU的相对位姿:

相机与IMU之间的相对位姿,就是相机坐标系与IMU坐标系之间的变换,包括相对旋转角和相对平移量。其变换关系满足如下:

12afe6eca88551398ee75c0ff267c7ba.png 

其中wc表示相机坐标系,wb表示IMU坐标系,cb表示相对坐标系。将上式展开可以得到相机坐标系与IMU坐标系之间旋转角和平移量的变换关系:

4b20b2587b618dd447769e65074c047b.png 

2)相机与IMU的时间同步:

由于触发、传输等延时的存在,相机与IMU采样的时间和时间戳的时间并不匹配,如下图,这会导致相机与IMU之间存在时间差656619dd5217f3d664d6dda0120c126d.png

d4b917e9de06c0cd228781a2ab36cfe9.png 

这里时间差的计算为:

d2a1764808b13aa61dd98a21e4a550ee.png 

即将相机的时间戳平移td后,相机与IMU之间实现了同步。

相机与IMU的时空同步目前有很多开源的框架,如熟知的VINS就是集合了相机与IMU状态估计和标定的系统框架,也是目前个人比较推荐的一个应用框架。首先给出VINS的系统图。

4eaed1d1e762fee91899b9fe576d7584.png 

首先进行相机与IMU之间相对旋转角的标定,标定完成之后进行初始化和相机与IMU之间相对平移量的标定。标定和初始化完成后进行视觉惯性联合的状态估计,并且把标定量也当做待估计的状态放入联合优化中。VINS除了可以标定相对姿态,还能够进行时间标定。原理如下:假设在较短时间内相机从79ccc423d7cde16d0011944161a7a7c2.png匀速运动到1099b461a001d8e4d4b0663e1d42d118.png,特征点在像素平面上的投影也从6d3020b6b32a376c89c5fe4a0608e719.png匀速运动至f24255b0ecbfcfeeb5b056336d105ec1.png,像素匀速运动的速度为6866ecf01322668f522fed80e73ac117.png。如下图:

153f509f507dead8bd071995ce4e99d3.png 

通过平移像素坐标,将时间差作为优化变量加入投影误差的表达式中,如下式:

85ee7992df52b4d4d268dbbfb6dcc331.png 

此投影误差项与IMU误差项和初始值误差项相加进行联合非线性优化。每一次优化结束后对时间差进行补偿,最终时间差的标定量逐渐趋于0。

当然,为了获取更精确的标定结果,还可以将时间差加入到IMU预积分表达式中,作为优化变量参与联合非线性优化。

关于VINS的其他应用,后续有机会再来介绍,这里再来介绍另外一种方法,即基于basis-functions来估计时间偏移的方法,用于统计相机与IMU之间固定延迟timeoffset的统一框架,然后将离散的数据在时间上连续化,最后基于最大似然估计得出矫正后的结果。并由此衍生的camera-imu的外参标定和时间同步方法。

1)基于basis-functions的时间偏移估计

使用一组基函数加权和来表示随时间变换的状态量,如D维度状态量892e0c1ef4796e5912badcd4c252d73d.png可以表示为:

d1d72a10e2f35ce807fe6f1b5f85c5fe.png 

其中,每个e1a7dcdce609e7cec08489571e19c8c3.png是D维时间函数,1017a908e394636406c32db8b2e9368b.png是DxB的矩阵。为了估计6ac7b7e83f303c3d831d36d9c9dd5c95.png,只需要估计D维向量C即可。

当从测量数据估计时间差时,令误差项如下:

4753df8501a1a750935aa4fcc8ed2713.png 

其中,b22c06ca5f577658e64685e62d9ed283.pngd9efc680cd48d595c65d0af6a9a3ff82.png时刻的测量值,165273d2ddfdeeb0b3263a74728d0706.png是由状态量5999d6ab552655c41572ddf6b211460e.png计算测量值的模型,d为待估计的时间差。将前面提到的状态变量代入上式可得:

b25545c8bdba95a7f5d7cfc984787dc0.png 

通过优化误差结果可以得到最优时间差d的结果。为了求解上式的最小二乘问题,需要知道相应的jacobian矩阵87e7446c12907ec27d09ff30b3d46d1b.png,对于给定的初值856e05086258b12113c8b5cabf210b0b.png,对应的变化量为e23a064d9992ecb2150f10b4da50d74e.png,那么上式可以表示为:

aa2184be8d6ba00627db5f91988fa8d5.png 

其中:

2b07658a2653ea95cf5657ab6b150cf5.png 

这样做有两个好处,首先可以将时间差估计问题转换为最大似然估计问题来处理,其次将离散的量变为连续的,可以很容易得到timeoffsets的jacobian矩阵。所以,多传感器之间的估计问题就可以统一了,也就形成了统一的处理框架。

2)camera-imu的时空标定

这里来介绍一下camera-imu的实际应用。收集一到两分钟的数据,时间为6cdb0f313129ed252d0d35737f2cc929.png,这里有三个坐标系,分别为:世界坐标系a98bd1ec5522099d89a42e3bfd3e9e96.png用于状态估计,imu系下17e5234388283630eee2178438503733.png进行加速度和角速度估计,以及图像坐标系c9e20453eaf4c0dc304c0900a223a080.png。假设设备在标签前运动,那么有如下几个估计量:世界坐标系下的重力加速度9347097cc58af91276261ed7ce88e2fc.png,imu到camera的外参be8a7e9386453e53bcdb6b75c80f53fe.png,以及camera与imu时间戳之间的时间偏差d。

这里IMU的位姿是一个6维向量函数,包含转向姿态和平移向量,是随时间变化的状态量。使用B-spline函数来表示状态量,如下:

d7d5f580134b80bf4540eb7c89dea427.png 

其中,cdf1946a06efc213e997d4a0e296350f.png表示转向姿态参数,05274efd2282c7239e3edf132334ee6b.png表示从参数化函数到旋转矩阵的映射。bd6f7cf2b4b6df910f6bf7717ba17e85.png表示位移,速度和加速度在世界坐标系中的表示如下:

55bad637cf265a12f9578d1708b4126f.png 

那么角速度可以表示成:

f02111a868dec2705d24bb5582761102.png 

其中c4cfa0448ee620d3d9bfb6103fd19e51.png表示旋转向量到旋转角的映射。

将IMU数据与相机数据结合得到如下模型:

e489887143eb9950dd0fc5040c036f72.png 

其中2a7f1361d78853aa2f4ac3c983763111.png324ade69620ab39ebecd9c307c522591.png分别是8cbfc05493fdf0fc663d144330334bf3.png时刻的加速度和角速度的测量值,1e0f5f9e3442c8b441db7bb2e3d16e91.png是世界坐标系下的m个观测点,其对应图像上的像素坐标为97d383b447226bf184c6fbfddfa91c30.png4584a657a97655b11389a261a14c0ade.png是图像时间戳,adbb23b8129ba47ab2e5c41743f90e25.png是需要估计的时间偏差,308894a6b07fde788544cbd7c55bf9a1.png并假设相互独立,e7803b1795812d756f3ce1be14524af0.png表示相机投影模型。

上述模型中误差项考虑了图像相对IMU数据的时间延迟d,这个时间延迟可正可负,假设IMU零偏满足随机游走,那么模型如下:

c3617053a4b2f95fa7412341f9cd46e3.png 

并假设彼此独立,即97b061fe3be97d07b9bcd7837066f085.png(由于高斯分布是独立性和不相干性等价,所以可以使用不相关性条件来表示)。

那么对上述的几个变量构建估计模型,根据测量值和估计值之间建立误差项,那么IMU的bias模型给出积分误差项,如下:

fea4e5b14b4f778e79665e31b037c003.png 

最后,使用LM算法(Levenberg-Marquardt)进行最小化下式即可:

b528081d1bd7938565e3ec1ce6fc98d0.png 

这里给出整体的标定流程图:

c2d131a66becb1fe24fafb2b0e637eb1.png 

其整个位姿标定的效果图如下:

17f5a0bad3f2fd12f940561082fead3c.png 

    写在最后的话:惊奇的发现,公众号居然可以贴公式了。其实关于相机与IMU,最难的还是如何进行时间的同步。这里通过姿态的校正来同步两个传感器,1)通过视觉匹配完成回环检测与回环校正;2)修正IMU的累计漂移误差。

往期回顾

史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

9c72f3fd8e3d49f9626c4d9b096f9c6f.png

(扫码学习最新视频)

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

3d92debdb2e3d2b9623893f072181be3.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

7c15b249b740e1f82e3cd9250f899390.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值