Home

Awesome

Introduction

This repository contains a quasi-steady-state lap time simulation implemented in Python. It can be used to evaluate the effect of various vehicle parameters on lap time and energy consumption. To generate a proper raceline for a given race track, it furthermore contains our minimum curvature optimization.

Contact person: Alexander Heilmeier.

List of components

Dependencies

Use the provided requirements.txt in the root directory of this repo, in order to install all required modules.
pip3 install -r /path/to/requirements.txt

The code is tested with Python 3.8.3 on Windows 10 and 3.6.8 on Ubuntu 18.04.

Solutions for possible installation problems (Windows)

cvxpy, cython or any other package requires a Visual C++ compiler -> Download the build tools for Visual Studio 2019 (https://visualstudio.microsoft.com/de/downloads/ -> tools for Visual Studio 2019 -> build tools), install them and chose the C++ build tools option to install the required C++ compiler and its dependencies

Solutions for possible installation problems (Ubuntu)

  1. matplotlib requires tkinter -> can be solved by sudo apt install python3-tk
  2. Python.h required quadprog -> can be solved by sudo apt install python3-dev

Intended workflow

The intended workflow is as follows:

Running the raceline optimization

If the requirements are installed on the system, follow these steps:

Resulting raceline for the Berlin FE track

Acknowledgement for the available race tracks

The currently available tracks in the input folder were created by Andressa de Paula Suiti during her semester thesis.

Detailed description of the curvature minimization used during the raceline optimization

Please refer to our paper for further information:
Heilmeier, Wischnewski, Hermansdorfer, Betz, Lienkamp, Lohmann
Minimum Curvature Trajectory Planning and Control for an Autonomous Racecar
DOI: 10.1080/00423114.2019.1631455

Extracting the centerline of a race track from OpenStreetMap

<!-- language: lang-none -->
[out:json][timeout:25];
(
  node["highway"="raceway"]({{bbox}});
  way["highway"="raceway"]({{bbox}});
  relation["highway"="raceway"]({{bbox}});
);
out body;
>;
out skel qt;

Running the lap time simulation

If the requirements are installed on the system, follow these steps:

Lap time simulation result for the Monza racetrack

Detailed description of the lap time simulation

Please refer to our paper for further information:

@inproceedings{Heilmeier2019,
doi = {10.1109/ever.2019.8813646},
url = {https://doi.org/10.1109/ever.2019.8813646},
year = {2019},
month = may,
publisher = {{IEEE}},
author = {Alexander Heilmeier and Maximilian Geisslinger and Johannes Betz},
title = {A Quasi-Steady-State Lap Time Simulation for Electrified Race Cars},
booktitle = {2019 Fourteenth International Conference on Ecological Vehicles and Renewable Energies ({EVER})}}

Related open-source repositories