Apollo详解之高精地图模块——相对地图模块

前言

由于种种原因,Apollo的高精地图模块目前只支持高精地图的读取功能,不支持高精地图的制作,而Apollo的预测、规划模块需要高精地图提供的信息才可以正确运行,但高精地图制作过程复杂,成本高昂,这就提高了开发门槛。
为了解决这一问题,百度Apollo2.5版本之后引入了基于相对地图(relative map)的导航模式(navigation mode),利用该模式可在没有高精地图的情况下,顺利实施测试道路上的实车调试。
有关相对地图以及调试工具的内容可以参考官方文档,本文章不在赘述,文档链接:
Apollo 2.5版导航模式的使用方法
Relative Map
Steps for

Lgsvl仿真环境下相对地图的制作

在没有实车的情况下,我们可以通过Lgsvl仿真器使用相对地图模块。
本文使用的Apollo版本:6.0

  1. 打开Lgsvl仿真器,选择Cube Town地图,进入仿真环境
    Apollo详解之高精地图模块——相对地图模块_第1张图片
  2. 打开Dreamview,并确认Apollo与仿真器连接,并选择Navigation模式,打开Localization模块
bash scripts/bootstrap_lgsvl.sh 
 bash scripts/bridge.sh

Apollo详解之高精地图模块——相对地图模块_第2张图片
3.录制数据包
开始录制

cyber_recorder record -a

操控车辆沿着地图行驶一圈后,停止录制。得到数据包20210711195048.record.00000
4.从数据包中提取数据

./bazel-bin/modules/tools/navigator/record_extractor 20210711195048.record.00000 

若提示该文件不存在,可参考这里
得到处理后的行驶轨迹文件path_20210711195048.record.00000.txt
查看行驶轨迹

 ./bazel-bin/modules/tools/navigator/viewer_raw path_20210711195048.record.00000.txt

Apollo详解之高精地图模块——相对地图模块_第3张图片
运行viewer_raw脚本时,可能会报错

/apollo/./bazel-bin/modules/tools/navigator/viewer_raw.runfiles/apollo/modules/tools/navigator/viewer_raw.py:43: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  plt.show()

解决方法可参考这里
5.对路径进行光滑处理

bash modules/tools/navigator/smooth.sh path_20210711195048.record.00000.txt 200

得到path_20210711195048.record.00000.txt.smoothed文件,可对其进行查看

./bazel-bin/modules/tools/navigator/viewer_smooth path_20210711195048.record.00000.txt path_20210711195048.record.00000.txt.smoothed 

Apollo详解之高精地图模块——相对地图模块_第4张图片
s-thetas-s数据为空的话,则表示生成的数据不正常,解决方法可参考这里
6.生成相对地图
首先切断仿真器和Apollo的连接,即停止scripts/bridge.sh脚本
播放数据包

cyber_recorder play  -f 20210711195048.record.00000 --loop

在dreamview中打开Relative Map模块
在另一终端中

bash scripts/navigator.sh path_20210711195048.record.00000.txt.smoothed 

可以在Dreamview中生成的相对地图
Apollo详解之高精地图模块——相对地图模块_第5张图片

后记

在通过Lgsvl仿真器运行相对地图模块时,有时会出现以下错误:

E0711 21:05:42.844811 17884 navigation_lane.cc:460] [map]Invalid projection index -1 in line 0

并且相对地图由跳变闪烁的现象,初步推断应该是在录制数据包时,Lgsvl仿真器发送的Gps数据中UTM区域ID的问题造成的,在实车测试时按照官方文档的要求设置UTM区域ID应该可以避免这个问题。
同时,相对地图模块也支持输入多个导航路径,在高精地图中生成多个对应车道线的车道,组成一条道路,但只支持生成同向行驶的单条道路。
目前在lgsvl仿真器中输入多个导航路径生成相对地图效果较差,不知是否是仿真环境的原因。

你可能感兴趣的:(Apollo)