您好,欢迎来到中国自动驾驶高精地图产业创新发展论坛2019!

Apollo相对地图采集制作流程

发布日期:2020-05-17

GRCC hdmap 今天 

手机阅读

点击上方蓝色字体,关注我们




本节主要叙述相对地图指引线的采集、制作、使用流程

1、修改定位模块UTM区域ID

Apollo项目定位(Localization)模块默认使用美国西部UTM坐标,在国内需要修改该值。在Docker外部,打开文件apollo/modules/localization/conf/localization.conf,将下述内容:

1
--local_utm_zone_id=10

修改为当前地区的UTM区域ID,下面是北京地区的精度范围大致在114E-120E之间。中国UTM分区可参考该网http://www.360doc.com/content/14/0729/10/3046928_397828751.shtml

1
--local_utm_zone_id=50

注意:如果录制数据时未修改上述内容,则线下模拟测试回放数据包时只能将错就错,千万不能再修改该值,否则地图上的参考线定位会出错!有一次我采集数据时,忘了修改该值,回放数据时又进行修改,结果导致参考线定位到了美国西海岸!取消修改,按F5键刷新浏览器后显示就恢复正常了。

2、参考线原始数据采集

将构建好的Apollo项目文件导入车内工控机,进入Docker,再执行如下命令,启动Dreamview服务端程序:

1
bash scripts/bootstrap.sh

在浏览器中打开网页http://localhost:8888(注意不要使用代理),进入Dreamview界面,如下图所示:
img

  1. 将车辆驶入待测试路段起点。点击Dreamview界面左侧工具栏中的Module Controller按钮,进入模块控制页面,选中GPS、Localization、Record Bag选项,注意:如果采集的数据包需用于线下模拟测试,还需加上CAN Bus选项。

img

  1. 驾驶员从起点启动车辆并按预定路线行驶至终点;

  2. 操作员关闭Dreamview界面中的Record Bag选项,此时会在/apollo/data/bag目录

    这是Docker中的目录,宿主机上对应的目录为apollo/data/bag)中生成一个类似于2018-04-01-09-58-00的目录,该目录中保存着类似于2018-04-01-09-58-00.bag的数据包。这就是我们所需的数据包,请记住它的路径及名称。

注意:单个数据包文件的默认录制时长为1分钟,默认文件大小为2048MB,可通过修改文件/apollo/scripts/record_bag.sh来改变默认值。

3、参考线制作

参考线的制作无论在哪台计算机上制作,我们首先进入Docker,并将录制的数据包放置在/apollo/data/bag目录中,且假定该文件名为2018-04-01-09-58-00.bag

从原始数据包提取裸数据

在Docker内部,使用如下命令从原始数据包提取裸数据:

1
cd /apollo/modules/tools/navigatorpython extractor.py /apollo/data/bag/2018-04-01-09-58-00.bag

上述命令会在当前目(易知我们在/apollo/modules/tools/navigator目录中)生成一个提取后的裸数据文件:path_2018-04-01-09-58-00.bag.txt。为了验证裸数据的正确性,可以使用如下命令查看:

1
python viewer_raw.py ./path_2018-04-01-09-58-00.bag.txt

会显示类似下图的路径图:

img

对裸数据进行平滑处理

如果录制数据时,车辆行驶不够平顺,提取的裸轨迹数据可能会不光滑,有必要对其进行平滑处理。继续在Docker内部使用如下命令完成平滑处理:

1
bash smooth.sh ./path_2018-04-01-09-58-00.bag.txt 200

注意:上述命令中200是平滑处理的长度,该值一般为150-200,如果执行失败,可尝试调整该参数,再次进行平滑

为了验证平滑结果的正确性,可以使用如下命令查看:

1
python viewer_smooth.py ./path_2018-04-01-09-58-00.bag.txt ./path_2018-04-01-09-58-00.bag.txt.smoothed

其中,第一个参数./path_2018-04-01-09-58-00.bag.txt是裸数据,第二个参数./path_2018-04-01-09-58-00.bag.txt.smoothed是平滑结果,显示效果类似下图:

img

4、Dreamview前端的编译及配置

Dreamview前端默认使用Baidu地图,也可修改为Google地图,但需重新编译Dreamview前端,并正确设置UTM区域,具体方法如下(注意:如不需修改地图设置,可忽略前两步,直接执行第三步):

更改导航地图

打开文件[apollo项目根目录]/modules/dreamview/frontend/src/store/config/ parameters.yml,根据需要将下述内容替换为Google地图或Baidu地图:

1
2
3
navigation:  # possible options: BaiduMap or GoogleMap  map: "BaiduMap"  
# Google Map API: "https://maps.google.com/maps/api/js"  
# Baidu Map API: "https://api.map.baidu.com/api?v=3.0&ak=0kKZnWWhXEPfzIkklmzAa3dZ&callback=initMap"  mapAPiUrl: "https://api.map.baidu.com/api?v=3.0&ak=0kKZnWWhXEPfzIkklmzAa3dZ&callback=initMap"

