第3章传感器标定

3.1概述
标定传感器是自动驾驶感知系统中的必要环节,是后续传感器融合的必要步骤和先决条件,其目的是将两个或者多个传感器变换到统一的时空坐标系,使得传感器融合具有意义,是感知决策的关键前提。任何传感器在制造、安装之后都需要通过实验进行标定,以保证传感器符合设计指标,保证测量值的准确性。第2章介绍了智能网联车上搭载的各种类型传感器,传感器在安装到自动驾驶汽车上之后,需要对其进行标定; 同时,在车辆行驶过程中,由于震动等原因,会导致传感器位置与原位置产生偏离,因此有必要每隔一定的时间对传感器进行校准。自动驾驶汽车通过多种类型的传感器同时工作以进行环境感知与自感知,传感器的健壮性和准确性在自动驾驶汽车感知环节中尤为重要。以下将对自动驾驶领域中经典的标定问题进行详细介绍。
3.2摄像头的标定
车载摄像头以一定的角度和位置安装在车辆上,为了将车载摄像头采集到的环境数据与车辆行驶环境中的真实物体相对应,即找到车载摄像头所生成的图像像素坐标系中的点坐标与摄像机环境坐标系中的物点坐标之间的转换关系,需要进行摄像头标定。下面介绍车载摄像头中常用的单目摄像头和双目摄像头的标定。
3.2.1摄像头内参数标定
传感器的标定是建立传感器输出与现实中的值的对应关系。对单目摄像头来说,这种关系体现为现实物体在图像中的位置。因此,单目视觉的标定本质上是建立物体在环境坐标系中的坐标与图像坐标系中的坐标之间的关系。
1.  摄像头模型的建立
图31是摄像头成像示意图。坐标Oxyz是环境坐标系。设现实世界中一个物体P,在环境坐标系中的位置为(xw,yw,zw)。为了得到P在图像上的投影位置(即图像上哪个像素位置表示P),需要建立三个辅助坐标系: 摄像头坐标系、图像物理坐标系、图像像素坐标系,最终需要得到的是P点在图像像素坐标系上的投影。

■
图31摄像机成像示意图


1) 摄像头坐标系与环境坐标系的转换




如图32所示,摄像头坐标系以镜头中心为原点,以垂直镜头平面的直线为z轴建立空间直角坐标系,x轴与y轴在镜头平面上,x,y,z满足右手坐标系。

■
图32摄像头坐标系与环境坐标系


摄像头在空间中有一个位置,因此可以建立环境坐标系与摄像机坐标系之间的关系[R,T],其中T为摄像机坐标系原点相对于环境坐标系原点的平移,即摄像机的镜头中心在环境坐标系的坐标,R为摄像机坐标系相对环境坐标系的旋转矩阵。空间中的点P在摄像机坐标系中的坐标可以通过以下公式求解: 

xc
yc
zc
=Rxw
yw
zw
+T


对上述公式进行转换,得到: 

xc
yc
zc
1
=RT

01

xw
yw
zw

1


这样,就建立了环境坐标系与摄像机坐标系之间的转换关系。
2) 图像坐标系与图像像素坐标系
在计算机视觉中,图像常常以点阵的方式存储,每个像素对应着点阵中的一行与一列。图像像素坐标系完全对应这种关系。图像像素坐标系以图像左上角为原点,向右的方向为u坐标轴,向下的方向为v轴,像素在该坐标系下用二元组(u,v)表示。图33所示为摄像头坐标系示意图。
图像像素坐标系符合计算机图像处理逻辑,但图像像素坐标系坐标(u,v)仅仅代表像素的列数与行数,不带有任何物理单位,而空间中的坐标点则必须用带有物理量的单位(如厘米、米等)表示,因此引入图像物理坐标系。定义摄像头光轴与图像平面的交点为图像主点,图像物理坐标系以主点为原点,x轴与y轴分别平行于图像像素坐标系的u轴与v轴,如图34所示。

■
图33摄像头坐标系示意图





■
图34图像像素坐标系与

图像物理坐标系



设像元底边长为width,高为height,主点在图像像素坐标系下的坐标为(u0,v0),在不考虑图像畸变的情况下,图像物理坐标系下的点(xl,yl)在图像像素坐标系下的坐标可通过以下公式算出: 

u
v
1
=1width0u0

01heightv0

001
xl

yl

1


3) 小孔成像与图像物理坐标系
图35所示为小孔成像模型示意图。

■
图35小孔成像模型示意图


摄像头成像的理论基础是小孔成像。小孔成像将现实世界中的物体与图像上的投影联系起来。从摄像机成像原理上来看,图像物理坐标系的原点与摄像机的光学中心重合。当摄像头坐标系的x轴与y轴与图像物理坐标系的x轴与y轴平行时,就可以构建起图像坐标系与摄像机坐标系之间的关系。
对于物体P,在摄像机坐标系下的坐标为(xc,yc,zc)。根据几何关系,有

△OPA∽△O′P′A′

因此,成立以下关系

xlxc=ylyc=fzc


由上式可得

xl=1zc·f·xc

yl=1zc·f·yc

令s=zc,则有

s·xl

yl

1
=f000

0f00

0010
xc
yc
zc
1


如此即可得到摄像头坐标系与图像物理坐标系之间的关系。
4) 环境坐标系与图像像素坐标系的转换
在得到环境坐标系摄像机坐标系、摄像机坐标系图像像素坐标系之间的关系后,便可以求出环境坐标系与图像像素坐标系之间的转换关系。
对现实世界的点P,其在环境坐标系下的坐标为(xw,yw,zw),在图像中的位置为(u,v),两者有如下的关系: 

