Procedural track generation for driving simulations
Abstract—This paper introduces a method for generating round courses based on the VDI or Carolo Specification and shows how to export them to the OpenDRIVE-Format. The method shown in this paper uses a graph and the A* algorithm to create tracks. These tracks are meant to be used for testing algorithms and training AI. Because of this, a great variety of tracks is needed. To achieve this, the weights for the edges are based on noise functions. The paper also presents a possible way to place traffic signs based on the track’s geometry and road marking.
- Link: Paper
- Team: Callum Munro, Roman Wecker, Bünyamin Örümcek
- Development: 3 months
- Platform: PC
- Technology: CarMaker, C++, Qt, FastNoise
Making Of
The paper titled “Procedural track generation for driving simulations” emerged from an elective module at University of Applied Sciences Kempten. The objective of the module was to prepare for the VDI and Carolo Cup competitions. These competitions are events for model cars on a scale of 1:10 or 1:8 held in-person. While the groundwork for the model car had been laid in previous years, for the competitions we had been preparing for, the organizers announced new challenges involving autonomous driving.
We split responsibilities and began working in small teams on various aspects of autonomous driving, including but not limited to training a neural network on video recordings, street sign recognition, as well as parallel and reverse parking. Due to the restrictions around the Corona lockdown, it was not possible to get physical access to the test site. Therefore, my group of three people was tasked to develop infinite circuits for both cups that serve as digital twins and allow training a neural network on an artificial data set. While training on artificial data doesn’t prepare for the real competitions, it allowed for progress given the circumstances.
For the real competitions the race track is only revealed on the day of the event itself. That is why it is essential to train on a large number of circuits beforehand, something that is easier to achieve with digital twins rather than a real circuit course laid out with adhesive tape on the floor.
The only requirement we had was that the circuit has to work in CarMaker in the end for future teams to build on. Since CarMaker itself did not offer capabilities for our requirements, we had to generate the circuits outside of it and import them from one of the supported formats. For best compatibility between different car simulation software, such as CarMaker or CARLA, we decided against the CarMaker-specific format and chose the OpenDRIVE format.
Within our team we focused on the different aspects:
Bünyamin Örümcek developed a tile-based algorithm to procedurally generate circuits with the help of different types of noise and the A* pathfinding algorithm. The circuits connect to the starting section of the Carolo or VDI Cup and also incorporate intersections.
Callum Munro built a visual editor using the Qt framework which allows one to visualize and even modify the generated circuit by dragging around control points. Furthermore, the editor allows one to import and mass-export procedurally generated circuits.
I developed an algorithm to procedurally generate road markings and street signs along the circuit, analyzing the road layout and curvature as a basis for the street sign recognition. Additionally, I developed the exporter of the editor that translates the circuit and its road signs into the OpenDRIVE XML format, allowing for import into CarMaker and CARLA.