路网编辑器技术预研

路网编辑器技术预研

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主要步骤:

  1. 安装CMake(编译构建工具):直接下载免安装压缩包,配置环境变量即可,下载链接
  2. 安装MinGW(编译器):可参考链接Windows 中使用的 GCC 编译器,注意配置环境变量;
  3. 安装EMSDK(将C++代码编译成WebAssembly字节码的工具链):可参考链接Emscripten简介及初体验
  4. 双击emsdk目录下的emcmdprompt.bat,切到需要构建编译的目录下./build,执行命令emcmake cmake .. -G "MinGW Makefiles"
  5. 执行命令emmake make
  6. 执行命令cp ModuleOpenDrive.* ../Viewer
  7. 通过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

[6] OpenDrive Online Editor

[7] CommonRoad Scenario Designer

[8] opendrivejs

猜你喜欢

转载自blog.csdn.net/wml00000/article/details/126132207