欢迎使用Apollo传感器标定服务。本文档提供在Apollo 2.0中新增的3项传感器标定程序的使用流程说明,分别为:相机到相机的标定,相机到多线激光雷达的标定,以及毫米波雷达到相机的标定。

文档概览

  • 概述
  • 准备工作
  • 标定流程
  • 标定结果获取
  • 标定结果验证

概述

在Apollo 2.0中,我们新增了3项标定功能:相机到相机的标定,相机到多线激光雷达的标定,以及毫米波雷达到相机的标定。对于多线激光雷达到组合惯导的标定,请参考多线激光雷达-组合惯导标定说明。Velodyne HDL64用户还可以使用Apollo 1.5提供的标定服务平台。标定工具均以车载可执行程序的方式提供。用户仅需要启动相应的标定程序,即可实时完成标定工作并进行结果验证。标定结果以 .yaml 文件形式返回。

准备工作

  1. 下载标定工具,并解压缩到$APOLLO_HOME/modules/calibration目录下。(APOLLO_HOME是apollo代码的根目录)

  2. 相机内参文件

    内参包含相机的焦距、主点和畸变系数等信息,可以通过一些成熟的相机标定工具来获得,例如 ROS Camera Calibration Tools 和 Camera Calibration Toolbox for Matlab。内参标定完成后,需将结果转换为 .yaml 格式的文件。下面是一个正确的内参文件样例:

    header: seq: 0stamp: secs: 0nsecs: 0frame_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: 0y_offset: 0height: 0width: 0do_rectify: False
    

    我们建议每一只相机都需要单独进行内参标定,而不是使用统一的内参结果。这样可以提高外参标定的准确性。

  3. 初始外参文件

    本工具需要用户提供初始的外参值作为参考。一个良好的初始值可以帮助算法得到更精确的结果。下面是一个正确的相机到激光雷达的初始外参文件样例,其中translation为相机相对激光雷达的平移距离关系,rotation为旋转矩阵的四元数表达形式:

    header:seq: 0stamp:secs: 0nsecs: 0frame_id: velodyne64
    child_frame_id: short_camera
    transform:rotation:y: 0.5x: -0.5w: 0.5z: -0.5translation:x: 0.0y: 1.5z: 2.0
    

    注意:相机到激光雷达的标定方法比较依赖于初始外参值的选取,一个偏差较大的外参,有可能导致标定失败。所以,请在条件允许的情况下,尽可能提供更加精准的初始外参值。

  4. 标定场地

    我们的标定方法是基于自然场景的,所以一个理想的标定场地可以显著地提高标定结果的准确度。我们建议选取一个纹理丰富的场地,如有树木,电线杆,路灯,交通标志牌,静止的物体和清晰车道线。图1是一个较好的标定环境示例:

    图1 一个良好的标定场地

  5. 所需Topics

    确认程序所需传感器数据的topics均有输出。如何查看传感器有数据输出?

    各个程序所需的topics如下表1-表3所示:

    表1. 相机到相机标定所需topics

    传感器 Topic名称 Topic发送频率(Hz)
    Short_Camera /apollo/sensor/camera/traffic/image_short 9
    Long_Camera /apollo/sensor/camera/traffic/image_long 9
    INS /apollo/sensor/gnss/odometry 100
    INS /apollo/sensor/gnss/ins_stat 2

    表2. 相机到64线激光雷达标定所需topics

    传感器 Topic名称 Topic发送频率(Hz)
    Short_Camera /apollo/sensor/camera/traffic/image_short 9
    LiDAR /apollo/sensor/velodyne64/compensator/PointCloud2 10
    INS /apollo/sensor/gnss/odometry 100
    INS /apollo/sensor/gnss/ins_stat 2

    表3. 毫米波雷达到相机标定所需topics

    传感器 Topic名称 Topic发送频率(Hz)
    Short_Camera /apollo/sensor/camera/traffic/image_short 9
    INS /apollo/sensor/gnss/odometry 100
    INS /apollo/sensor/gnss/ins_stat 2

标定流程

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

```bash
rostopic echo /apollo/sensor/gnss/ins_stat
```

相机到相机

  1. 运行方法

    使用以下命令来启动标定工具:

    cd /apollo/scripts
    bash sensor_calibration.sh camera_camera
    
  2. 采集标定数据

    • 由于两个相机的成像时间无法完全同步,所以在录制数据的时候,尽量将车辆进行慢速行驶,可以有效地缓解因时间差异所引起的图像不匹配问题。
    • 两个相机需有尽量大的图像重叠区域,否则该工具将无法进行外参标定运算。
  3. 配置参数

    配置文件保存在以下路径,详细说明请参照表4。

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

    表4. 相机到相机标定程序配置项说明

    置项 说明
    ong_image_topic 长焦相机的图像topic
    hort_image_topic 广角相机的图像topic
    dometry_topic 车辆定位topic
    ns_stat_topic 车辆定位状态topic
    ong_camera_intrinsics_filename 长焦相机的内参文件路径
    hort_camera_intrinsics_filename 广角相机的内参文件路径
    nit_extrinsics_filename 初始外参文件路径
    utput_path 标定结果输出路径
    ax_speed_kmh 最大车速限制,单位km/h
  4. 输出内容

    • 外参文件: 长焦相机到广角相机的外参文件。
    • 验证参考图片:包括一张长焦相机图像、一张广角相机图像及一张长焦相机依据标定后的外参投影到广角相机的去畸变融合图像。

