AutowareAuto建图

overview

AutowareAuto 需要两种类型的自动驾驶地图

  • 几何信息层面地图(点云地图)

  • 语义信息地图(Lanelet2 Map)

本节主要介绍如何绘制两种地图,以及两种地图如何应用到整个系统中

最后呈现如下图地图所示效果

高精地图

在正式进行工程前,首先介绍什么是高精地图。

高精地图是一种比普通地图具有更多信息更高精度的地图。
  • 数据精度为分米甚至厘米级,包含空间信息、语义信息和时间信息的数据体。

  • 空间信息—点云地图

  • 语义信息—车道线、停止线、转向路标、速度标识、人行横道、路牙

  • 时间信息—红绿灯信息,早晚可变车道信息

高精地图的格式

Vectormap、lanelet2、opendrive、Nds

点云地图

点云地图是如何创建的?

​ 输入点云数据一般基于激光雷达坐标系,激光雷达坐标系和车身坐标系为刚性连接。如果将车辆起始位置当成地图坐标系的原点,那么在之后的运动过程中的某些间隔均匀的时刻,如果能够准确的获取车辆的位姿变化,就能将原本基于激光雷达坐标系的点云信息转换到地图坐标系下,进而就构成了点云地图的一部分。以此往复,就会构成一张庞大的点云地图。

核心:准确的获取车辆的位姿变化

  • RTK差分定位(成本较高,需要搭建基站,不能够有遮挡)

  • 激光slam匹配算法(存在累积误差,长时间使用会造成漂移)

  • 轮速计定位(存在累积误差,长时间使用会造成漂移)

如何将语义信息标注在点云地图中?

标注工具:Autowaretools、Unity插件版

AutowareAuto Map模块框架

PCD点云文件 ndt_map_publisher_exe rviz
osm语义文件 lanelet2_map_provider_exe other components

如何制作点云地图

在AutowareAuto文件中,并无可直接制作点云地图程序,但根据高精地图生成逻辑如下图可知,只需要拿到点云数据,根据ndt算法逻辑,加入采样算法即可生成点云地图。

具体逻辑如下

在任意文件下新建一个ndt_map_create.launch文件

具体操作步骤如以下视频可见:

链接: https://pan.baidu.com/s/168UhgQ39Ppxoj9LP1-fO5Q 提取码: wqm3

如何制作语义地图

语义地图制作需要两个前提:

  • 点云地图

  • 标注工具

点云地图的制作在上文已经阐述清楚,标注工具上,官方提供了两种标注工具

1、Vector Map Builder 标注地图请参考以下视频链接:

https://pan.baidu.com/s/177GiagoxGxTCmftdQxghjw 提取码: 6l8f

2、josm标注工具请参考 https://josm.openstreetmap.de/

特别注意:josm工具需要提前准备好一张底图以便确定定位

启动地图

如果仅仅实现上面所示的操作,替换demo中的地图,你会发现依旧达不到想要显示的效果。原因如下:

在地图启动文件中导入了如上三个文件,第一个文件为pcd文件格式,第二个文件为存储经纬度数据的文件,第三个文件为可视化参数。

至此,我们明白了如何操作,打开demo文件中的map_yaml_file文件,我们可以看到如下数据

即我们需要更改其中的经纬度至osm与pcd对齐。

更换的方式需见osm文件,此处更改方式供读者自行探索(打开osm文件观察其中数据即可)

再见lanelet2_map_provider_node.cpp文件:

可知,如果osm文件不对齐程序可能无法正常运行。

此外,还有一点需要注意,在lanelet2_map_provider_node.cpp中,可以看到

即,osm文件数据是以server形式发出,需要注意。

注意细节

1、创建点云地图行车速度不能太快,不然会导致定位不准确,NDT建图的前提是定位准确。

2、标注点云地图时,要注意线路的闭环,不然很可能导致报错。

3、在启动点云地图时需要更改点云地图的格式,不然无法启动,此处留给读者思考

思考题?

1、pcd文件需要更改至何种格式方可启动?

2、osm文件配置文件中要如何处理才能使得pcd文件和osm文件匹配成功