在vio系统中,camera-imu间内外参精确与否对整个定位精度起着重要的作用。所以良好的标定结果是定位系统的前提工作。
目前标定算法主要分为离线和在线标定,离线标定以kalibr为代表,能够标定camera内参、camera-imu之间位移旋转、时间延时以及imu自身的刻度系数、非正交性等。
本文基于kalibr[2]整体框架,介绍标定算法原理。
相机投影模型
这里以常用的针孔相机投影为例,而畸变模型包括最常见rantan、equidistant两种。对于其他投影、畸变模型可查阅相关资料,这里不详细叙说。对于空间中3D点怎样投影得到像素平面2D坐标:
由上图,可以看到空间三维点
由三角形相似,可以简单计算出来像素平面坐标
。实际投影成像过程不想上图那么简单,主要包含三步:
上图第二步以rantan畸变为例,对于equidistant畸变模型则是另外一种形式:
投影过程首先是算出归一化平面上点,然后再对归一化平面上点加rantan、equidistant畸变,最后再作用于内参焦距、主点,得到成像像素点坐标。
camera内参标定
camera内参标定如上图所示,可以简单概括为四步:从图像中提取标定板角点。根据标定板类型,常见三种:checkboard、april grid和circle grid,每一种都有各自提取角点的方法,具体可查询相关资料。
对于一个非线性优化问题,往往需要有一个不错的初始值。对于主点坐标
、
可以简单地初始化为图像尺寸的1/2。焦距部分参考[4],即真实世界平行的直线经过成像投影之后,不再是平行的,相交于两点(有的地方称作vashing point)。所以对标定板每一行的点,都可以在图像上拟合一个圆,两个圆交点的距离除以
即可得到焦距初始值。
把标定板作为固定参考坐标系,因为标定板尺寸已知,这样就知道每一个角点在这个参考坐标系下3D坐标。知道3D-2D的对应,即可求解出每一帧camera的pose,这个pose会作为后续优化的变