“ 每个人都是自己平凡世界里的英雄,坚定地走下去,遇见更好的自己。”

2019.03-

最近,好像~

算了,

还是干点正事吧·

看到了apollo官方给的一个传感器标定的技术文档,过来整理下

自动驾驶传感器标定(Calibration):是指利用传感器采集的数据计算各传感器的内参数(Intrinsic Parameters),以及多个传感器之间外参数(Extrinsic Parameters)的过程。

传感器内外参的标定是各类多传感器信息融合算法的第一步。

在自动驾驶领域中,多线激光雷达与组合惯导是高精地图制作、激光点云定位以及点云物体检测任务中常用的传感器配置。

因此精确标定两者之间的外参数具有非常重要的意义。

常用的标定工具有很多,选择合适的可用的即可,比如像autoware 、apollo的都可以,今天只说apollo给的~

Apollo传感器标定服务和三种标定工具:

  • ◆ Camera-to-Camera Calibration(相机到相机的标定)

  • ◆ Camera-to-LiDAR Calibration(相机到激光雷达的标定)

  • ◆ Radar-to-Camera Calibration(雷达到相机的标定)

  • ◆ IMU到汽车的标定​​

注:Apollo中,新的标定工具(Camera-to-Camera Calibration, Camera-to-LiDAR Calibration, and Radar-to-Camera Calibration)将以板载可执行程序的方式提供。关于LiDAR-GNSS 标定,请参考LiDAR-IMU calibration guide。Velodyne HDL-64 的用户仍可使用Apollo中的标定服务。使用这些标定工具可以极大的减少用户的工作量。我们只需要启动相应的标定程序,即可快速的完成标定任务。此外,用户还可对以.yaml文件格式保存的标定结果进行验证。

下载标定工具并提取文件到以下目录

$APOLLO_HOME/modules/calibration

其中,APOLLO_HOME是Apollo仓库的根目录所在位置。

首先需要自己标定相机内参(得到一个.yaml文件),包括焦距、主点、失真系数以及其他信息。工具很多:ROS、Opencv、Matlab等。注:要对每一个相机进行单独内参标定而不是对所有的相机采用统一的内参。

这些标定工具需要用户提供一个初始外参作为参考。

例:下面是Camera-to-LiDAR标定使用到的外部参数文件的一个样例。

文件中translation表示相机到激光雷达的平移矩阵,rotation 是采用四元组方法表示的旋转矩阵。

 注意:Camera-to-LiDAR 标定成功与否和初始外参息息相关。

较大偏离的外参值很可能导致标定失败。因此,在条件允许下,提供最精确的初始外参就显得十分重要。因为Camera-to-LiDAR标定方法通常在自然环境中使用,一个好的地方能够极大的提高标定结果的精度。建议选择一个包含诸如树、电线杆、路灯、交通标志、静止参照物以及清晰交通标志线等物体的标定场地

首先必须确认程序所需的所有传感器主题均有输出信息。

表1、表2和表3分别列出了不同标定板载程序所需的传感器主题。

----------------

接下来分别介绍这三种标定使用工具:

首先通过在命令行窗口运行如下命令来检查定位状态:

rostopic echo /apollo/sensor/gnss/ins_stat

▉ Camera-to-Camera 标定工具:

1.执行以下命令以运行Camera-to-Camera 标定工具:

  cd /apollo/scripts
  bash sensor_calibration.sh camera_camera

2.根据以下指南收集数据:

  • 由于两个相机具有不同的时间戳,不可能做到完全同步,因此在记录数据时保持汽车缓慢行驶就显得尤为重要。极其缓慢的车速可以有效减轻不同时间戳引起的图像不匹配问题所带来的影响。

  • 请确保两个相机所拍摄的图像之间有很大的重合区域,否则标定工具将无法执行外参标定操作。

3.配置文件所在的位置如下:

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

表 4. Camera-to-Camera 标定配置文件说明

4.Camera-to-Camera 标定工具的输出类型如下:

  • ●标定之后的外部文件将以.yaml文件形式保存。

  • ●验证的图像:

    • ○一张长焦相机图像

    • ○一张广角相机图像

    • ○由一张非失真广角图片和一种非失真长焦图片合成的图片

▉ Camera-to-LiDAR 标定

1.执行以下命令以运行Camera-to-LiDAR 标定工具:

   cd /apollo/scripts
   bash sensor_calibration.sh lidar_camera

2.参照以下准则收集数据:

  • 由于两个相机具有不同的时间戳,不可能做到完全同步,因此在记录数据时保持汽车缓慢行驶就显得尤为重要。极其缓慢的车速可以有效降低不同时间戳引起的图像不匹配问题所带来的影响。

  • 请确保相机图像中有一定数量 (超过 500个) 的投影点,否则标定工具将无法执行外参标定操作。正是基于这一原因,该标定工具只适用于广角相机。

3.配置文件放置在以下位置:

   /apollo/modules/calibration/lidar_camera_calibrator/camera_camera_calibrtor.conf

表 5. Camera-to-LiDAR 标定配置文件说明