相机到多线激光雷达

  1. 运行方法

    使用以下命令来启动标定工具:

    cd /apollo/scripts
    bash sensor_calibration.sh lidar_camera
    
  2. 采集标定数据

    • 为避免时间戳不同步,在录制数据的时候,尽量将车辆进行慢速行驶,可以有效地缓解因时间差异所引起的标定问题。
    • 相机中需看到一定数量的投影点云,否则该工具将无法进行外参标定运算。因此,我们建议使用短焦距相机来进行相机-激光雷达的标定。
  3. 配置参数

    配置文件保存在以下路径,详细说明请参照表5。

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

    表5. 相机到多线激光雷达标定程序配置项说明

    说明
    age_topic 相机的图像topic
    dar_topic LiDAR的点云topic
    ometry_topic 车辆定位topic
    s_stat_topic 车辆定位状态topic
    mera_intrinsics_filename 相机的内参文件路径
    it_extrinsics_filename 初始外参文件路径
    tput_path 标定结果输出路径
    lib_stop_count 标定所需截取的数据站数
    x_speed_kmh 最大车速限制,单位km/h
  4. 输出内容

    • 外参文件:相机到多线激光雷达的外参文件。
    • 验证参考图片:两张激光雷达点云利用标定结果外参投影到相机图像上的融合图像,分别是依据点云深度渲染的融合图像,和依据点云反射值渲染的融合图像。

毫米波雷达到相机

  1. 运行方法

    使用以下命令来启动标定工具:

    cd /apollo/scripts
    bash sensor_calibration.sh radar_camera
    
  2. 采集标定数据

    • 请将车辆进行低速直线行驶,标定程序仅会在该条件下开始采集数据。
  3. 配置参数

    配置文件保存在以下路径,详细说明请参照表6。

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

    表6. 相机到毫米波雷达标定程序配置项说明

    说明
    age_topic 相机的图像topic
    dar_topic Radar的数据topic
    ometry_topic 车辆定位topic
    s_stat_topic 车辆定位状态topic
    mera_intrinsics_filename 相机的内参文件路径
    it_extrinsics_filename 初始外参文件路径
    tput_path 标定结果输出路径
    x_speed_kmh 最大车速限制,单位km/h
  4. 输出内容

    • 外参文件:毫米波雷达到短焦相机的外参文件。
    • 验证参考图片:将毫米波雷达投影到激光雷达坐标系的结果,需运行 radar_lidar_visualizer 工具。具体方法可参阅 标定结果验证 章节。

标定结果获取

所有标定结果均保存在配置文件中所设定的 output 路径下,标定后的外参以 yaml 格式的文件提供。此外,根据传感器的不同,标定结果会保存在 output 目录下的不同文件夹中,具体如表7所示:

表7. 标定结果保存路径

传感器 外参保存路径
Short_Camera [output]/camera_params
Long_Camera [output]/camera_params
Radar [output]/radar_params

标定结果验证

当标定完成后,会在 [output]/validation 目录下生成相应的标定结果验证图片。下面会详细介绍每一类验证图片的基本原理和查看方法。

相机到相机标定

  • 基本方法:根据长焦相机投影到短焦相机的融合图像进行判断,绿色通道为短焦相机图像,红色和蓝色通道是长焦投影后的图像,目视判断检验对齐情况。在融合图像中的融合区域,选择场景中距离较远处(50米以外)的景物进行对齐判断,能够重合则精度高,出现粉色或绿色重影(错位),则存在误差,当误差大于一定范围时(范围依据实际使用情况而定),标定失败,需重新标定(正常情况下,近处物体因受视差影响,在水平方向存在错位,且距离越近错位量越大,此为正常现象。垂直方向不受视差影响)。

  • 结果示例:如下图所示,图2为满足精度要求外参效果,图3为不满足精度要求的现象,请重新进行标定过程。

图2 良好的相机到相机标定结果

图3 错误的相机到相机标定结果

相机到多线激光雷达标定

  • 基本方法:在产生的点云投影图像内,可寻找其中具有明显边缘的物体和标志物,查看其边缘轮廓对齐情况。如果50米以内的目标,点云边缘和图像边缘能够重合,则可以证明标定结果的精度很高。反之,若出现错位现象,则说明标定结果存在误差。当误差大于一定范围时(范围依据实际使用情况而定),该外参不可用。

  • 结果示例:如下图所示,图4为准确外参的点云投影效果,图5为有偏差外参的点云投影效果

图4 良好的相机到多线激光雷达标定结果

图5 错误的相机到多线激光雷达标定结果

毫米波雷达到相机

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

  • 结果示例:如下图所示,图6为满足精度要求外参效果,图7为不满足精度要求外参效果。

