libOpenDRIVE ist eine leichte, abhängigkeitsfreie und schnelle C++-Bibliothek, die das Parsen von OpenDRIVE-Dateien und die Generierung von 3D-Modellen ermöglicht.
Es ist klein und lässt sich problemlos in andere Projekte integrieren. Eine Kernfunktion ist das Parsen von OpenDRIVE-Dateien und die Generierung von 3D-Modellen. Die Bibliothek zielt auf OpenDRIVE Version 1.4 ab.
Hier ist ein Beispiel dafür, wie Code mit libOpenDRIVE aussieht. Ein vollständigeres Beispiel finden Sie unter 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;
Um standardmäßig eine statische Bibliothek zu erstellen, führen Sie einfach Folgendes aus:
mkdir build
cd build
cmake ..
make
Wenn Sie eine gemeinsam genutzte Bibliothek benötigen, verwenden Sie:
cmake -DBUILD_SHARED_LIBS=ON ..
Schauen Sie sich den Viewer unter odrviewer.io an, der diese Bibliothek verwendet. Verwenden Sie das odrviewer-Projekt, um Probleme und Funktionsanfragen für odrviewer.io zu posten.
Info: Die Viewer- und WebAssembly-Bindungen sind nicht mehr Teil dieses Projekts. Dadurch soll der Fokus mehr auf die Bibliotheksfunktionalität gelegt werden und vermieden werden, dass die Bindungen auf dem neuesten Stand gehalten werden müssen. Verwenden Sie v0.3.0, um die letzte Version zu erhalten, die noch Viewer- und WebAssembly-Bindungen enthält.