LibOpenDRIVE
Small, lightweight C++ library for handling OpenDRIVE files
Install / Use
/learn @pageldev/LibOpenDRIVEREADME
libOpenDRIVE
libOpenDRIVE is a lightweight, dependency-free, fast C++ library providing OpenDRIVE file parsing and 3D model generation.
It's small and can be easily integrated in other projects. A core function is the parsing of OpenDRIVE files and the generation of 3D models. The library targets OpenDRIVE version 1.4.
Example
Here's an example of how code using libOpenDRIVE looks. For a more complete example refer to tests/test.cpp.
// load map
odr::OpenDriveMap odr_map("tests/test.xodr");
// iterate roads
for (odr::Road road : odr_map.get_roads())
std::cout << "road: " << road.id << " length: " << road.length << std::endl;
// get xyz point for road coordinates
odr::Road odr_road = odr_map.get_road("17");
odr::Vec3D pt_xyz = odr_road.get_xyz(2.1 /*s*/, 1.0 /*t*/, 0.0 /*h*/);
// access road network attributes
std::string lane_type = odr_road.get_lanesection(0.0).get_lane(-1).type;
// use routing graph
odr::RoutingGraph routing_graph = odr_map.get_routing_graph();
odr::LaneKey from("17" /*road id*/, 0.0 /*lane section s0*/, 1 /*lane id*/);
odr::LaneKey to("41", 0.0, -1);
std::vector<odr::LaneKey> path = routing_graph.shortest_path(from, to);
// get road network mesh
odr::RoadNetworkMesh road_network_mesh = odr_map.get_road_network_mesh(0.1 /*eps*/);
std::cout << road_network_mesh.get_mesh().get_obj() << std::endl;
Build
To build a static library by default, simply run:
mkdir build
cd build
cmake ..
make
If requiring a shared library, use:
cmake -DBUILD_SHARED_LIBS=ON ..
Viewer
Check out the viewer at odrviewer.io which uses this library. Use the odrviewer project to post issues and feature requests for odrviewer.io.
<sub>Info: The Viewer and WebAssembly bindings are no longer part of this project. This is to focus more on the library functionality and avoid having to keep the bindings up-to-date. Use v0.3.0 to get the last version that still includes Viewer and WebAssembly bindings. </sub>
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