s·u
v
1
=1width0u0

01heightv0

001
·
f000

0f00

0010
RT
01xw
yw
zw
1


=αx0u00

0αyv00

0010
RT

01

xw
yw
zw

1
=M1M2Xw

其中,αx=fwidth,αy=fheight。
矩阵M2为环境坐标系到摄像头坐标系的坐标转换关系,是摄像头在世界坐标系下的位置姿态矩阵。在计算机视觉中,确定M2矩阵的过程通常称为视觉定位。自动驾驶汽车在车载摄像头安装之后,需要标定在车辆坐标系下的摄像头位置。此外,由于汽车行驶的颠簸和震动,车载摄像头的位置会随着时间进行缓慢的变化,因此自动驾驶汽车需要定期对摄像头位置进行重新标定,这一过程称为校准。
对矩阵M1,其四个常量αx,αy,u0,v0与摄像机的焦距、主点以及传感器等设计技术指标有关,而与外部因素(如周边环境、摄像机位置)无关,因此称为摄像头的内参。内参在摄像头出厂时就是确定的。然而由于制作工艺等问题,即使是同一生产线生产的摄像头,内参都有着些许差别,因此往往需要通过实验的方式来确定摄像头的内参。对单目摄像头的标定,通常就是指通过实验手段确定摄像头的内参。
2.  摄像头畸变矫正
在实际使用中,摄像头并不能完全精确地按照理想的针孔摄像机模型进行透视投影,通常会存在透镜畸变,即物点在实际的摄像头成像平面上生成的像与理想成像之间存在一定光学畸变误差,其畸变误差主要是径向畸变误差和切向畸变误差。其中,径向畸变是沿着透镜半径方向分布的畸变,产生的原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲,切向畸变是由于透镜本身与摄像头传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差所导致。图36所示为图像的畸变示意图36(a)中畸变导致了建筑物变弯曲。

■
图36图像的畸变



畸变是透镜的固有特性(凸透镜汇聚光线、凹透镜发散光线),无法消除,只能改善。在自动驾驶汽车上,影响摄像头工作的畸变一般有两种: 一种称为桶形畸变; 另一种称为枕形畸变。枕形畸变是由镜头引起的画面向中间“收缩”的现象。人们在使用长焦镜头或使用变焦镜头的长焦端时,较容易察觉枕形失真现象。桶形畸变则是由于镜头中透镜物理性能以及镜片组结构引起的成像画面呈桶形膨胀状的失真现象。通常在使用广角镜头或使用变焦镜头的广角端时,较容易察觉桶形失真现象。桶形畸变与枕形畸变统称为径向畸变。
在计算机视觉中,径向畸变对场景重建有着非常重要的影响。自动驾驶系统对环境的感知,要求摄像头能够实现对周边环境的高精确度重建,如果不对畸变加以矫正,是无法得到精确的环境信息。例如,环境中的目标可能出现在图像的任何区域,如果不对畸变加以矫正,那么通过视觉技术得到的目标位置和大小往往是不准确的,这会直接影响自动驾驶汽车的行驶安全。此外,自动驾驶汽车安装有多个摄像头,且在不同位置,若不考虑径向畸变,在图像拼接过程中,就会因对应特征的误注册从而导致拼接图像的模糊效应。
对一般的摄像头来讲,图像的径向畸变往往描述为一个低阶多项式模型。设观测到的图像中的某个像素(u,v)在没有畸变的情况下的图像像素坐标为(u′,v′),则二者之间的变换可以通过以下公式确定: 


u=u′(1+κ1r2c+κ2r4c)


