libOpenDRIVE เป็น ไลบรารี C++ ที่รวดเร็ว น้ำหนักเบา ไม่ต้องพึ่งพา และ ให้การแยกวิเคราะห์ไฟล์ OpenDRIVE และการสร้างโมเดล 3 มิติ
มีขนาดเล็กและสามารถรวมเข้ากับโครงการอื่นได้อย่างง่ายดาย ฟังก์ชันหลักคือการแยกวิเคราะห์ไฟล์ OpenDRIVE และการสร้างโมเดล 3 มิติ ไลบรารีกำหนดเป้าหมาย OpenDRIVE เวอร์ชัน 1.4
ต่อไปนี้คือตัวอย่างลักษณะของโค้ดที่ใช้ libOpenDRIVE สำหรับตัวอย่างที่สมบูรณ์ยิ่งขึ้น โปรดดูที่ 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;
หากต้องการสร้างไลบรารีแบบคงที่ตามค่าเริ่มต้น เพียงเรียกใช้:
mkdir build
cd build
cmake ..
make
หากต้องการไลบรารีที่ใช้ร่วมกัน ให้ใช้:
cmake -DBUILD_SHARED_LIBS=ON ..
ตรวจสอบโปรแกรมดูที่ odrviewer.io ซึ่งใช้ไลบรารีนี้ ใช้โปรเจ็กต์ odrviewer เพื่อโพสต์ปัญหาและคำขอฟีเจอร์สำหรับ odrviewer.io
ข้อมูล: การเชื่อมโยง Viewer และ WebAssembly ไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์นี้อีกต่อไป นี่คือการมุ่งเน้นไปที่ฟังก์ชันการทำงานของไลบรารีให้มากขึ้น และหลีกเลี่ยงการทำให้การผูกข้อมูลเป็นปัจจุบันอยู่เสมอ ใช้ v0.3.0 เพื่อรับเวอร์ชันล่าสุดที่ยังคงมีการเชื่อมโยง Viewer และ WebAssembly