一、概述
目的:基于一些路况比较复杂的场景,粗标调优难以保证视野内全部区域精度,需要生成棋盘格标定文件。
步骤:
1)根据棋盘格图像估算出相机内部参数信息以及相机畸变系数
2)利用RTK采集的特征点,相机内参、相机畸变和高精地图估算出基础外参
3)对相机内外参数进行调整以提高定位精度
4)根据地图信息进行插值生成相机视野内所有插值点信息
5)最后根据插值点以及内外参生成棋盘格离线配置文件
8)利用棋盘格定位文件和真值车rtk信息进行取点调整以达到更高精度
二、内参和畸变系数生成
1)确定相机焦距,录制棋盘格视频,棋盘格黑白格的交点清晰,且未被遮挡,鱼眼相机尽量保证棋盘格黑白交点倾斜,变形不严重。棋盘格需位于相机不同位置出现(做出正对镜头、向左倾斜、向右倾斜、向上倾斜、向下倾斜、向左旋转和向右旋转的东左),如图1、图2所示
2)根据棋盘格视频截取棋盘格图片,每个相机存储一个文件夹且文件夹非中文路径。枪机运行代码calibration.py,鱼眼相机运行calibration-fishEye.py,生成相机内参”intrinsicMatrix”和相机畸变系数”distortionCofficients”,写入配置文件param.json
三、外参生成
1)根据RTK采集的特征点,相机内参、相机畸变和高精地图估算出基础外参,写入param.json配置文件,”worldPoints”记录打点RTK的经纬度和海拔,”pixelPoints”记录像素数值,”rotationVector”记录旋转参数,”transVector”记录平移参数,同时生成points.csv
2)使用points.csv和param.json通过调优工具进行外参调优,修正平移旋转参数,如图所示,外参调优工具选择合适的进行调优
平移x:上边不变,下方左右移动,减小左移,增大右移
平移y:上边不变,下方近端或者远端移动,减小往屏幕近端移动,增大往地面移动
平移Z:上边不变,下方扩散或者缩小,减小扩散,增大缩小
旋转x:整体上下移动,减小下移动,增大上移动
旋转y:整体左右移动,减小左移,增大右移动
旋转z:左下点不变,往外或者往内,往小是扩散,往大是缩小
四、地面点插值
1)运行insert Points.py,insertFlag设置为False,根据地图生成周围车道信息图
2)选择区域内车道左右边界两车道,获取到所有插值对pair,insertFlag设置为True,运行脚本将车道内填充满插值的地面点并生成插值点文件
五、配置文件生成
根据配置文件param.json和插值点文件,生成定位配置reflect.json(鱼眼相机执行getJsonFish.py,枪机执行getJson.py)。
六、取点调优
1)执行imageRegistra.py根据测试点位当前场景图片以及标定图片通过算法处理进行拼接合成,生成相应的单应矩阵matrix
2)执行getXYPoint.py,设置cuCalibFlag为Flase,根据matrix,结合棋盘格reflect.json文件,将原始相机数据和RTK数据进行精度测试,通过精度结果调整取点方式
3)和粗标调优一样,也调整yThresh、yRatio1、yRatio2、xThresh、xRatio参数去影响计算目标像素位置取值,从而影响定位精度结果进行取点调优。设置pycharm的设置,设置路径:file ->settings ->PythonScientific ->将Show plots in tool windo把对号去掉
淘宝购买链接:https://h5.m.taobao.com/awp/core/detail.htm?ft=t&id=773257274863