路网编辑器技术预研
文章目录
1. 前言
本文基于【自动驾驶仿真平台概述】进行延申,记录路网编辑器预研工作。大致分为两个方向:
- 借鉴商业平台,如Apollo、51Sim-One等;
- GitHub开源平台
2. 商业平台
2.1 Apollo[1]
Apollo Studio提供场景编辑功能,未发现有路网编辑功能。
Apollo路网可视化通过网络请求路网切片实现。
2.2 51Sim-One[2]
51Sim-One提供场景编辑功能,文档中指明有独立自研场景构建软件World Editor(用于构建路网,在目前开放的平台中未找到该功能)。
51Sim-One路网可视化采用Leaflet(Element中可以发现Leaflet相关标签),基于自研封装的JavaScript代码解析OpenDrive路网数据(可以在源代码中发现部分痕迹)。
3. GitHub开源平台
3.1 libOpenDRIVE[3]
基于C++编写的轻量库,可以解析OpenDRIVE文件并生成三维模型。
可以将C++代码编译成.wasm(WebAssembly)文件(可在浏览器端运行的二进制机器码),嵌入到前端应用。
首先通过CMake
生成MakeFile,然后通过VS打开解决方案,进行编译。
$ ./build/Debug/test-xodr Viewer/data.xodr
road: 500, length: 16.52
road: 501, length: 4.00
road: 502, length: 4.00
road: 503, length: 16.52
road: 504, length: 20.00
road: 505, length: 20.00
road: 506, length: 20.00
road: 507, length: 20.00
road: 508, length: 541.50
road: 509, length: 541.50
road: 510, length: 16.12
road: 511, length: 16.12
road: 512, length: 16.12
road: 513, length: 16.12
road: 514, length: 4.00
road: 515, length: 16.52
road: 516, length: 4.00
road: 517, length: 16.52
Finished, got 22108 lane points, 20572 roadmark points
C++代码编译WebAssembly主要步骤:
- 安装CMake(编译构建工具):直接下载免安装压缩包,配置环境变量即可,下载链接;
- 安装MinGW(编译器):可参考链接Windows 中使用的 GCC 编译器,注意配置环境变量;
- 安装EMSDK(将C++代码编译成WebAssembly字节码的工具链):可参考链接Emscripten简介及初体验;
- 双击emsdk目录下的
emcmdprompt.bat
,切到需要构建编译的目录下./build
,执行命令emcmake cmake .. -G "MinGW Makefiles"
; - 执行命令
emmake make
; - 执行命令
cp ModuleOpenDrive.* ../Viewer
- 通过LiveServer运行Viewer目录下的index.html
3.2 OpenRoadEd[4]
由C++编写的可运行在Ubuntu和Windows上的桌面端软件,支持路网编辑和OpenSceneGraph descriptions。
3.3 PCG-OpenDRIVE[5]
JavaScript编写,能够解析OpenDrive文件,并通过Three.js可视化。
源码下载后可直接运行。
3.4 OpenDriveOnlineEditor[6]
基于Elm语言开发,支持解析、查看OpenDrive文件。
3.5 CommonRoad Scenario Designer[7]
An Open-Source Toolbox for Map Conversion and Scenario Creation for Autonomous Vehicles
用于路网地图转换和场景构建的开源工具箱,基于Python开发,代码库地址commonroad-scenario-designer。
Scenario Designer can convert maps from the Lanelet/Lanelet2, OpenDRIVE, OpenStreetMap (OSM), and SUMO formats to the CommonRoad format.
可以将 Lanelet/Lanelet2, OpenDRIVE, OpenStreetMap (OSM)以及SUMO格式的静态路网地图转换为CommonRoad格式。
Additionally, we provide conversions from the CommonRoad map format to the SUMO and Lanelet format.
另外,支持将用户界面编辑后的CommonRoad格式地图转换到SUMO、Lanelet格式。
3.6 opendrivejs[8]
opendrivejs
is a javascript based parser to visualize.xodr
file into browser.
JavaScript编写,可以解析并在Three.js环境下可视化OpenDrive文件。基于React构建。
参考链接
[1] Apollo场景编辑
[2] 51Sim-One概述
[3] Small, lightweight C++ library for handling OpenDRIVE files
[4] OpenRoadEd
[5] PCG-OpenDRIVE
[7] CommonRoad Scenario Designer
[8] opendrivejs