v=v′(1+κ3r2c+κ4r4c)
其中,r2c=u′2+v′2; κ1,κ2,κ3,κ4称为径向畸变系数,也属于摄像头内参。
诸多方法可以实现标定畸变系数,其中最简单的方法称为铅垂线方法(plumbline method),其基本思想是拍摄多条直线,特别是与图像的边缘对齐的场景图像,然后通过调整畸变参数来使得图像中所有的线条都变成直线。另一种方法是使用若干个重叠图像,将径向畸变参数的估计与图像配准过程相结合,典型的代表有Sawhney and Kumar(2009),其将多层次运动模型与二次畸变矫正项用在一个从粗到精的过程中,使用基于亮度的最小化方法计算配准。Stein(1997)使用基于特征的方法,结合三维运动模型和二次径向畸变,进行畸变矫正与配准。
在现阶段,径向畸变参数的标定一般与其余内参同时进行,文献(Zhang, Hartley and Kang,2007;  Tardif, Sturm, Trudeau,et al,2009)中均提到了这些方法。感兴趣的读者可进一步阅读相关文献,探究上述的标定方法。
3.  常见的摄像头内参标定方法
摄像头标定的研究起源于摄像测量学。最初的摄像头标定都需要在一个很宽阔的地带来观察远处已经事先通过测量工具确定好位置的目标。这种标定方式成本很高,对标定人员的技术水平也有较高要求。工作人员希望有一种更加简单的标定方法。随着摄影测量学和计算机视觉技术的进步,以及室内机器人应用的需求,两种全新的标定方法——平面标定模式与自标定被开发出来。
平面标定模式是指制作一块标定板,在工作区的空间内使用一种可控的移动方式来移动该目标。这种方法称为“N平面标定法”。
在一系列的平面标定模式方法中,目前应用最广泛的是张正友于2000年提出的张正友标定法。张正友标定法通过在不同位置拍摄棋盘标定板的方式,在每个图像中找到棋盘标定板的内角点,通过内角点之间的对应关系建立对矩阵B=K-TK-1的约束,从而恢复内参矩阵K。感兴趣的读者可阅读文献[8]或在互联网中搜索“张正友标定法”来学习。此外,在本章实验中,读者可调用OpenCV的接口来使用张正友标定法进行摄像头内参的标定。
当没有标定板时,也可以通过摄像机的运动来进行标定,这种不使用已知目标进行标定的方法称为自标定。在文献(Faugeras, Luong and Maybank,1992;  Hartley and Zisserman,2004;  Moons, Van Gool and Vergauwen,2010)中提出了几种自标定的方法。自标定的方法往往需要大量精准的图像。在自动驾驶汽车系统中,通常可以在程序中设定一个周期,当使用时间到达这个周期时,摄像头开始执行自标定。
此外,当仅需恢复焦距时,还可以使用消失点方法(Caprile and Torre,1990;  Becker and Bove,1995;  Liebowitz and Zisserman,1998;  Cipolla, Drummond and Robertson,1999;  Antone and Teller,2002;  Criminisi, Reid and Zisserman,2000;  Hartley and Zisserman,2004;  Pflugfelder,2008)。
3.2.2摄像头间外参的标定
自动驾驶汽车中,为了尽可能减少感知盲区,往往采用多摄像头的模式。多摄像头之间需要确定它们之间的相对位置关系,这个过程称为摄像机的外参标定。
从另一个角度来说,摄像机的外参标定也可以称为“姿态估计”问题。两个摄像头之间相对位姿[R|t]有六个自由度(空间位置(x,y,z)与旋转关系(α,β,γ)),从理论上来讲,只要两个摄像头同时获取空间中3个点即可恢复二者之间的相对姿态。从三对对应点恢复摄像头之间的相对姿态的问题,称为“透视三点问题”(Perspective3PointProblem, P3P)。在现实中,常常使用3个以上的点来恢复相对姿态,以提高健壮性,P3P问题被推广为PnP问题。
最初研究者使用直接线性法(Direct Linear Transform, DLT)解决PnP问题,之后为了提升精度,研究者们提出了健壮线性化的重投影误差,开始采用迭代的方法来求解PnP问题,并由此提出了姿态估计中著名的光束平差法(Bundle Adjustment, BA)。
自动驾驶汽车中,典型的外参标定有双目摄像头的外参标定、长焦摄像头与广角摄像头的外参标定。
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。在自动驾驶领域,双目视觉在实现目标识别的同时,还可以获取目标的深度信息。在很多低成本的自动驾驶技术中,会选择双目视觉来替代激光雷达。图37所示为标准双目视觉模型示意图。

■
图37标准双目视觉模型示意图


在图37所示的这种放置方式中,要求两个摄像头光轴平行、光心处于同一水平线上。在标准双目视觉中,要求摄像机的型号、配置、内参等完全一样,因此,在双目标定之前,需要对两个摄像头的内参数分别进行校准。
图37中,O1,O2分别为左、右摄像头光心,O,O′分别为左、右成像中心。 线段O1O和O2O′长度相同,均为摄像机有效焦距f。摄像头的基准线平行于X轴,且基准线长为L。
设空间中有一点P,P在左、右摄像头坐标系下的坐标分别为P(xc1,yc1,zc1)、P(xc2,yc2,zc2)。点P通过透镜成像在像平面上的点分别为P1、P2,P1在左图像坐标系下的坐标为P1(x1,y1),P2在右图像坐标系下的坐标为P2(x2,y2)。根据P在环境坐标系、图像像素坐标系中的位置,可以利用3.2.1节提到的方法对两个摄像头分别进行标定。
由于在显示中,双目立体视觉中的双摄像头的安装不可能严格满足光轴平行、光心处于同一水平线的条件,因此需要对两个摄像头的位置进行校正。
设左侧摄像头相对于环境坐标系的旋转矩阵为R*1,平移量为T*1,右侧摄像头相对于环境坐标系的旋转矩阵为R*2,平移量为T*2,则两个摄像头之间的关系可表示为: 

R*=R*2R*-11

T*=T*2-R*T*1

双目立体视觉系统的两个摄像头之间的外参可通过上述公式表示。
如图38所示,两台摄像头的光轴不是平行的,同时两台摄像头间的基线也没有对准,这时必须要对两台摄像头的坐标系进行相应的平移和旋转才能达到理想的效果。

■
图38双目图像翻转



这样就能通过旋转矩阵R来实现图像平面的旋转。根据Bouguet算法,将右摄像头图像平面旋转到左摄像头图像平面的旋转矩阵应被平分成两部分,左、右摄像头分别各旋转一半。平移主要通过平移向量T来实现,它表示将一个图像平面坐标系的原点平移到另一个图像平面坐标系原点的平移向量。以左侧摄像头图像平面原点为基准,将右侧摄像头图像原点Pr平移到左侧图像原点Pl上,则平移向量T=Pl-Pr。这样,两图像平面按下式进行平移和旋转,就能使两摄像头平面的光轴互相平行,同时也能保证两摄像头间的行对准。


Pcorrected=R*(P-T*)

设空间中有三维点p,左摄像头的光心与点p的射线用x^0表示,则点p在左图像中的观测位置为p0=d0x^0。设左摄像头与右摄像头之间的变换关系为[R|t],则点p在右图像中的坐标为d1x^1=Rp0+t。经过数学变换,可以得到x^0与x^1之间的约束关系: 


