说明:本文参考知乎王方浩apollo简易制图过程(二十)https://zhuanlan.zhihu.com/p/358796415进行实践操作
update:2023.3.13
将apollo的制图部分剥离后的代码下载链接如下:
git@github.com:YEJIANAN/apollo_hdmap_addnodever.git
可直接使用python命令实现制图过程,xml格式的地图未更新。
同时,如果需要转换hdmap 格式以及show your own map,please check this link 王方浩imap
本文目的:通过已有的开源模型实现高精度地图的制作,格式不限
初学高精度地图,对于其中有很多知识还尚未摸清楚,如有错误,请大佬指正.
需要准备的材料:
1.包含rtk或imu数据(经纬高信息)的bag文件/wgs84坐标系坐标txt
2.将bag中信息读取出来并转换为wgs84坐标系的坐标的txt/csv文件的py脚本
3.apollo3.0(注意,这里最好使用该版本,因为3.0之后的版本对map_gen文件进行了删减)
apollo安装可以参考此处
由于本人的目的是制作简单的高精度地图,所以没有在地图中实现添加红绿灯信息.
第一步
:提取经纬高信息txt/csv文本(github上有脚本可以参考,这里就不赘述了),下面是我使用脚本将bag文件转换的csv,第一行为x,第二行为y
第二步
在apollo3.0文件当中按照
python modules/tools/map_gen/plot_path.py yourtxtname.txt
查看轨迹(注意文本文件存放的路径放在apollo3.0/下)
第三步
进入容器docker,编译地图生成工具
bazel build modules/tools/map_gen:all
./bazel-bin/modules/tools/map_gen/map_gen yourtxtname.txt //如果需要使用xml的可以在map_gen.py第107行修改生成的文件格式为xml,fmap = open("map_" + fpath.split("/")[-1] + ".xml", 'w'),内容和txt是一样的,只不过在使用的时候可能没有map的header,
此时会在与你存放txt文本同样的路径下,也就是apollo3.0/下出现名为map_yourtxtname.csv.txt文件,点开这个文件,就是生成好的地图;
生成好的地图格式如下:
第四步
查看生成好的地图:
再次打开apollo的容器,如果上一部没关就不要打开了;
编译mapshow(下面两部先在docker里尝试,再在apollo3.0目录下终端尝试)
bazel build modules/tools/mapshow:all
python modules/tools/mapshow/mapshow.py -m map_points.txt
出现如图所示的高精度地图:
;
至此,简单的高精度地图制作完毕。
如果生成的文件为xml格式,使用请参考:https://github.com/daohu527/dig-into-apollo/tree/main/modules/map其中的opendrive_adapter.cc,可以实现地图的加载,使用目前应该是在planning里。
另推荐几个在高精度地图学习过程中可以参考的博主:
知乎-王方浩
知乎-xchu