无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定

单目相机分辨率高,我们可以使用各种深度学习算法完成对目标检测,但是缺乏深度,坐标等信息。激光雷达能够获得目标相当精确的三维坐标信息,但是分辨率低,目前主流的为64线和32线,稀疏的电云数据为模式识别带来了困难。一种简单的思路是融合相机和激光雷达对目标障碍物完成检测,在图像层面使用深度学习方法将目标检测识别,然后将目标从二维图像映射到三维电云,从而画出目标在三维空间的位置以及边界(3维的bounding box)。实现这一映射的前提是完成Camera到激光雷达的组合标定。本文即讲解如何使用开源无人驾驶软件Autoware实践组合标定。

1. 标定准备

在进行标定之前,需要有如下硬件准备:
* 标定板:规格为 A0 尺寸的硬纸板(841 ××\times 1189mm) 9行7列,注意一定要是硬纸板,如下图所示:

  • 已驱动的摄像机:推荐FLIR的Grasshopper3 相机,ROS下驱动简单,帧率高,可是距离远,全局快门。如下图所示:

  • 已驱动的激光雷达: 推荐使用Velodyne VLP-32C或者HDL-64

  • 确定举标定板人的站位及动作:标定板在摄像头下一般有6个站位,每个位置做相同的一组5个动作。5个动作分别为:正向; 下俯; 上仰; 左偏; 右偏。如下图所示:

6个站位分别为:

1). 近距离镜头左边(近距离一般为5m)

2). 近距离镜头中间

3). 近距离镜头右边

4). 远距离镜头左边(远距离依照摄像机和激光雷达真实情况而定)

5). 远距离镜头中间

6). 远距离镜头右边

以上位置和动作的顺序均不固定,可自行决定


2. 录制标定包

  1. 启动Autoware,打开ROSBAG,Autoware下用来录包的一个工具
  2. 勾选/image_raw和/velodny_points两个话题
  3. start启动
  4. 录制,保存

3. 使用Calibration Tool Kit标定

(1) 加载包, 在终端输入:

$ rosbag play bagName。bag /velodyne_points:=/points_raw

加载成功后,立即空格暂停。

(2) 配置Tool Kit:

第一个对话框选取话题/image_raw

第二个对话框选取camera-velodyne

(3) Calibration Tool Kit打开后,参数设置:

  • Pattern Size(m)为0。108和0。108;
  • Pattern Number为6和8

如果使用的标定板不是上文中的规格,请自行设定参数

(4) 参数设置之后关闭Calibration Tool Kit,重启加载配置

(5) 加载数据:
Calibration Tool Kit打开后, 取消暂停继续运行包; 当MainWindow出现画面后,暂停包,调整MainWindow中画面位置

右上角为激光雷达数据, 首先点击图像, 使用键盘上’b’键调浅背景颜色

使用键盘上各个功能键调整角度。使得激光雷达图像下可以看到棋盘

结果如下:

(6) 进行标记:

运行包,当进行到合适位置角度时,暂停包, 点击MainWindow右上角”Grab”,生成下半部分的摄像机和激光雷达信息的两个图像,调整位置

在右下方的图像中找到标定板对应的位置,鼠标左键标记。如果标记有误,鼠标右键取消

效果如图:

(7) 不断重复(6)内容,直至录像结束

(8) 标定计算

点击MainWindow右上角”Calibrate”进行计算。由于计算量很大,这个过程可能会突然占满所有计算资源,但是时间很短。

(9) 验证标定

点击MainWindow右上角”Project”进行验证, 左下方图像中会出现根据计算结果和激光雷达数据生成的图像对应位置,以红色散点表示。如果散点分布在标定板上,说明标定正确;如果散点不在标定板上,则对右下方激光图像重新点选。

正确情况

错误情况

(10) 如果有需要更新的标记,重新点选后,重复以上内容,直至验证通过

(11) 保存结果:

点击MainWindow左上方的”Save”,将结果保存到合适位置。对于下面的两个弹窗,都选择”NO”。


到这里,我们的标定就做好啦♪(^∇^*)

4.标定结果

我们使用Autoware自带的Calibration Publisher和Point Image节点获得点云-图像融合的point-image,在Autoware/Sensing/中打开Calibration Publisher,并将保存好的内外参文件读取进来,打开Autoware/Sensing下的Point Image节点,在Rviz中,Panels/Add New Panel内添加ImageViewerPlugin,填写Image Topic,本例为/image_raw,Point Topic,本例为/point_image,得到如下融合图:

我们加上定位和地图,以及YOLO检测,vision_klt_track,range_fusion,obj_reproj等节点,并在Rviz中添加行人的3维Bounding Box,即可得到检测结果:

查看对应的camera到velodyne的TF可视化结果如下:

无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定相关推荐

  1. 无人驾驶汽车系统入门(十二)——卷积神经网络入门,基于深度学习的车辆实时检测

    无人驾驶汽车系统入门(十二)--卷积神经网络入门,基于深度学习的车辆实时检测 上篇文章我们讲到能否尽可能利用上图像的二维特征来设计神经网络,以此来进一步提高识别的精度.在这篇博客中,我们学习一类专门用 ...

  2. 无人驾驶汽车系统入门(十六)——最短路径搜索之A*算法

    无人驾驶汽车系统入门(十六)--最短路径搜索之A*算法 路线规划中一个很核心的问题即最短路径的搜索,说到最短路径的搜索我们就不得不提A*算法,虽然原始的A*算法属于离散路径搜索算法(我们的世界是连续的 ...

  3. 无人驾驶汽车系统入门(十八)——使用pure pursuit实现无人车轨迹追踪

    无人驾驶汽车系统入门(十八)--使用pure pursuit实现无人车轨迹追踪 对于无人车辆来说,在规划好路径以后(这个路径我们通常称为全局路径),全局路径由一系列路径点构成,这些路径点只要包含空间位 ...

  4. 无人驾驶汽车系统入门(十)——基于运动学模型的模型预测控制

    无人驾驶汽车系统入门(十)--基于运动学模型的模型预测控制 在前面的第五篇博客中,我们介绍了两种常见的车辆模型--运动学自行车模型和动力学自行车模型,本节我们基于运动学车辆模型引入一种新的控制理论-- ...

  5. 无人驾驶汽车系统入门(十九)——分层有限状态机和无人车行为规划

    分层有限状态机和无人车行为规划 行为规划又称为行为决策,是无人车规划模块三层(任务,行为,动作)的中间层,本文将介绍行为规划的基本概念,设计核心,同时介绍一种具体的无人车行为规划方法--分层有限状态机 ...

  6. 无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现...

    参加 2018 AI开发者大会,请点击 ↑↑↑ 作者:申泽邦(Adam Shan),兰州大学在读硕士研究生,主要研究方向无人驾驶,深度学习:兰大未来计算研究院无人车团队负责人,自动驾驶全栈工程师. 近 ...

  7. “无人驾驶汽车系统入门”博客专栏

    "无人驾驶汽车系统入门"专栏链接地址: https://blog.csdn.net/column/details/28410.html?&page=1 前言:随着深度学习近 ...

  8. 无人驾驶汽车系统入门

    无人驾驶汽车系统入门(一)--卡尔曼滤波与目标追踪 链接:https://blog.csdn.net/adamshan/article/details/78248421 无人驾驶汽车系统入门(二)-- ...

  9. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

最新文章

  1. 《Spark大数据分析:核心概念、技术及实践》一1.5 NoSQL
  2. 与虫子尾交3d动画网站_PPT中最酷的效果 —— 3D模型全解
  3. 他,跳槽季用这样的方法复习进了阿里
  4. 从零开始学习docker(十五)Swarm mode 介绍
  5. 2018程序员不能错过的编程挑战网站 Top10
  6. Redis(八):Zset有序集合数据类型详解
  7. java i++与++i与与之间的区别在哪里
  8. 送你一个Python 数据排序的好方法
  9. [刘阳Java]_CSS数字分页效果
  10. sqlserver2008链接服务器的使用和oracle11g客户端修改字符集
  11. python培训班骗局-马哥教育官网-专业Linux培训班,Python培训机构
  12. 电影院开工在即,第一部电影就看他
  13. Java坦克大战代码
  14. AspNetPager分页控件之url重写
  15. 驻点、极值点、拐点间的区别和联系
  16. 五天学redhat系列之---文件系统管理
  17. GIONEE A1 金立A1 root 刷机包 GIONEE SWW1609_0201 mt6755
  18. KINOVA公司JACO2、MICO2从安装到开发
  19. 子线程设置的钩子(HOOK)为什么钩不到消息?
  20. RK3588平台开发系列讲解(进程篇)进程的简介

热门文章

  1. pt2 of <confession>
  2. 虾扯蓝牙(一)获取蓝牙当前状态,监听蓝牙手动开关,代码开关蓝牙
  3. 【18.5.31 日常】Android项目——飞机大战详解
  4. 双十二护眼灯牌子买什么的好?几款比较好的学生护眼灯推荐
  5. 《程序员羊皮卷》还未上市即告售罄的故事
  6. linux ls 显示文件年份 并支持自定义显示年月日时分秒
  7. project2007的一些使用心得
  8. 解决Android Studio加载第三方jar包,出现包重复加载的问题
  9. 【蓝桥杯试题 练习题 不定方程求解】
  10. cocos2d-x:七彩连珠