x^1Ex^0=0
上式中,E称为本质矩阵(essential matrix)。可以在左、右图像中寻找若干个对应点来求解本质矩阵,通过本质矩阵进一步分解出[R|t],这样就实现了双目摄像头外参的标定。
双目摄像头的标定遵循以下步骤: 
(1)  对原始的左右视图分别进行内参标定,根据内参进行畸变矫正; 
(2) 根据对应特征点计算本质矩阵; 
(3) 从本质矩阵中恢复出摄像头外参[R|t]; 
(4)  进行图像剪裁。
3.3激光雷达的标定
激光雷达作为Apollo自动驾驶平台的主要传感器之一,在感知、定位方面发挥着重要作用。同摄像头一样,激光雷达在使用之前也需要对其内外参数进行标定。内参标定指的是其内部激光发射器坐标系与雷达自身坐标系的转换关系,在出厂之前已经标定完成,可以直接使用。自动驾驶系统需要进行的是外参的标定,即激光雷达自身坐标系与车体坐标系的关系。
激光雷达与车体为刚性连接,两者间的相对姿态和位移固定不变。为了建立激光雷达之间以及激光雷达与车辆之间的相对坐标关系,需要对激光雷达的安装进行标定,并使激光雷达数据从激光雷达坐标系统转换至车体坐标系上。以Velodyne VLP16激光雷达为例,该激光雷达以正上方为z轴,电缆线接口方向为y轴的负方向,通过右手法则来确定x轴方向。图39所示为激光雷达坐标系。


■
图39激光雷达坐标系




■
图310车体坐标系与激光雷达坐标系


车体坐标系以车辆后轴中心为坐标原点,垂直地面向上为z轴,朝前为x轴,按照右手坐标系,确定坐标系y轴方向。两个三维空间直角坐标系之间的转换关系可以用旋转矩阵加平移矩阵来表示。如图310所示,P点在Oxyz坐标系下的坐标为P(x,y,z),在Ox′y′z′坐标系下的坐标为P′(x′,y′,z′)。P′点和P点的坐标转换关系可以表示为

x
y
z
=R
x′
y′
z′
+T


可见,如果知道了α、β、γ三个角度以及x、y、z三个平移量,就可以求得两个坐标系的旋转、平移矩阵,实现坐标转换。这六个物理量分别代表旋转和平移,易于理解和检验标定结果是否正确。当然直接测量这些物理量可能会有困难,为此进一步推导坐标转换方程,可得

x
y
z
1
=cosβcosγcosαcosγ-cosγsinαsinβsinαsinγ+cosαcosγcosβΔx

-cosβsinγcosαcosγ+sinαsinβsinγcosαsinβsinγΔy

-sinβ-cosβsinαcosαcosβΔz

0001

x′
y′
z′
1



令H等于上式中的转化矩阵,那么标定的目的可以看成获取矩阵H中的6个参数。
通过实验采集同一个点在两个坐标系下的真实坐标,即同名点,建立一系列的方程组,可以求出这16个未知参数。
在自动驾驶汽车上,通常需要将激光雷达与惯性导航单元(IMU)坐标系进行标定,来建立激光雷达与车体坐标系之间的关系。激光雷达与车体之间的外参是感知系统建立环境模型的重要参数之一,不准确的外参会对感知系统及规划和决策系统产生负面影响。尽管激光雷达与车体之间的外参可以通过测量得到,但为了获得更精确的外参信息,自动驾驶工程师会在自动驾驶汽车出厂之后对二者进行标定。参考文献(J. Underwood, A. Hill, and S. Scheding, 2007)中,作者将反光带覆盖在固定于平坦地面的垂直杆上,通过不同的航向角在极点周围驾驶车辆来收集数据,使用顺序二次规划的方法来估计激光雷达的外参。本书篇幅所限,就不展开描述,感兴趣的读者可自行阅读了解。
在自动驾驶汽车中,已经越来越多地使用激光雷达与IMU相融合来进行定位。激光雷达与IMU之间的外参标定,除了能够建立激光雷达与车体之间的关系,还可应用于车辆定位。激光雷达与IMU可以一起为车辆提供精确的姿态估计。IMU可快速地测量车体的运动状态,但随着时间的推移,IMU的定位误差会不断累积,导致位置的测量发生漂移。激光雷达能够通过激光光束精确测量出从传感器到物体的距离和方位角的位置,与IMU的定位信息相结合,能够为车辆提供高精度的定位信息。
3.3.1激光雷达与激光雷达之间的外参标定
对自动驾驶汽车来说,有时会存在多个激光雷达的情况,每一个激光雷达获取的外部环境都必须准确地映射到车体坐标系下。因此,当存在多个激光雷达时,需要对多个激光雷达的相对位置进行标定和校准。
激光雷达之间的外参标定有多种思路,其中较为常用的是通过不同激光雷达与车体之间的坐标转换关系来间接推导出激光雷达之间的坐标转换关系。
在文献(C. Cao, M.Sands, and J. Spletzer, 2010)中,作者提出了一种应用在移动车辆平台上的自动在线的过激光雷达标定方法。该方法设定一条标定路线,让车辆沿着这条线行驶,进行自标定。作者受到激光雷达摄像头外参标定的启发,在标定路线上的垂直杆上贴上反光带作为特征点,以这些特征点建立外参的约束条件,进行标定,如图311所示。

■
图311贴着反光纸的路标和路标的点云图像与提取出的特征


设在标定路线上有Nt个路标点,车上共有Nl个激光雷达。设激光雷达Li扫描到一个特征点Xj,Li,根据坐标转换,在时刻t,其在空间中的真实坐标为


Xj,W=RWV(t)(RVLiXj,Li+TVLi)+TWV(t)
上式中,[RWV(t)|TWV(t)]可通过IMU测量出来,因此上式中的未知量仅有[RVLi|TVLi]。当我们能够得到特征点在空间中的位置估计时,可以直接利用最小二乘法来求解参数: 


