This repository collects resources that teach you the most essential fundamentals to thrive in R&D of automated driving. The aim is to provide practical hands-on skills that theoretical university lectures often don't cover.
- Goal: prepare students for their theses and and assistant jobs at research institutes.
- Contributions are welcome, especially about suitable external resources!
Start your journey: Choose a tangible goal/project
Ideally, you already desire mastering a certain practical project within automated driving, but you notice that you are lacking some fundamentals to make decent progress. This is the perfect time to refresh your skills with the following materials.
Get your CP: Choose useful elective courses
If you want to go into automated driving, study it as much as you can within your credited work such that you don't have to learn everything in your free time.
👩💻 Most essential: Source code skills
You typically start by learning the syntax of a higher-level programming language. The most common programming languages for automated driving are
🔧 Super essential: Tooling skills for programming
Being able to produce good source code is not enough to get your project running. You also need to build skills in:
- Setting up a Linux operating system
- Computer science fundamentals and command line tools
- ROS (the robot operating system)
- Version control using Git and GitHub or GitLab
- Modern IDEs (integrated development environments)
- Tooling specific to your programming language
- C++: compilation process, CMake etc.
- Python: package managers and virtual environments etc.
🏎️ What you actually want: Automated driving skills
With the previously covered skills, you can again dive deeper into what you actually want to do: automated driving. The typical topics of function development are
- sensing
- perception
- prediction
- planning
- control
- actuation.
Machine learning is most essential for perception, but also highly relevant for prediction, planning, and control.
Furthermore, safety assurance and impact assessment are crucial for actually getting automated vehicles on the road. V2X is also important.
🎓 For your thesis or paper: Scientific skills
If you aim at writing a scientific thesis (Bachelor, Master, PhD), or publish scientific papers at conferences or journals, then all the "doing" skills are not enough. The most important skills here are:
- literature research
- critical and scientific reasoning
- scientific writing
- understanding how science is organized
- recognizing pseudo-science
After all, it is extremely helpful to know the degree to which the problem you are working on has already been solved in the literature.
🧠 Managing the chaos: Software project skills
Naturally, your projects grow to a size where the source code and the architecture become messy, more and more bugs occur, and fixing one creates another. Therefore, you should learn to avoid those struggles and instead do what is necessary to let your project sustainably grow over multiple years. This includes
- clean code
- clean architecture
- suitable documentation
- test-driven development
- containerization
- continuous integration (CI)
- collaboration tools and techniques.