点击我:官方地址

Apollo 2.0 传感器标定方法使用指南

欢迎使用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. 相机到相机标定程序配置项说明

    配置项 说明
    long_image_topic 长焦相机的图像topic
    short_image_topic 广角相机的图像topic
    odometry_topic 车辆定位topic
    ins_stat_topic 车辆定位状态topic
    long_camera_intrinsics_filename 长焦相机的内参文件路径
    short_camera_intrinsics_filename 广角相机的内参文件路径
    init_extrinsics_filename 初始外参文件路径
    output_path 标定结果输出路径
    max_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. 相机到多线激光雷达标定程序配置项说明

    配置项 说明
    image_topic 相机的图像topic
    lidar_topic LiDAR的点云topic
    odometry_topic 车辆定位topic
    ins_stat_topic 车辆定位状态topic
    camera_intrinsics_filename 相机的内参文件路径
    init_extrinsics_filename 初始外参文件路径
    output_path 标定结果输出路径
    calib_stop_count 标定所需截取的数据站数
    max_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. 相机到毫米波雷达标定程序配置项说明

    配置项 说明
    image_topic 相机的图像topic
    radar_topic Radar的数据topic
    odometry_topic 车辆定位topic
    ins_stat_topic 车辆定位状态topic
    camera_intrinsics_filename 相机的内参文件路径
    init_extrinsics_filename 初始外参文件路径
    output_path 标定结果输出路径
    max_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/scriptsbash sensor_calibration.sh visualizer
    • radar_lidar_visualizer 工具的配置文件在以下路径,详细说明请参照表8。

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

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

      配置项 说明
      radar_topic Radar的数据topic
      lidar_topic LiDAR的点云topic
      radar_camera_extrinsics_filename 毫米波雷达到相机的外参文件
      camera_lidar_extrinsics_filename 相机到激光雷达的外参文件
      output_path 标定结果输出路径
    • 验证图片同样保存在 [output]/validation 目录下。

希望对你有帮助。

Apollo 2.0 传感器标定方法 使用指南(官方)相关推荐

  1. Apollo 2.0 传感器标定方法

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

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

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

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

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

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

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

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

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

  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. 深度丨人工智能和大数据的关系及中国在AI领域如何赶超世界
  2. FFmpeg Basic学习笔记(4)
  3. 【精品资源】干货分享:20款精美的手机网站模板下载
  4. 程序中下载采购申请的附件
  5. 微信企业号开发之正式版的本地调试
  6. Python最实用的25个小技巧
  7. js三元判断html,JS 三元条件运算符
  8. grub开机选项中没有linux,安装 Ubuntu 后 Grub 开机选项中的 Fedora 不见了
  9. [Tyvj模拟赛]运
  10. java 外观模式_Java设计模式11:外观模式
  11. Chrome默认开启flash
  12. H3C DHCP实验
  13. pycharm汉化(搜索不到插件的参考第二中方法)
  14. DoIP诊断技术一点通
  15. 快速批量打印工程图,这个工具少不了
  16. 【老生谈算法】matlab实现自适应滤波器源码——自适应滤波器
  17. 【优动漫 PAINT应用篇】绘制插画之草稿
  18. 第三阶段应用层——1.5 数码相册—使用FreeType在LCD上显示单个字符
  19. 思科EA3500官方固件刷opwrt教程
  20. 定时器 java qua_Quartz定时任务调度机制解析(CronTirgger、SimpleTrigger )

热门文章

  1. 不用编程 实现西门子PLC和罗克韦尔AB PLC的通讯和协议转换
  2. vue2中vant实现网易云音乐案例-附带所有源码
  3. Python通过word模板生成新的word文件
  4. [vue-router] Named Route ‘Layout‘ has a default child route. When navigating to this named route (:t
  5. 消费者大喊商家欺诈!宝贝ID下的商品违规修改也是定时炸弹!
  6. 骐俊CAT1模组 - MQTT接入腾讯云平台篇
  7. 28. 尚融宝借款额度审核
  8. 44道javaScript变态题(上)
  9. HTML+js实现贪吃蛇小游戏(内含完整代码)
  10. Hadoop 表和字段