Model Car Racing -- Robotik Praktikum A / Robotics Practical Course A

Topic

This practical course will address the problem of controlling an R/C model car on a race track. The task is to determine the optimal steering angle and acceleration of the model car in every situation based on the shape of the race track. The position and velocity of the model car will be determined automatically using a highly accurate optical motion capture system so that the students can focus on the optimization of the trajectory.

A practical course (Praktikum) is a hands-on experience including a significant amount of programing work. The key goal here is to realize a real-world control system that runs online and can control an R/C model car on a predefined race track. The students will work in small teams and are expected to support their team throughout the whole term. Basic programming skills in C/C++ are required for this course. It is not mandatory (but suggested/helpful) to have attended the course 'Introduction to Mobile Robotics'. More details will be provided in the first week of the term.

Organization

  • Organizer: Prof. Dr. Wolfram Burgard, Jörg Müller
  • The course takes place Tue, 14-16 in building 101, SR 01-018. The first meeting is on Tue, Oct 23, 14h (ct).
  • ECTS-points: 6 (This corresponds to approximately 15 hours workload per week during the lecture period.)
  • Exam: There will be an oral exam during the examination period (Prüfungsleistung). In order to be admitted to the exam (Studienleistung), you have to regularly attend the course (at least 10 times) and need to participate in the development of the software within your team.
  • All material will be available via this website - check this page for updates frequently.
  • Teaching is done in English (or German depending on the participating students).
  • What is the difference between the Robotics Practical Course A and B? These are simply two different courses and they are independent of each other.

Slides

Assignments

  1. Run the example of the practical repository (with simulator, controller, and viewer).
  2. Set up your own repository.
  3. Copy the controller module (only the folder 'controller') from the practical repository to your own repository and create your own CMake project in your repository. This means fixing the '#include' statements in the controller source files and the 'include_directories' in the CMakeLists.txt. Furthermore, this means adding the needed robular libraries to the 'target_link_libraries' in your CMake project and extending the 'link_directories'.
  4. Change the controller so that it runs the car in an endless loop on the round-trip trajectory.
  5. Change the speed (motor) command value calculation of the controller to a foresightful, intelligent method.
  6. Calculate a velocity profile for the trajectory. The velocity profile should respect the maximum acceleration bound of the tires specified in the config file of the simulator.
  7. Extend the controller to stick to the velocity profile using either LQR or PID.
  8. Evaluate the controller performance in terms of the deviation from the desired trajectory and the desired velocity.
  9. Manually drive the car in the motion capture area on trajectories suitable for parameter identification. Record the controls sent to the car together with the motion capture position and velocity references.
  10. Identify the parameters of the motion model of the car by minimizing the squared prediction error of the motion model given the data recorded in the previous assignment.
  11. Validate the identified parameters by loading them into the simulator and testing them in simulation with manual control.
  12. Test your controller in simulation with the identified parameters.
  13. Test your controller with the real car in the motion capture area.

Important Notes

  • Operating System: We will develop based on Ubuntu 12.04 LTS (download). You can use the PCs in the AIS student's lab. If you want to use your own Notebook/PC, please make sure that you have an Ubuntu installation running on your Notebook/PC.
  • Teams: You will probably have to work in groups of 3 students. The group assignment will be done in the first meeting.
  • Programming language: We recommend and support the usage of C++.

Material

Some Potentially Useful Links

Further Reading

  • J. Zico Kolter, Christian Plagemann, David T. Jackson, Andrew Ng, Sebastian Thrun.
    A Probabilistic Approach to Mixed Open-loop and Closed-loop Control, with Application to Extreme Autonomous Driving
    IEEE International Conference on Robotics and Automation (ICRA), Anchorage, Alaska, USA, 2010
    PDF