​ 之前一直说总结一下定位模块的,拖到现在才开始,因为最近面试了下,发现这块做的内容已经忘记了不少。主要是基于NDT+UKF的定位方法,主要方法来源于一个开源的lidar localization project。在这里我主要对其代码进行讲解,并适配我们自己的园区场景,后续我将在此基础上进行一些工程上的改进,使之更加鲁棒和易用。本篇主对原项目进行了重写,目前修改的部分主要有以下两点:

  • 新增了定位初始化模块。
  • 改进map_loader节点,结合之前第四篇的动态记载。

由于数据是采用目前实习公司的,不会放出来,大家感兴趣的可以结合我的博客内容,对自己的传感器数据进行适配。起始博客中已经给出了关键的代码,如果看懂的话完全可以自己实现出来,这比直接跑别人的工程要好得多,也更有意义。

image-20200605140712653

阅读全文 »

在HD Map制作过程中,针对提取出来的车道线、路沿等线状点云,本身是无序的,在存储的时候需要先进行曲线拟合,然后采样排序。本篇博客主要就车道线点云在2D/3D空间下的拟合,做一次整理,并给出源码,可作为工具使用。

image-20200605092148239

阅读全文 »

2020.05.14修改:文章逻辑以及内容修改

​ 高精地图作为一个单独的模块,给感知,规划等模块提供支持,涉及到的算法内容繁杂且工程难度较大,目前尚无太多系统性的开源代码可以参考。下图是我修改的Autoware高精地图模块的可视化效果,包含元素类别按照算法而言,我们主要可以分为以下三大类,

  • 地面标志:车道线、停止线、路标等
  • 空中物体:红绿灯、路灯、限速牌/路牌
  • 各种路沿、灯杆、排水沟等

在这些类别中,最重要的部分是车道线、路沿、红绿灯、地标、停止线和人行横道,更多的语义类别我们后期再继续考虑。这里我将给出示例高精地图数据,可以作为单独的模块直接在catkin工作空间下编译使用。

​ 本篇我们将参考Autoware Vector Map,熟悉其格式结构,并进行一定程度的修改,根据我们当前测试场地的一些元素,制作自己的高精地图。在本篇之前,需要对高精地图的概念有一定程度的了解,这部分可以参考我之前整理的几篇博客。

image-20200120124307911

阅读全文 »

本来这部分内容在第三篇已经讲过,但是近期写了一款IMU驱动,涉及到一些ROS下串口通信的知识,网上能够看到的一些代码写的觉觉都是demo,稳定性比较差,所以这里准备总结一套通用的模板,后续可以自己修改着来适配自己的机器,无论是单独的GPS、IMU还是组合导航,均可以按以下讲解去写。感谢哈工大锦博,对我指点颇多。

阅读全文 »

​ 在我的项目里面会经常用到比如各种版本的ndt算法库,ndt_cpu/ndt_gpu_ndt_omp,无可避免得会涉及到一些动态库的打包及饮用方法,这里记录一下,并给出打包好的ndt lib库,库的源码来源为Autoware以及开源项目ndt_omp。

​ CMake 全称是Cross platform Make的简写,是基于Make来实现相关的内容的,换句话说,CMake就是在Make的基础上抽象出来的更高级的框架。这里也总结以下常用的CMake命令。

阅读全文 »

​ 今天介绍一篇基于激光点云做路标提取,分类和矢量化的论文《Automated Road Markings Extraction ,Classification and vetorization From Mobile Laser 》。最近有所研究,感觉帮助比较大。在之前的博客中我们介绍了Lanelet2地图框架的原理及其使用,从整个高精地图制作流程上来说,Lanelet2只能说是完成了地图数据存储索引以及和规划等模块的对接作用。Lanelet2的地理和几何数据来源于激光点云/图像检测出来的路标,和红绿灯等元素。

image-20200314113101877

​ 基于点云反射强度提取路标是目前的主流方法,优势是精度高。当然也可以用图像去做,图像本身分割出来的路标等元素是比较准的,但是由于时间同步和相机标定等原因,转化成地理坐标之后必然会损失一定的精度,所以最终不太准,只能作为辅助方式。目前大公司一般都基于点云和图像融合的方法来完成这部分的提取工作。

个人认为本文的精华还是在于对矢量化部分的一个详细的补充和阐述,这部分的工作目前是没有什么论文可以参考的。

阅读全文 »

Machine Learning Assisted High-Definition Map Creation

2018 42nd IEEE International Conference on Computer Software & Applications

​ 今天主要完成一篇机器学习辅助高精地图制作的一篇综述paper阅读记录。本文主要对高精地图制作流程中的关键部分,对主流算法进行了一些介绍,内容非常全面。

​ HD Map是高精度,包含全面的几何信息以及道路网络和周围环境语义的数字地图。,为自动驾驶汽车系统的几乎所有其他模块提供关键输入,包括定位、感知、预测、运动计划、车辆控制等。尽管在不使用HD Map的情况下是否能构建全自动驾驶汽车系统(HAD System)的争论一直存在,但我们所知的现有的HAD系统都无法在不使用某种HD Map的情况下在城市环境中运行。

image-20200305215959783

阅读全文 »

这段时间阅读了Lanelet2的源码文档,本章将结合代码和文档来阐述Lanelet2地图框架的具体使用方法,比较底层的源码部分由于篇幅限制暂未涉及。Lanelet2地图框架的基本概念和软件架构在上一篇博客中已经做了讲解。

阅读全文 »

2018 21st International Conference on Intelligent Transportation Systems (ITSC)

本篇博客主要记录是Lanelet2原始论文解析,其项目github地址为https://github.com/fzi-forschungszentrum-informatik/Lanelet2.git。Lanelet是Autoware使用的高精地图软件框架,后续将结合代码完成高精度地图制作实践。

image-20200222004258512

​ 这篇Paper是基于Liblanele,它提出了一套用c++实现的开源高精地图软件框架Lanelet2,并给出抽象的和真实世界的案例,阐述其基本概念,具体的结构和地图的使用方法及其在自动驾驶中的应用。Lanelet2不仅可用于典型的模块如定位或运动规划,而且还支持高度自动化驾驶的各种潜在地图应用。

阅读全文 »