-- upcoming --
Tutorial on: Vehicle path following and control
This project considers example implementations and demonstrations for several aspects of car-like vehicle control, motion/path planning, e.g., for autonomous driving purposes. The examples are implemented using model-based programming for dynamic systems in Python Openrtdynamics. Some modules are also exported to Simulink S-functions via automatic code generation.
Some theoretical details are described in Path Tracking Control for Urban Autonomous Driving, Klauer et al., IFAC-WC 2020.
Topics include (to be further defined)
-
Kinematic Bicycle Model (KBM) ✅ bicycle-model
-
Lateral/Longitudinal acceleration
-
Path following / steering control (basic) ✅ path-following control
-
Path following / steering control based on path curvature ✅ path-following control (curvature-based)
-
Lateral dynamics ✅ lateral dynamics
-
Path following (open-loop) ✅ path-following open-loop control
-
Trajectory tracking control (adding velocity control to the path tracking controller)
-
Frenet (curvilinear coordinate system) transformation of the KBM: ✅ basic lateral motion planning
-
Path planning using model-based optimal control ✅ driving to given destination
-
Safety Functions
-
Trailers
-
Tracking of landmark positions as seen from a vehicle using factor graphs (using the library GTSAM) ✅ landmark tracking
Further, this projects implements a path tracking module that can be used to track the projection of the vehicle position on a given path (the paths are dynamically extensible to enable endless driving). It allows to sample data like position, heading, and curvature from the path. Further, it allows to calculate the lateral distance to the path. This module is available (via generated c++ S-functions from Python) for controller design or simulation in Matlab/Simulink. You might consider the notebook on code generation for more information. Simulink examples are given in the folder
sfunctions.
Paths are encoded as arrays of position, heading, and curvature over a distance parameter. For example, tracks generated by the path optimization by TUM can be used directly:
https://github.com/TUMFTM/global_racetrajectory_optimization.
- openrtdynamics2 (modelling of dynamic systems): $ pip install openrtdynamics2
- emscripten (https://emscripten.org/), the compiler command 'emcc' is needed to compile the autogenerated c++ code for the HTML-based demonstrations into WASM-binaries.
- casadi (a framework for optimization) $ pip install casadi
- GTSAM (a framework for factor graphs) $ pip install gtsam
Start a http-server to be able to access the *.html files, e.g.:
python3 -m http.server