由于种种原因,Apollo的高精地图模块目前只支持高精地图的读取功能,不支持高精地图的制作,而Apollo的预测、规划模块需要高精地图提供的信息才可以正确运行,但高精地图制作过程复杂,成本高昂,这就提高了开发门槛。
为了解决这一问题,百度Apollo2.5版本之后引入了基于相对地图(relative map)的导航模式(navigation mode),利用该模式可在没有高精地图的情况下,顺利实施测试道路上的实车调试。
有关相对地图以及调试工具的内容可以参考官方文档,本文章不在赘述,文档链接:
Apollo 2.5版导航模式的使用方法
Relative Map
Steps for
在没有实车的情况下,我们可以通过Lgsvl仿真器使用相对地图模块。
本文使用的Apollo版本:6.0
bash scripts/bootstrap_lgsvl.sh
bash scripts/bridge.sh
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/./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
若s-theta
和s-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
在通过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仿真器中输入多个导航路径生成相对地图效果较差,不知是否是仿真环境的原因。