minRVLi,TVLi,X*j,W∑Nli=1∑Ntj=1‖Xj,W-X*j,W‖2

式中,X*j,W为特征点在空间中的位置估计。本文中将上述的最小二乘问题转化为二阶锥优化(SOCP)来求解,求解出激光雷达与车体之间的关系,并进一步推导出激光雷达与激光雷达之间的外参,如图312所示。


■
图312未标定外参的两个激光雷达扫描图和标定之后

的激光雷达扫描图



作者对其算法进行了测试,实验结果表明,本书的方法无论从精度还是计算时间,均优于前人的算法。

3.3.2激光雷达与摄像机的标定
在自动驾驶车辆上,激光雷达与无人驾驶汽车为刚性连接,两者间的相对姿态和位移固定不变,因此,激光雷达扫描获得的数据点,在环境坐标系中有唯一的位置坐标与之对应。同样,摄像机在环境坐标系中也有一个位移的位置坐标,因此,激光雷达与摄像机之间存在着固定的坐标转换。激光雷达与摄像机的联合标定,就是通过提取标定物在单线激光雷达和图像上的对应特征点,完成单线激光雷达坐标、摄像机坐标、图像像素坐标等多个传感器坐标的统一,实现激光雷达与摄像机的空间校准。
当完成摄像机外参标定、激光雷达外参标定之后,二者之间的关系其实就可以完全确定,激光雷达扫描点可投影到图像像素坐标系。
当摄像机与激光雷达同时观察点P时,点P在摄像机自身环境坐标系中的坐标为Pvc(xvc,yvc,zvc),在摄像机图像的图像像素坐标系下的投影坐标为U=(u,v,1)T,在激光雷达坐标系下的坐标为Pl(xl,yl,zl)。
设激光雷达摄像机的转换关系为[R*|T*],则激光点云中的扫描点(xl,yl,zl)在图像像素坐标系中的坐标(u,v)可通过以下方式算出: 

u
v
1
=KR*xl
yl
zl
+T*


其中,K=fx0u0

0fyv0

001为摄像机的内参矩阵。
对上式进行变换可得

R*xl
yl
zl
+T*=K-1u
v
1


激光雷达与摄像机的标定,就是去求解上式中的[R*|T*]。
易知,[R*|T*]共有12个参数需要求解,因此理论上至少需要4组激光雷达的对应点才能得到结果。为了提高精度,一般在标定过程中使对应点的数量n>4,使用最小二乘法进行求解。
激光雷达与摄像机的外参标定是学术界研究的热点问题。目前的标定方法主要分为两个流派: 使用标定目标(标定板或标定块)的标定方法与自标定方法。使用标定板来进行标定的典型方法(R.Unnikrishnan and M. Hebert, 2005;  G. Pandey, J. McBride, S. Savarese and R. Eustice, 2010;  F. M. Mirzaei, D. G. Kottas and S. I. Roumeliotis, 2012)不少。2005年R. Unnikrishnan开创了使用黑白棋盘的激光雷达摄像机外参标定方法,逐渐引出了各种各样的标定方法。然而R.Unnikrishnan的方法需要人工的介入,需要选择关键点来进行标定,因此在自动驾驶中往往只用于激光雷达的出厂标定。在2018年,Lipu Zhou等人提出了基于线和平板的自动外参标定方法,相比前人的方法,该算法在实现更高的精度的同时,所需要的信息更少,对自动驾驶汽车来说,有着广泛的应用。
Lipu Zhou使用一块黑白标定板,在摄像机图像中使用边界分割来找到标定板的边界,在激光雷达点云中使用RANSAC算法找到标定板扫描线的边界,通过这两个边界来建立激光雷达与摄像机之间位姿关系的约束,如图313所示。


■
图313从图像和点云中提取出的标定板边界




在点云中,扫描到标定板上的线,对应于图像中的一条极线,且激光雷达扫描到的标定板与摄像机坐标系下的标定板平行,这样可以建立起激光雷达坐标系摄像机坐标系的左边转换关系方程式,通过最小二乘法来求解出外参。
除棋盘标定板之外,还可以使用带孔洞的标定板来进行标定,如文献(Carlos Guindel,2017)中,就采用带有四个圆形孔洞的标定板来进行标定,如图314所示。


■
图314带有四个孔洞的标定板与其激光点云扫描图


基于标定目标的标定方法大多属于离线标定(offline),当我们在室外时,可以采用自标定的方法来进行在线标定。随着计算机视觉的发展,近几年越来越多地出现了基于特征表达的在线自标定算法,如G. Pandey(2014)、Z. Taylor and J. Nieto(2012)等基于激光反射值互信息(mutual information)的在线标定方法(见图315),J. Castorena(2016)基于结构光边缘对准的在线标定方法(见图316),J. Levinson and S. Thrun(2013)、S. Bileschi(2009)基于密度图的在线标定方法(见图317),都是目前在线标定方法的翘楚。有兴趣的读者可通过阅读这些文献来学习这些方法。


■
图315基于激光反射值互信息的在线标定方法



■
图316基于结构光边缘对准的在线标定方法



■
图317基于密度图的在线标定方法


3.4
联合标定实验

