This repository is a forked from the https://gitlab.lrz.de/tum-cps/opendrive2lanelet/tree/master/opendrive2lanelet.
docker build -t opendrive2lanelet2convertor .
docker run --rm -it -v [$ path to the folder containing xodr maps]:/root/opendrive2lanelet/map opendrive2lanelet2convertor
After the process exit the .osm file with the same name should apear in the folder containing xodr maps.
- Speed limit unit is hard coded as mph
We provide the code for an OpenDRIVE (www.opendrive.org) to lanelets (www.mrt.kit.edu/software/liblanelet) converter, which has been introduced in our paper: M. Althoff, S. Urban, and M. Koschi, "Automatic Conversion of Road Networks from OpenDRIVE to Lanelets," in Proc. of the IEEE International Conference on Service Operations and Logistics, and Informatics, 2018.
git clone https://gitlab.lrz.de/cps/opendrive2lanelet.git
cd opendrive2lanelet
python setup.py install
Public source (only released versions): https://gitlab.lrz.de/tum-cps/opendrive2lanelet.git
pip install opendrive2lanelet
Optionally, for using the gui packages:
pip install opendrive2lanelet[GUI]
Download example files from: http://opendrive.org/download.html
Start the GUI with opendrive2lanelet-gui
Execute opendrive2lanelet-convert input_file.xodr -o output_file.xml
If you want to visualize the Commonroad file, use the opendrive2lanelet-visualize
command.
from lxml import etree
from opendrive2lanelet.opendriveparser.parser import parse_opendrive
from opendrive2lanelet.network import Network
from from commonroad.common.file_writer import CommonRoadFileWriter
# Import, parse and convert OpenDRIVE file
with open("{}/opendrive-1.xodr".format(os.path.dirname(os.path.realpath(__file__))), "r") as fi:
open_drive = parse_opendrive(etree.parse(fi).getroot())
road_network = Network()
road_network.load_opendrive(open_drive)
scenario = road_network.export_commonroad_scenario()
# Write CommonRoad scenario to file
from commonroad.common.file_writer import CommonRoadFileWriter
commonroad_writer = CommonRoadFileWriter(
scenario=scenario,
planning_problem_set=None,
author="",
affiliation="",
source="OpenDRIVE 2 Lanelet Converter",
tags="",
)
with open("{}/opendrive-1.xml".format(os.path.dirname(os.path.realpath(__file__))), "w") as fh:
commonroad_writer.write_scenario_to_file_io(file_io=fh)
from lxml import etree
from opendrive2lanelet.opendriveparser.parser import parse_opendrive
with open("input_opendrive.xodr", 'r') as fh:
open_drive = parse_opendrive(etree.parse(fh).getroot())
# Now do stuff with the data
for road in open_drive.roads:
print("Road ID: {}".format(road.id))
The documentation is published on Read the Docs.
To generate the documentation from source, first install the necessary dependencies with pip:
pip install -r docs_requirements.txt
Then you can run
cd docs && make html
for example.
- When trying to use the gui.py under Wayland, the following error occurs:
Set the platform to xcb using this command:
This application failed to start because it could not find or load the Qt platform plugin "wayland" in "". Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb. Reinstalling the application may fix this problem.
export QT_QPA_PLATFORM="xcb"
Sebastian Maierhofer (current maintainer)
Benjamin Orthen
Stefan Urban