4.Camera-to-LiDAR 标定工具的输出类型如下:

  • ●标定结果将以 .yaml 格式文件保存

  • ●两张从LiDAR点云投影到相机的验证图像:

    • ○一张是根据深度信息着色的图像

    • ○一张是根据密度信息着色的图像

▉ Radar-to-Camera 标定

1.执行以下命令以运行Radar-to-Camera 标定工具:

   cd /apollo/scripts
   bash sensor_calibration.sh radar_camera

2.根据以下准则收集数据:

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

3.配置文件所在的位置如下:

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

表6. Radar-to-Camera 标定配置文件说明

4.Radar-to-Camera 标定工具的输出内容如下:

  • ●标定结果将以 .yaml格式的文件保存。

  • ●一个包含Radar-to-LiDAR 投影结果的验证图像。

    您需要运行radar_lidar_visualizer工具来产生该图像。

▉ IMU-to-Vehicle 标定

1.下载标定工具。

2.在标定之前启动汽车并保持行驶,汽车需要以 3m/s的速度行驶执行至少10s。用户无需提供内参和初始化外参。

3.需要的主题:

INS/apollo/sensors/gnss/odemetry 100Hz

4.使用如下命令执行IMU-to-Vehicle标定工具

cd /apollo
bash scripts/sensor_calibration.sh imu_vehicle

5.结果将保存在当前目录下的

vehicle_imu_extrinsics.yaml文件中。标定结果的示例如下所示:

(可选项)运行所有的标定工具

如有必要,用户可以通过以下命令运行所有的标定工具:

cd /apollo
bash scripts/sensor_calibration.sh imu_vehicle

所有的标定结果都将以 yaml 文件的形式保存在配置文件中指明的 output 路径所在位置。

另外,根据传感器的不同,标定结果将被保存在 yaml 目录的不同文件夹下,具体如表7所示:

表 7.  各个传感器对应的标定结果存放位置

标定结束之后,对应的标定结果验证图像将保存在[output]/validation 目录下。本节将介绍相关背景信息以及针对各种标定工具进行评估验证图像的方法。

▉ Camera-to-Camera 标定

背景信息: 在合成图像中,绿色通道是由广角相机图像产生的,而红色和黄色通道数据则是由长焦相机图像生成的。用户可以通过比较合成图像的对齐结果来验证标定的外参的精度。

验证方法:在合成图像的融合区域,判断距离汽车50米开外的对齐情况。如果图像完全重合,则表示外参标定结果符合要求。如果出现粉色或者绿色的阴影(位移),则说明外部参数错误。

当错误超过一定的范围(例如,20个像素,根据实际使用情况决定),需要重新标定外部参数。通常情况下,由于视差的原因,在靠近物体的水平方向上可能会发生错位的现象,而在垂直方向上则不受影响。这种情况是正常的。

例子: 如下面所示 图2 表示满足外部参数精度要求的情况,而图3 则不符合要求。

图 2.  针对Camera-to-Camera 标定的较好的结果

图 3.Camera-to-Camera 标定的错误结果

▉ Camera-to-LiDAR 标定

背景信息: 在点云投影图像中,用户可以看到具有明显边缘的目标物体和标志,并对对齐情况进行比较。

验证方法:如果目标在50米以内 , 其点云边缘与图像边缘重合 , 则说明标定结果的精度比较高。反之,如果出现错位的情况,则说明标定结果错误。当标定结果错误值超过特定范围时 , 将无法获得外部参数(例如,5个像素,具体取决于实际使用情况)。

例子: 如下所示, 图 4 表示标定结果满足外部参数的精度要求的情况,而图5 则表示不满足的情况。

图 4. 较好的Camera-to-LiDAR 标定结果

图 5. 较差的Camera-to-LiDAR 标定结果

▉ Radar-to-Camera 标定

你可以绘制一张在LiDAR坐标系下融合雷达数据和LiDAR数据的全景图。根据全景融合图中雷达数据和LiDAR数据的对齐情况来判断外参的精度。

在融合图中,所有白色的小点代表LiDAR点云,而大的绿色实心圆表示雷达目标。

  • 背景信息: 使用系统中的激光雷达(LiDAR)作为中介物进行外部参数验证,这种方法可以获得以下结果:

    • 通过雷达相对于相机的外参获得雷达相对于LiDAR的外参

    • 相机相对于LiDAR的外参

  • 验证方法:全景融合图中雷达数据和LiDAR数据的对齐情况代表了外参的精确度。

    如果大部分的目标重合,表示外参精度满足要求。

    反之,如果超过40%的目标(尤其是车辆)没有对齐,表示外参无法满足要求,需要重新标定。

  • 例子:如下所示,图6表示标定结果满足外参的精度要求,而图7则表示不满足的情况。

图 6. 好的相机到雷达标定结果

图 7. 糟糕的 Camera-to-Radar 标定结果

▉ 雷达 LiDAR 可视化投影工具

为了获得雷达数据和LiDAR点云的融合图像,

标定程序可以自动(如果使用bash sensor_calibration.sh all命令)或手动 (如果使用bash sensor_calibration.sh visualizer命令)