自动驾驶汽车中的传感器数量多。例如,搭载Apollo平台的自动驾驶汽车中的传感器包括激光雷达、长焦镜头、短焦镜头、毫米波雷达、超声波雷达、GPS/IMU组合惯导,我们需要标定长焦镜头与短焦镜头、摄像机组与激光雷达、激光雷达与GPS/IMU组合惯导等传感器之间的外参。
一对一对进行标定往往费时费力,因此研究者们提出了“联合标定”的概念。联合标定是指同时标定两组以上的外参。在Apollo中,提供了可以使用的联合标定工具,下面对Apollo平台标定工具的使用方式做一个简单说明。
在Apollo 中,有3项标定功能: 摄像机到摄像机的标定、摄像机到多线激光雷达的标定,以及毫米波雷达到摄像机的标定。Velodyne HDL64用户还可以使用Apollo 1.5提供的标定服务平台。标定工具均以车载可执行程序的方式提供。用户仅需要启动相应的标定程序,即可实时完成标定工作并进行结果验证。标定结果以 .yaml 文件形式返回。
1. 准备工作
1) 下载标定工具
下载标定工具,并解压缩到$APOLLO_HOME/modules/calibration目录下(APOLLO_HOME是Apollo代码的根目录)。
2) 摄像机内参文件
内参包含摄像机的焦距、主点和畸变系数等信息,可以通过一些成熟的摄像机标定工具来获得,例如 ROS Camera Calibration Tools 和 Camera Calibration Toolbox for Matlab。内参标定完成后,需将结果转换为 .yaml 格式的文件。下面是一个正确的内参文件样例: 

header:  

seq:  0

stamp:  

secs:  0

nsecs:  0

frame_id:  short_camera

height:  1080

width:  1920

distortion_model:  plumb_bob

D:  [-0.535253, 0.259291, 0.004276, -0.000503, 0.0]

K:  [1959.678185, 0.0, 1003.592207, 0.0, 1953.786100, 507.820634, 0.0, 0.0, 1.0]

R:  [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]

P:  [1665.387817, 0.0, 1018.703332, 0.0, 0.0, 1867.912842, 506.628623, 0.0, 0.0, 0.0, 1.0, 0.0]

binning_x:  0

binning_y:  0

roi:  

x_offset:  0

y_offset:  0

height:  0

width:  0

do_rectify:  False

建议每一只摄像机都要单独进行内参标定,而不是使用统一的内参结果。这样可以提高外参标定的准确性。
初始外参文件本工具需要用户提供初始的外参值作为参考。一个良好的初始值可以帮助算法得到更精确的结果。下面是一个正确的摄像机到激光雷达的初始外参文件样例,其中translation为摄像机相对激光雷达的平移距离关系,rotation为旋转矩阵的四元数表达形式: 

header: 

seq:  0

stamp: 

secs:  0

nsecs:  0

frame_id:  velodyne64

child_frame_id:  short_camera

transform: 

rotation: 

y:  0.5

x:  -0.5

w:  0.5

z:  -0.5

translation: 

x:  0.0

y:  1.5

z:  2.0

注意: 摄像机到激光雷达的标定方法比较依赖于初始外参值的选取,一个偏差较大的外参,有可能导致标定失败。所以,请在条件允许的情况下,尽可能提供更加精准的初始外参值。
2.  标定场地
我们的标定方法是基于自然场景的,所以一个理想的标定场地可以显著地提高标定结果的准确度。建议选取一个纹理丰富的场地,如有树木、电线杆、路灯、交通标志牌、静止的物体和清晰的车道线。图318所示是一个较好的标定环境示例。


■
图318一个较好的标定场地


所需topics确认程序所需传感器数据的topics均有输出。各个程序所需的topics如表31~表33所示。

表31摄像机到摄像机标定所需的topics



传感器topics名称topics发送频率/Hz

Short_Camera/apollo/sensor/camera/traffic/image_short9
Long_Camera/apollo/sensor/camera/traffic/image_long9
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2


表32摄像机到64线激光雷达标定所需topics



传感器topics名称topics发送频率/Hz

Short_Camera/apollo/sensor/camera/traffic/image_short9
LiDAR/apollo/sensor/velodyne64/compensator/PointCloud210
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2


表33毫米波雷达到摄像机标定所需topics



传感器topics名称topics发送频率/Hz

Short_Camera/apollo/sensor/camera/traffic/image_short9
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2

3.  标定流程
所有标定程序需要用到车辆的定位结果。请确认车辆定位状态为56,否则标定程序不会开始采集数据。输入以下命令可查询车辆定位状态: 

rostopic echo /apollo/sensor/gnss/ins_stat

1) 摄像机到摄像机
(1) 运行方法。
使用以下命令来启动标定工具: 

cd /apollo/scripts

bash sensor_calibration.sh camera_camera

(2) 采集标定数据。
由于两个摄像机的成像时间无法完全同步,所以在录制数据的时候,尽量将车辆进行慢速行驶,可以有效地缓解因时间差异所引起的图像不匹配问题。
两个摄像机需有尽量大的图像重叠区域,否则该工具将无法进行外参标定运算。
(3) 配置参数。
配置文件保存在以下路径,配置项说明请参照表34。

/apollo/modules/calibration/camera_camera_calibrator/conf/camera_camera_calibrtor.conf


表34摄像机到摄像机标定程序配置项说明



配置项说明

long_image_topic长焦摄像机的图像
short_image_topic广角摄像机的图像
odometry_topic车辆定位
ins_stat_topic车辆定位状态
long_camera_intrinsics_filename长焦摄像机的内参文件路径
short_camera_intrinsics_filename广角摄像机的内参文件路径
init_extrinsics_filename初始外参文件路径
output_path标定结果输出路径
max_speed_kmh最大车速限制,单位为km/h

