基于摄像头的封闭园区自动驾驶搭建–感知设备标定¶
概览¶
该用户手册旨在帮助用户完成摄像头的标定(Camera-Lidar)
前提条件¶
完成了循迹搭建–车辆循迹演示
完成了开通云服务账号向导
百度云对象存储BOS注册¶
注册方法参考百度云对象存储BOS注册与基本使用向导
开通云服务账号¶
请与商务部门联系开通云服务账号,需要提供上一步骤中注册的Bucket名称
、所属地域
和用户邮箱信息
修改配置文件¶
修改文件名称 |
修改内容 |
---|---|
|
|
注意: 上表中车型目录
需要用户根据自身车型确认。lite用户为dev_kit
,standard用户为dev_kit_standard
,单激光雷达的advanced用户为dev_kit_advanced_ne-s
,3激光雷达的advanced用户为dev_kit_advanced_sne-r
注意:所有传感器标定完成后,如果用户要使用msf定位,则需要再改为true
。
Camera-Lidar标定初始外参测量和内参标定¶
各传感器坐标系的定义及初始化外参文件的配置¶
1. Lidar、Camera的坐标系定义¶
2. Camera坐标系原点在传感器的位置¶
Camera坐标系原点在下图所示平面的中心点:
3. Lidar坐标系原点在传感器的位置¶
4. 手动测量Camera-Lidar的初始化外参文件¶
这里默认用户按照感知设备集成文档的要求正确安装了传感器,即传感器坐标系的定义与上文中的定义相同,且安装误差满足文档中的要求。
rotation:在传感器的安装满足感知设备集成文档要求的情况下,用户无需测量该值,可直接使用如下的默认值即可
rotation: w: 0.5 x: -0.5 y: 0.5 z: -0.5
translation:用户需要手动测量以Velodyne16坐标系为基坐标系,以Camera坐标系为目标坐标系的位移变换,一个Velodyne16-Camera的位移变换的示例如下所示:
translation: x: 0.67 y: -0.1 z: -0.64
传感器内参标定¶
内参包含相机的焦距、主点和畸变系数等信息,可以通过一些成熟的相机标定工具来获得,例如 ROS Camera Calibration Tools 和 Camera Calibration Toolbox for Matlab。
使用Fuel-Client采集数据¶
注意:Fuel-Client进行Camera-Lidar标定数据采集时,需要保证只有需要采集标定数据的相机工作,建议先拔掉其他相机的USB插头;多个相机标定需要分多次进行数据采集
1. 选择正确的模式、车型¶
选择
Camera-Lidar Sensor Calibration
模式根据实际情况选择正确的车型(lite用户选择
Dev Kit
车型,standard用户选择Dev Kit Standard
,单雷达的advanced用户选择Dev Kit Standard Ne-s
,3雷达的advanced用户选择Dev Kit Standard Sne-r
)
2. 启动Fuel Client
,并启动相应模块¶
在dreamview的
Tasks
标签下,首先打开Sim Control
,然后打开Fuel Client
,Fuel Client
打开后务必关闭Sim Control
在dreamview的
Module Controllers
标签下,启动Camera
、GPS
、Lidar
、Localization
模块,等待左侧状显示模块中的Camera
、GPS
、Lidar
、RTK
均为绿色时,代表模块启动成功(Localization启动后,需要等待1~2分钟才能正常输出数据)。
3. 启动Recorder
模块并开始采集¶
当左侧左侧状显示模块中的
Camera
、GPS
、Lidar
、RTK
均为绿色时,打开Recorder模块,并开始采集数据。在录制数据的时候,遥控车辆直线慢速行驶行驶,行驶10秒再停止5秒,如此反复5次。数据采集完成后,关闭
Recorder
模块停止数据录制
注意:需要光照条件好时进行标定,场地需要是直线道路,路侧两边需要有静态参照物,如建筑物、车辆,避免过多动态障碍物,避免大逆光。
使用Fuel Client
进行数据预处理¶
点击右上角的
Configuration
进入预处理界面填入测量的初始化外参
填入内参的
D
、K
矩阵参数点击
Preprocess
进行预处理等待预处理完成,提示
Data extraction is completed successfully!
代表预处理完成保存生成的预处理文件。切换到
apollo/output/sensor_calibration/camera_to_lidar/extracted_data/
目录,保存该目录下的camera_to_lidar-xxx
文件(xxx
为数据包录制的时间),这里和下文以camera_to_lidar-2021-01-12-13-49
为例
使用标定云服务生成外参文件¶
1. 上传预处理后的数据至BOS¶
注意: 必须使用开通过权限的 bucket,确认Bucket名称
、所属地域
和提交商务注册时的Bucket名称和所属区域保持一致。
将camera_to_lidar-2021-01-12-13-49
目录上传到BOS的根目录下,作为后续云标定服务读取数据的输入数据路径
。
2. 提交云标定任务¶
打开Apollo云服务页面,新建一个任务,如下图所示:
点击新建任务
后,在下拉框中选择感知标定
选项,根据实际情况填写输入输入数据路径
,这里以camera_to_lidar-2021-01-12-13-49
为例,指定输出数据路径
后,点击提交任务
(Submit Job)按钮提交。
3. 获取标定结果验证及标定外参文件¶
云标定任务完成后,将在注册的邮箱中收到一封标定结果邮件。如果标定任务成功,将包含标定外参文件。
Camera-Lidar标定结果验证:
BOS中用户指定的输出数据路径
下包含了标定结果验证图片。在产生的点云投影图像内,可寻找其中具有明显边缘的物体和标志物,查看其边缘轮廓对齐情况。如果50米以内的目标,点云边缘和图像边缘能够重合,则可以证明标定结果的精度很高。反之,若出现错位现象,则说明标定结果存在误差。当误差大于一定范围时(范围依据实际使用情况而定),该外参不可用。如下图所示,图1为准确外参的点云投影效果,图2为有偏差外参的点云投影效果。
Camera-Lidar标定外参文件:
确认邮件得到的外参文件合理后,进行如下操作:
对于6mm相机,将标定得到的内参文件重命名为
front_6mm_intrinsics.yaml
,并替换modules/calibration/data/车型目录/camera_para/
目录下的文件,将标定得到的外参文件中的rotation
、translation
的值替换掉modules/calibration/data/车型目录/camera_params/front_6mm_extrinsics.yaml
中对应的rotation
、translation
值注意不要修改frame_id
。如标定12mm摄像头,则需要修改
modules/calibration/data/车型目录/camera_para
目录下front_12mm_intrinsics.yaml
、front_12mm_extrinsics.yaml
两个文件。默认使用1个6mm、1个12mm摄像头,用户如需要使用第二个6mm摄像头时,需要自行指定文件名,并进行相应修改。
NEXT¶
现在,您已经完成摄像头感知设备标定, 接下来可以开始封闭园区自动驾驶搭建–虚拟车道线制作(如果在适配基于激光雷达的自动驾驶过程中已经制作了虚拟车道线文件,则可以跳过此步骤,进行基于摄像头的封闭园区自动驾驶搭建–感知适配)
常见问题¶
1. 进行Sensor Calibration
任务后,邮件显示任务失败¶
建议检查一下输入路径是否正确
2. 标定结果误差较大¶
标定时,确保GNSS信号状态良好,周围有轮廓清晰的静态障碍物
保证传感器的安装精度,安装误差超过要求精度时,标定结果不容易收敛