调用另一个投影程序,即radar_lidar_visualizer。

该投影程序将加载Radar-to-Camera 和 Camera-to-LiDAR标定的外参。

十分重要: 在启动投影程序之前,请确保将要加载的两组外部参数均已经标定好并且相应的文件已放在配置文件中radar_camera_extrinsics_filename 和 camera_lidar_extrinsics_filename

参数所指的位置。

1.使用以下命令运行 radar_lidar_visualizer 程序:

  cd /apollo/scripts
  bash sensor_calibration.sh visualizer

2. radar_lidar_visualizer 的配置文件存放在以下位置:

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

表8 列出了投影程序配置文件包含的配置项及其简要说明:

验证图像保存在如下位置:[output]/validation

ok ...匆匆忙忙的结束了~

理解Apollo传感器标定文档相关推荐

  1. 开源语义理解框架 Clause API 文档:快速实现聊天机器人

    在上一篇文章<基于开源语义理解框架 Clause 实现聊天机器人 > 中,很多读者关心如何使用 Clause,在 Clause Wiki 文档中心 中也有很多指导使用的资料,现将 API ...

  2. CARLA传感器详细文档介绍+python实例(持续更新ing)

    CARLA中有两种类型的传感器:每帧都工作的传感器(相机,点云等)和只有特定环境下才接收数据的传感器(触发检测).都属于carla.Sensor类,从carla.BlueprintLibrary类中实 ...

  3. 关于androidannotations(注解)的理解和使用(文档篇)

    本文内容来自对github上提供的文档的翻译,由于本人英文水平有限,可能会有很多不当之处,还请各位大神予以指教和批评. androidannotations是由 Pierre-Yves Ricau创建 ...

  4. 阅读理解FireFox浏览器插件开发文档(一)

    昨天白天用官方示例在主机安装了FF插件,然而晚上回寝室用VS2013并没有成功,不禁想起了那句话"程序员都是好男人,他们每天都会反省自己,我又错在哪了". 言归正传,今天的目标是阅 ...

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

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

  6. Apollo 2.0 传感器标定方法

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

  7. MSRA-万字综述 直击多模态文档理解

    文 | 付奶茶 随着最近几年多模态大火的,越来越多的任务都被推陈出新为多模态版本.譬如,传统对话任务,推出了考虑视觉信息的多模态数据集:事件抽取,也推出视频形式的多模态版本:就连 grammar in ...

  8. 一篇关于我是怎么理解喜欢上并且做好前端开发工作的文档

    最近有幸收到掘金的邀请,成为掘金专栏的一份子,唯恐自己不能有太多有质量的贡献,但又想到这是一次锻炼和学习的机会,所以非常感谢掘金! 刚好今天不是很忙,于是思索着来写些什么!正好前段时间想写一个关于工作 ...

  9. 刷新4项文档智能任务纪录,百度TextMind打造ERNIE-Layout登顶文档智能权威榜单

    来源:机器之心本文约2300字,建议阅读5分钟 文档智能国际权威榜单文档视觉问答 DocVQA 迎来了新霸主. 百度提出跨模态文档理解模型 ERNIE-Layout,首次将布局知识增强技术融入跨模态文 ...

最新文章

  1. Hadoop- MapReduce分布式计算框架原理
  2. 常考数据结构和算法:跳台阶
  3. linux dentry 存储,dentry与dentry_cache
  4. linux 内核load addr,linux2.4启动分析(1)---内核启动地址的确定 vmlinux LOAD_ADDR ZRELADDR...
  5. CSS之expression
  6. 判断字符串出现次数最多的字符 及 次数
  7. mfc让图片与按钮一起_对许多张图片进行批量裁剪,看看我是如何快速做到的
  8. PostgreSQL查看版本信息
  9. 【干货】60 余家免费正版图片网站
  10. 学习用TypeScript写React组件
  11. 查找交换机某端口连接的主机IP地址
  12. arcgis for flex 学习笔记(一)
  13. 文件上传之multer
  14. 各省简称 拼音 缩写_中国省会城市拼音名称及缩写
  15. linux系统中查看系统内存或flash使用情况
  16. 微信小程序:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题
  17. 9x9九宫格java_数独9x9九宫格的口诀 9×9数独技巧
  18. 应届生面试该注意的小技巧
  19. 809-Expressive Words
  20. Shiro框架基础及搭建

热门文章

  1. linux ss 软件,Linux ss 命令详解
  2. Wallpaper Engine免费版,Wallpaper壁纸引擎,Wallpaper Engine离线版更新至2.2.18版本,23年2月新版,解决导入壁纸时提示需要更新的问题,附一套全新壁纸
  3. React-Native with LeanCloud 构建实时聊天软件
  4. linux ubuntu22.04各种问题的解决
  5. 这短短的理念关于住宅屋面构造
  6. 【从零开始学爬虫】通过新浪财经采集上市公司高管信息
  7. 多线程学习一之基础知识
  8. Hack The Box-Appointment
  9. 创建手机虚拟设备AVD
  10. 解决电脑独立显卡突然消失的问题