(4) 输出内容。
外参文件:  长焦摄像机到广角摄像机的外参文件。
验证参考图片: 包括一张长焦摄像机图像、一张广角摄像机图像及一张长焦摄像机依据标定后的外参投影到广角摄像机的去畸变融合图像。
2) 摄像机到多线激光雷达
(1) 运行方法。
使用以下命令来启动标定工具: 

cd /apollo/scripts

bash sensor_calibration.sh lidar_camera

(2) 采集标定数据。
为避免时间戳不同步,在录制数据的时候,尽量使车辆慢速行驶,这样可以有效地缓解因时间差异所引起的标定问题。
摄像机中需看到一定数量的投影点云,否则该工具将无法进行外参标定运算。因此,建议使用短焦距摄像机来进行摄像机激光雷达的标定。
(3) 配置参数。
配置文件保存在以下路径,配置项说明请参照表35。

/apollo/modules/calibration/lidar_camera_calibrator/conf/lidar_camera_calibrtor.conf


表35摄像机到多线激光雷达标定程序配置项说明



配置项说明

image_topic摄像机的图像
lidar_topicLiDAR的点云
odometry_topic车辆定位
ins_stat_topic车辆定位状态
camera_intrinsics_filename摄像机的内参文件路径
init_extrinsics_filename初始外参文件路径
output_path标定结果输出路径
calib_stop_count标定所需截取的数据站数
max_speed_kmh最大车速限制,单位为km/h


(4) 输出内容。
外参文件: 摄像机到多线激光雷达的外参文件。
验证参考图片: 两张激光雷达点云利用标定结果外参投影到摄像机图像上的融合图像,分别是依据点云深度渲染的融合图像和依据点云反射值渲染的融合图像。
3) 摄像机到毫米波雷达
(1) 运行方法。
使用以下命令来启动标定工具: 

cd /apollo/scripts

bash sensor_calibration.sh radar_camera

(2) 采集标定数据。
请将车辆进行低速直线行驶,标定程序仅会在该条件下开始采集数据。
(3) 配置参数。
配置文件保存在以下路径,配置项说明请参照表36。

/apollo/modules/calibration/radar_camera_calibrator/conf/radar_camera_calibrtor.conf


表36摄像机到毫米波雷达标定程序配置项说明



配置项说明

image_topic摄像机的图像
radar_topicRadar的数据
odometry_topic车辆定位
ins_stat_topic车辆定位状态
camera_intrinsics_filename摄像机的内参文件路径
init_extrinsics_filename初始外参文件路径
output_path标定结果输出路径
max_speed_kmh最大车速限制,单位为km/h


(4) 输出内容。
外参文件: 短焦摄像机到毫米波雷达的外参文件。
验证参考图片: 将毫米波雷达投影到激光雷达坐标系的结果,需运行radar_lidar_visualizer工具。具体方法可参阅标定结果验证章节。
4) 标定结果获取
所有标定结果均保存在配置文件中所设定的 output 路径下,标定后的外参以.yaml 格式的文件提供。此外,根据传感器的不同,标定结果会保存在 output 目录下的不同文件夹中,具体如表37所示。

表37标定结果保存路径



传感器外参保存路径

Short_Camera[output]/camera_params
Long_Camera[output]/camera_params
Radar[output]/radar_params

5) 标定结果验证
当标定完成后,会在 [output]/validation 目录下生成相应的标定结果验证图片。下面会详细介绍每一类验证图片的基本原理和查看方法。
(1) 摄像机到摄像机标定。
基本方法: 根据长焦摄像机投影到短焦摄像机的融合图像进行判断,绿色通道为短焦摄像机图像,红色和蓝色通道是长焦投影后的图像,目视判断检验对齐情况。在融合图像中的融合区域,选择场景中距离较远处(50m以外)的景物进行对齐判断,能够重合则精度高,出现粉色或绿色重影(错位)则存在误差,当误差大于一定范围(范围依据实际使用情况而定)时,标定失败,需重新标定(正常情况下,近处物体因受视差影响,在水平方向存在错位,且距离越近错位量越大,此为正常现象。垂直方向不受视差影响)。
结果示例: 图319为满足精度要求外参效果,图320为不满足精度要求的现象,需重新进行标定过程。

■
图319良好的长焦摄像头与短焦摄像头标定结果



■
图320错误的长焦摄像头与短焦摄像头的标定结果


(2) 摄像机到多线激光雷达标定。
基本方法: 在产生的点云投影图像内,可寻找其中具有明显边缘的物体和标志物,查看其边缘轮廓对齐情况。如果50m以内的目标,点云边缘和图像边缘能够重合,则可以证明标定结果的精度很高。反之,若出现错位现象,则说明标定结果存在误差。当误差大于一定范围(范围依据实际使用情况而定)时,该外参不可用。
结果示例: 图321为准确外参的点云投影效果,图322为有偏差外参的点云投影效果。


■
图321良好的摄像机到多线激光雷达标定结果



■
图322错误的摄像机到激光雷达标定结果


(3) 毫米波雷达到摄像机。
基本方法: 为了更好地验证毫米波雷达与摄像机间外参的标定结果,引入激光雷达作为桥梁,通过同一系统中毫米波雷达与摄像机的外参和摄像机与激光雷达的外参,计算得到毫米波雷达与激光雷达的外参,将毫米波雷达数据投影到激光雷达坐标系中与激光点云进行融合,并画出相应的鸟瞰图进行辅助验证。在融合图像中,白色点为激光雷达点云,绿色实心圆为毫米波雷达目标,通过图中毫米波雷达目标与激光雷达检测目标是否重合匹配进行判断,如果大部分目标均能对应匹配,则满足精度要求,否则不满足,需重新标定。
结果示例: 图323为满足精度要求外参效果,图324为不满足精度要求外参效果。

