The Python scenariogeneration package is a collection of libraries for generating OpenSCENARIO (.xosc) and OpenDRIVE (.xodr) XML files.
This combined package (which includes the former pyoscx, pyodrx) can be used to jointly generate OpenSCENARIO based scenarios with interlinked OpenDRIVE based road network maps. Nevertheless, it is still possible to separately generate OpenSCENARIO or OpenDRIVE files by using only a subset of the provided functionality.
The package consists of the scenario_generator module and two Python subpackages, xosc (OpenSCENARIO) and xodr (OpenDRIVE), together with some support functionality for auto generation with parametrization as well as easy viewing with esmini.
The user documentation can be found here, the API documentation here and the change log in release_notes.md
Please note that this is not an official implementation of either OpenSCENARIO or OpenDRIVE.
As of V0.7.2, the coverage of the modules varies:
- The xosc module has full coverage of OpenSCENARIO V1.0.0, and most of V1.1.0, if something is missing please raise an issue or make a pull request.
- The xodr module has coverage of basic roads, junctions, signals, and objects, based on OpenDrive (V 1.7.1).
For more details se xodr_coverage.txt and xosc_missing_features.txt
pip install scenariogeneration
then run any of the examples provided
Been tested with Python >3.6.9. With Python versions <3.7 the order of certain xml-elements might not be the same between generations.
pip install scenariogeneration
Please see the user guide for more information: https://pyoscx.github.io/
Esmini can be used to visualize the generated scenarios. Visit https://github.com/esmini/esmini and follow the "Binaries and demos" section. Your scenarios can be visualized directly by making use of esmini in the following way:
from scenariogeneration import esmini
def Scenario(ScenarioGenerator): ...
s = Scenario()
if __name__ == "__main__":
s = Scenario()
esmini(s,esminipath ='path to esmini', index_to_run = 'first')
where index_to_run can be 'first', 'random', 'middle' or an integer, and esmini will run that scenario/road for you.
esmini is a basic OpenSCENARIO player
pyclothoids, used for construction and optimization of clothoids geometries
See AUTHORS file
The wrappers is based on the OpenSCENARIO and OpenDRIVE standards.
describes the static content of a scenario, like the road, lanes, signs and so on.
describes the dynamic content on top of a road network, e.g. traffic maneuvers, weather conditions, and so on.