重新编译Dreamview前端

按照步骤1.2的方法进入Docker,运行如下命令编译Dreamview前端:

1
2
3
4
# 安装Dreamview前端依赖包,注意:该步骤只需执行一次,不必每次执行
cd /apollo/modules/dreamview/frontend/yarn install
# 编译Dreamview前端
cd /apollobash apollo.sh build_fe

编译过程可能会出现如下错误:

1
ERROR in ..//css-loader!..//sass-loader/lib/loader.js?{"includePaths":["./node_modules"]}!./styles/main.scss*Module build failed: Error: ENOENT: no such file or directory, scandir '/apollo/modules/dreamview/frontend/node_modules/node-sass/vendor'...(后面还有一长串,不再一一列出)

这是内部依赖包不一致造成的,解决方法如下:

在Docker内部,运行如下命令(注意:一定要保持网络畅通,否则无法重新下载依赖包):

1
cd /apollo/modules/dreamview/frontend/rm -rf node_modulesyarn installcd /apollobash apollo.sh build_fe

配置UTM区域ID

打开文件apollo/modules/common/data/global_flagfile.txt

1
--local_utm_zone_id=50

5、导航模式的使用

打开Dreamview并开启导航模式

进入Docker,启动Dreamview,命令如下:

1
2
3
4
5
6
7
cd your_apollo_project_root_dir
# 如果没有启动Docker,首先启动,否则忽略该步
bash docker/scripts/dev_start.sh -C
# 进入Docker
bash docker/scripts/dev_into.sh
# 启动Dreamview后台服务
bash scripts/bootstrap.sh

若是线下模拟测试,则将步骤二中录制好的数据包/apollo/data/bag/2018-04-01-09-58-00.bag(这是我机器上的录制数据)循环播放;若是实车调试,则忽略该步骤。

1
2
# 模拟测试情形下,循环播放录制数据;实车调试情形忽略该步骤
rosbag play -l /apollo/data/bag/2018-04-01-09-58-00.bag

在浏览器中打开网页http://localhost:8888(注意不要使用代理),进入Dreamview界面,点击右上方下拉框,将模式设置为Navigation(导航模式),如下图所示:

img

打开Dreamview导航模式选项

点击Dreamview界面左侧工具栏中的Module Controller按钮,进入模块控制页面。若是线下模拟测试,选中Relative Map、Navi Planning选项,其他模块根据需要开启,如下图所示(图中显示空白文本的模块是Mobileye模块,需安装配置好相关硬件后才可见)):

img

若是实车调试,建议除Record Bag、Mobileye(若Mobileye硬件未安装,则会显示为空白文本)和Third Party Perception模块外,其余模块全部开启,如下图所示:

img

发送参考线数据

在Docker内部,使用如下命令发送步骤三中制作的参考线数据:

1
cd /apollo/modules/tools/navigatorpython navigator.py ./path_2018-04-01-09-58-00.bag.txt.smoothed

下图是线下模拟测试情形下Dreamview接收到参考线后的界面,注意界面左上角已出现了百度地图界面,我们发送的参考线在百度地图中以红线方式、在主界面中以白色车道线的方式展现。

img

下图是实车调试情形下的Dreamview接收到参考线后的界面,注意界面左上角已出现了百度地图界面,我们发送的参考线在百度地图中以红线方式、在主界面中以黄色车道线的方式展现。

img

需注意以下几点:

(1) 如果发送参考线数据后,Dreamview界面不能正确显示参考线,可能有以下方面的原因:一是参考线数据未正确发送,解决办法是再次执行发送命令;二是浏览器缓存不一致,解决办法是按Ctrl + R或F5键刷新显示,或者清理浏览器缓存;三是Dreamview后台服务程序运行异常,解决办法是在Docker内部重启Dreamview后台服务,命令如下:

1
2
3
4
# 停止Dreamview后台服务
bash scripts/bootstrap.sh stop
# 重新启动Dreamview后台服务
bash scripts/bootstrap.sh

(2) 每次车辆重新回到起点后,无论是线下模拟测试还是实车调试情形,均需再次发送参考线数据。


文章作者:胡想成

发布时间:2019年08月23日 - 09:08

最后更新:2020年03月14日 - 11:03




相关文章

业界高精地图产品之Here、Google 、TomTom、Mobileye 地图的生产采集和表述
高精地图文件协议格式定义
高德地图韦东:莫让高精地图阻碍汽车智能化进程






SELECTED EVENTS




 

长按二维码识别关注




  • 电话咨询
  • 021-22306692
  • 15021948198
None