■
图323良好的毫米波雷达到激光雷达投影结果




■
图324错误的毫米波雷达到多线激光雷达投影结果



注意事项: 为了得到毫米波雷达目标和激光雷达点云融合的验证图像,系统会自动或手动调用毫米波雷达到激光雷达的投影工具(radar_lidar_visualizer)进行图像绘制和生成过程。该投影工具在启动时会自动载入毫米波雷达与摄像机的外参文件及摄像机与激光雷达的外参文件,因此在启动之前,需要先进行相应的标定工具或将两文件以特定的文件名放在相应路径中,以备工具调用。
使用以下命令来启动radar_lidar_visualizer工具: 

cd /apollo/scripts bash sensor_calibration.sh visualizer

radar_lidar_visualizer工具的配置文件保存在以下路径,配置项说明请参照表38。

/apollo/modules/calibration/radar_lidar_visualizer/conf/radar_lidar_visualizer.conf


表38毫米波雷达到激光雷达投影工具配置项说明



配置项说明

radar_topicRadar的数据
lidar_topicLiDAR的点云
radar_camera_extrinsics_filename毫米波雷达到摄像机的外参文件
camera_lidar_extrinsics_filename摄像机到激光雷达的外参文件
output_path标定结果输出路径

验证图片同样保存在 [output]/validation 目录下。
3.5
本章小结

自动驾驶采用多传感器组合实现对环境的感知,为了提高信息的可信度,可以采用多传感器数据融合技术,为了进行融合首先必须进行传感器的标定,即进行各种传感器坐标系之间的转换。本章分别介绍了摄像机、激光雷达以及多传感器组合等常见车载传感器的标定原理和标定方法,包括摄像机的标定以及多传感器外参标定等; 最后,以搭载Apollo平台的自动驾驶车辆为例,介绍了Apollo平台标定工具的使用。
参考文献

[1]Baidu. Apollo 2.0传感器标定方法使用指南[EB/OL].https://github.com/LHospitalLKY/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide_cn.md.

[2]王苏娅. 双目立体视觉分析方法研究[D].西安: 西安电子科技大学,2011.

[3]王文豪,高利.一种基于OpenCV的车道线检测方法[J].激光杂志,2019,40(01): 4447.

[4]DUANE C B. Closerange camera calibration[J]. Photogramm Eng, 1971, 37(8):  855866.

[5]张书佩. 基于双目视觉的目标跟踪测速[A]. Information Engineering Research Institute, USA、Asia Pacific HumanComputer Interaction Research Center, Hong Kong.Proceedings of 2017 4th International Conference on Power and Energy Systems (PES 2017)[C].Information Engineering Research Institute, USA、Asia Pacific HumanComputer Interaction Research Center, Hong Kong: 智能信息技术应用学会,2017: 7.

[6]ASADA N, AMANO A, BABA M. Photometric calibration of zoom lens systems[C]//Pattern Recognition, 1996. Proceedings of the 13th International Conference IEEE, 1996, 1:  186190.

[7]ZHANG Z. A flexible new technique for camera calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22.

[8]LI M. Camera calibration of a headeye system for active vision[C]//European Conference on Computer Vision. Springer, Berlin, Heidelberg, 1994:  541554.

[9]叶刚. 城市环境基于三维激光雷达的自动驾驶车辆多目标检测及跟踪算法研究[D].北京: 北京理工大学,2016.

[10]LIU W. LiDARIMU time delay calibration based on iterative closest point and iterated sigma point kalman filter[J]. Sensors, 2017, 17(3):  539.

[11]GAO C, SPLETZER J R. Online calibration of multiple LIDARs on a mobile vehicle platform[C]//2010 IEEE International Conference on Robotics and Automation. IEEE, 2010:  279284.

[12]ZHOU L, LI Z, KAESS M. Automatic extrinsic calibration of a camera and a 3D lidar using line and plane correspondences[C]//2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2018:  55625569.

[13]GUINDEL C, BELTRN J, MARTN D, et al. Automatic extrinsic calibration for lidarstereo vehicle sensor setups[C]//2017 IEEE 20th International Conference on Intelligent Transportation Systems (ITSC). IEEE, 2017:  16.

[14]PANDEY G, MCBRIDE J R, SAVARESE S, et al. Automatic extrinsic calibration of vision and lidar by maximizing mutual information[J]. Journal of Field Robotics, 2015, 32(5):  696722.

[15]TAYLOR Z, NIETO J. A mutual information approach to automatic calibration of camera and lidar in natural environments[C]//Australian Conference on Robotics and Automation. 2012:  35.

[16]FREMONT V, BONNIFAIT P. Extrinsic calibration between a multilayer lidar and a camera[C]//Multisensor Fusion and Integration for Intelligent Systems, 2008. MFI 2008. IEEE International Conference. IEEE, 2008:  214219.

[17]WANG C C. Extrinsic calibration of a vision sensor mounted on a robot[J]. IEEE Transactions on Robotics and Automation, 1992, 8(2):  161175.

[18]MIRZAEI F M, KOTTAS D G, ROUMELIOTIS S I. 3D LIDARcamera intrinsic and extrinsic calibration:  Identifiability and analytical leastsquaresbased initialization[J]. The International Journal of Robotics Research, 2012, 31(4):  452467.

[19]PANDEY G, MCBRIDE J R, SAVARESE S, et al. Automatic Targetless Extrinsic Calibration of a 3D Lidar and Camera by Maximizing Mutual Information[C]//AAAI. 2012.