图6 良好的毫米波雷达到激光雷达投影结果

图7 错误的毫米波雷达到激光雷达投影结果

  • 注意事项:

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

    • 使用以下命令来启动 radar_lidar_visualizer 工具:

      cd /apollo/scripts
      bash sensor_calibration.sh visualizer
      
    • radar_lidar_visualizer 工具的配置文件在以下路径,详细说明请参照表8。

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

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

      说明
      r_topic
      r_topic
      r_camera_extrinsics_filename
      ra_lidar_extrinsics_filename
      ut_path
    • 验证图片同样保存在 [output]/validation 目录下。

Apollo 2.0 传感器标定方法相关推荐

  1. Apollo 2.0 传感器标定方法 使用指南(官方)

    点击我:官方地址 Apollo 2.0 传感器标定方法使用指南 欢迎使用Apollo传感器标定服务.本文档提供在Apollo 2.0中新增的3项传感器标定程序的使用流程说明,分别为:相机到相机的标定, ...

  2. 自动驾驶系统的传感器标定方法

    作者 | 黄浴  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/57028341 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货 ...

  3. 地磁传感器标定技术综述(1)

    一.地磁传感器介绍 1. 地磁传感器概念: 地磁传感器,又称磁强计.磁力计.电子罗盘,是一种通过测量地磁场的磁感应强度来确定方位的传感器. 在MEMS技术大力发展下,地磁传感器广泛应用于与MEMS 陀 ...

  4. 超全汇总!多传感器离线/在线时空联合标定方法

    多源异构传感器融合在当今的自动驾驶应用场景中很常见,准确的多传感器时间和空间统一是实现多传感器融合感知和定位的先决条件.许多传感器融合方法假设不同传感器的时间戳精确对齐,这实际上只能通过严格的硬件同步 ...

  5. 理解Apollo传感器标定文档

    " 每个人都是自己平凡世界里的英雄,坚定地走下去,遇见更好的自己." 2019.03- 最近,好像~ 算了, 还是干点正事吧· 看到了apollo官方给的一个传感器标定的技术文档, ...

  6. 气体传感器的量程标定方法

    气体传感器量程的标定可以是相当容易或非常复杂和昂贵,这取决于该气体的种类和浓度的范围.按照原则,为了到达满意的精度,目标气体与背景环境气体的平衡混合物是最好的标定气体.然而,虽然可以做到,但对操作工的 ...

  7. 多传感器融合标定方法汇总

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 本文汇总了常见的一些单传感器.多传感器的标定融 ...

  8. ***无人驾驶***apollo 3.0 硬件系统

    Apollo 3.0来了!百度自动驾驶硬件系统全解读 转载自:https://juejin.im/post/5b3b3e93e51d4519475ee653 作者 | 王石峰 编辑 | Natalie ...

  9. Apollo 3.0来了!百度自动驾驶硬件系统全解读

    作者 | 王石峰 编辑 | Natalie AI 前线导读: 百度 Apollo 3.0 发布在即,本期 AI 前线社群分享我们很高兴邀请到了百度自动驾驶技术部高级产品经理王石峰,为我们带来< ...

最新文章

  1. intel服务器ssd系列,英特尔发布S3710/S3610服务器SSD新品
  2. 【Win 10 应用开发】文件读写的三种方案
  3. 处理数字_1_计算某列的最小/大值
  4. xshell使用xftp传输文件和使用pure-ftpd搭建ftp服务
  5. python中常见的漏洞_Python 中的 10 个常见安全漏洞,以及如何避免(上)
  6. 安装加密中间件 crypto - 命令篇
  7. 【转】ASP.NET 2.0中Page事件的执行顺序
  8. 【Scala】Scala中常见集合的使用---代码详解
  9. linux启动tongweb命令,TongWeb安装配置--Linux
  10. BoundsChecker用法
  11. windows超级工具AlantopTool
  12. 社交仅发送图片和视频 -设计测试用例
  13. 裁员、转型、突围,两图带你看懂交易所困局
  14. 安卓10.1寸大屏车载导航
  15. 中 华 百 家 姓 一 览
  16. WHM面板修改PHP版本教程
  17. 新概念1、2英语学习计划
  18. java毕业设计基于spring框架的论坛网站项目设计和源码
  19. background 背景属性详解
  20. 打破行业困境,大麦如何引领NB-IoT技术的创新应用

热门文章

  1. 全屏手写输入的笔迹获取
  2. 上海交通大学计算机系过敏意,上海交通大学-电子信息与电气工程学院-电子信息与电气工程学院...
  3. 实用软件推荐(二)——最强大的截图工具 (Snipaste)
  4. 古月居 ROS 21 讲5
  5. 01--python 中的列表list 练习题
  6. 蓝桥杯单片机组——程序框架及客观题
  7. Django url末尾斜杆 / 的重定向问题
  8. Android课程表 仿超级课程表
  9. 法属圭亚那地区将建造可再生能源储存能力达140兆瓦时的全球最大发电厂
  10. 基于人工表面等离激元周期调制的漏波天线设计