下面是由社区开发者——王方浩提供的文章,本文主要介绍 Apollo简易制图过程。
ENJOY THE FOLLOWING
本文将主要从以下几个方面来介绍:
  • 制图工具

  • 预览录制的轨迹

  • 生成好的地图

  • 添加红绿灯信息

  • 查看生成好的地图

  • 完整制作地图过程

制图工具在"apollo/modules/tools/map_gen"目录下,主要的文件如下:

制图的步骤如下:

1、先通过"extract_path.py"读取bag包中录取的车辆轨迹,原理是订阅"/apollo/localization/pose"中的消息,然后保存到文件;

2、然后通过"map_gen.py"读取生成的车辆轨迹,生成高精度地图,原理是把录制的轨迹当做车道中心线,进行采样,然后保存成Apollo的高精度地图格式。

同时再和大家介绍下其它的两个制作工具:

1、map_gen_single_lane.py 读取文件中的轨迹,生成一条车道线(Lane),和"map_gen.py"的区别是,它只会生成single_lane。

2、map_gen_two_lanes_right_ext.py 读取文件中的轨迹,和map_gen_single_lane.py的区别是会生成两条车道线。

和map_gen的区别需要进一步研究

通过"extract_path.py"解压好轨迹之后,可以通过plot_path.py来可视化录制的轨迹。

python modules/tools/map_gen/plot_path.py path.txt

进入容器,编译地图生成工具。

bazel build modules/tools/map_gen:all./bazel-bin/modules/tools/map_gen/map_gen path.txt

生成好的地图格式如下:

生成好地图之后,可以通过"add_signal.py"来添加红绿灯。

./bazel-bin/modules/tools/map_gen/add_signal.py map_file your_signal_map

这里map_file就是刚才生成的地图文件,而your_signal_map是红绿灯的文件,红绿灯文件实际上就是Apollo HDMap中指定的红绿灯格式,也就是需要按Apollo HDMap中指定的红绿灯格式保存红绿灯的数据,然后把它添加到map_file中。

查看生成好的地图两种方式,一种是通过MapViewers,一种是通过MapShow,这里只验证了MapShow。

先在Apollo容器中编译MapShow。

bazel build modules/tools/mapshow:all

因为在容器中不能显示图形界面,因此在容器外运行以下命令,会提示如下错误:

root@in-dev-docker:/apollo# ./bazel-bin/modules/tools/mapshow/mapshow -m your_map_name  /apollo/./bazel-bin/modules/tools/mapshow/mapshow.runfiles/apollo/modules/tools/mapshow/mapshow.py:119: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.  plt.show()

最后,在容器外的Apollo目录中执行。

./bazel-bin/modules/tools/mapshow/mapshow -m your_map_name -sl

看到如下画面便是生成好的高精度地图:

以下是Python版本的制图过程,需要Apollo5.0之前的版本:

1、解压制作好的地图

python modules/tools/map_gen/extract_path.py points data/bag/20210406112554.record.00000

查看当前轨迹

python modules/tools/map_gen/plot_path.py points 

2、生成地图

python modules/tools/map_gen/map_gen.py points 

3、查看地图

python modules/tools/mapshow/mapshow.py -m map_points.txt

生成地图

python modules/tools/create_map/convert_map_txt2bin.py -i map_points.txt -o /apollo/modules/map/data/your_map_dir/base_map.bin

生成sim_map

./bazel-bin/modules/map/tools/sim_map_generator -map_dir=/apollo/modules/map/data/your_map_dir -output_dir=/apollo/modules/map/data/your_map_dir

生成routing_map

/apollo/bazel-bin/modules/routing/topo_creator/topo_creator -map_dir=/apollo/modules/map/data/your_map_dir --flagfile=modules/routing/conf/routing.conf

测试之前需要修改"vi modules/common/data/global_flagfile.txt",屏蔽选项"--log_dir/--use_navigation_mode"

--map_dir=/apollo/modules/map/data/your_map_dir

测试生成的routing_map是否可以联通

python modules/tools/routing/debug_topo.py
* 《Apollo简易制图过程》
https://zhuanlan.zhihu.com/p/358796415
举报/反馈

Apollo开发者社区

1729获赞 2320粉丝
Apollo自动驾驶开放平台
关注
0
0
收藏
分享