-
Notifications
You must be signed in to change notification settings - Fork 3
Learning Guide
So, you have joined Formula Student Team Delft as an Autonomous Software Engineer. Awesome!
You might be a bit daunted by all the new things you are expected to learn and the wealth of information that is out there, probably thinking to yourself that there is no way you are ever going to digest all of it.
This guide is aimed at helping you to find as much relevant material for the department you want to join, so you can learn as effectively as possible during the next weeks.
Currently, our main database of learning materials is on Google Drive. There's a document with links to online content (which I encourage you to build on) and several folders and documents which are explained in a bit more detail below (DO NOT DISTRIBUTE ANY OF THIS MATERIAL):
Competition rules. Very extensive document with the rules of the FS competition 2019 for combustion, electric and driverless cars. Read and make sure to understand the driverless part (many rules won't change).
Design reports. Papers on the software and hardware design of the DUT18D and the AMZ car. This is a crucial read to have an overview of our current platform and that of our competitors.
Autonomous Mobile Robotics (ETH Zurich Master's course). The first thing I would read is the course summary specifically the chapters on Perception, Localization, SLAM, and Planning. They give a very good overview.
System Modelling (ETH Zurich Master's course). I would go directly to the exercises about modelling different dynamical systems in MATLAB/Simulink. These exercises contain high-quality solutions.
MPC (ETH Zurich Master's course). Model Predictive Control course. Pretty straight-forward name; this course will teach you all you need to know and more about MPC, and not only for autonomous driving applications.
Recursive Estimation (ETH Zurich Master's course). Very high-quality lecture notes from the same lecturer as DPOC. This will teach you the fundamentals of State Estimation, Bayesian tracking, Maximum Likelihood, (Extended) Kalman Filter, Particle Filter.
DPOC (ETH Zurich Master's course). Dynamic Programming and Optimal Control course with very high-quality lecture notes. It covers the theory behind discrete state and time dynamic programming and behind Pontryagin's Minimum Principle for continuous-time optimal control.
AML_ETHZ (ETH Zurich Master's course). Advanced Machine Learning course. Doesn't cover Deep Learning in detail, for this, I'd recommend other online resources and tutorials (OpenCV, Tensorflow, etc)
ROS (ETH Zurich Master's course). ROS practical course with some DEMOs on Ubuntu 16. I haven't followed this course and I think you can use it as a valuable reference although for learning ROS hands-on and quickly I'd recommend the ROS Wiki Tutorials.
Vehicle Dynamics. This contains the bible of Vehicle Dynamics for Racecars by Milliken.
Alternatively, you might ask the question: if I want to work in X department, what resources are best to check?
Regardless of which department you want to join you will have to be proficient in Git, ROS, C++, and Python.
Perception: I would recommend you read the Perception chapter in Autonomous Mobile Robotics summary (and if you have time check out the slides and exercises for that section). You can also have a glimpse over the AML_ETHZ course (even though it is very theoretical). A background in machine learning and data analysis is favorable for this position.
State Estimation. Localization and SLAM chapters of the Autonomous Mobile Robotics course summary. Recursive Estimation course. A strong backbone of Probability and Statistics is desired for this position.
Path Planning. Just to be clear, my definition of path planning here includes finding the feasible driving region on the track and high-level control objectives. For this, I would recommend starting by reading the Planning chapter of the Autonomous Mobile Robotics course summary. The MPC course is my next recommendation along with the DPOC course. Some understanding of vehicle dynamics is also recommended. Some experience with Optimization will be crucial for this role.
(Low-level) Controls. You will have to understand vehicle dynamics in a lot more detail (read some chapters of the Milliken book and talk to Kevin). System modelling course will teach you the basics of modelling dynamical systems in MATLAB/Simulink which will be useful to understand the current controls of the DUT18. If you have questions, Sabri (from last year) has offered to help out. A grasp of control theory fundamentals is necessary for this position.
Simulation. You should become a ROS expert. Follow ROS tutorials online to become very familiar with RViz and Gazebo (you will use these tools extensively). Other than that, you should become familiar with all aspects of the pipeline and how they interact with each other (so you can simulate the entire autonomous stack).