We may earn an affiliate commission when you visit our partners.
Course image
Steven Waslander and Jonathan Kelly

Welcome to Introduction to Self-Driving Cars, the first course in University of Toronto’s Self-Driving Cars Specialization.

Read more

Welcome to Introduction to Self-Driving Cars, the first course in University of Toronto’s Self-Driving Cars Specialization.

This course will introduce you to the terminology, design considerations and safety assessment of self-driving cars. By the end of this course, you will be able to:

- Understand commonly used hardware used for self-driving cars

- Identify the main components of the self-driving software stack

- Program vehicle modelling and control

- Analyze the safety frameworks and current industry practices for vehicle development

For the final project in this course, you will develop control code to navigate a self-driving car around a racetrack in the CARLA simulation environment. You will construct longitudinal and lateral dynamic models for a vehicle and create controllers that regulate speed and path tracking performance using Python. You’ll test the limits of your control design and learn the challenges inherent in driving at the limit of vehicle performance.

This is an advanced course, intended for learners with a background in mechanical engineering, computer and electrical engineering, or robotics. To succeed in this course, you should have programming experience in Python 3.0, familiarity with Linear Algebra (matrices, vectors, matrix multiplication, rank, Eigenvalues and vectors and inverses), Statistics (Gaussian probability distributions), Calculus and Physics (forces, moments, inertia, Newton's Laws).

You will also need certain hardware and software specifications in order to effectively run the CARLA simulator: Windows 7 64-bit (or later) or Ubuntu 16.04 (or later), Quad-core Intel or AMD processor (2.5 GHz or faster), NVIDIA GeForce 470 GTX or AMD Radeon 6870 HD series card or higher, 8 GB RAM, and OpenGL 3 or greater (for Linux computers).

Enroll now

What's inside

Syllabus

Module 0: Welcome to the Self-Driving Cars Specialization!
This module will introduce you to the main concepts and layout of the specialization and discusses the major advances made in the field over the last two decades, highlighting the most recent progress made by major players in terms of safety and performance metrics, where available.
Read more
Module 1: The Requirements for Autonomy
Self-driving cars present an extremely rich and inter-disciplinary problem. This module introduces the language and structure of the problem definition, defining the most salient elements of the driving task and the driving environment.
Module 2: Self-Driving Hardware and Software Architectures
System architectures for self-driving vehicles are extremely diverse, as no standardized solution has yet emerged. This module describes both the hardware and software architectures commonly used and some of the tradeoffs in terms of cost, reliability, performance and complexity that constrain autonomous vehicle design.
Module 3: Safety Assurance for Autonomous Vehicles
As the self-driving domain matures, the requirement for safety assurance on public roads become more critical to self-driving developers. You will evaluate the challenges and approaches employed to date to tackle the immense challenge of assuring the safe operation of autonomous vehicles in an uncontrolled public road driving environment.
Module 4: Vehicle Dynamic Modeling
The first task for automating an driverless vehicle is to define a model for how the vehicle moves given steering, throttle and brake commands. This module progresses through a sequence of increasing fidelity physics-based models that are used to design vehicle controllers and motion planners that adhere to the limits of vehicle capabilities.
Module 5: Vehicle Longitudinal Control
Longitudinal control of an autonomous vehicle involves tracking a speed profile along a fixed path, and can be achieved with reasonable accuracy using classic control techniques. This week, you will learn how to develop a baseline controller that is applicable for a significant subset of driving conditions, which include most non-evasive or highly-dynamic motions.
Module 6: Vehicle Lateral Control
This week, you will learn about how lateral vehicle control ensures that a fixed path through the environment is tracked accurately. You will see how to define geometry of the path following control problem and develop both a simple geometric control and a dynamic model predictive control approach.
Module 7: Putting it all together
For the last week of the course, now you will get hands on with a simulation of an autonomous vehicle that requires longitudinal and lateral vehicle control design to track a predefined path along a racetrack with a given speed profile. You are encouraged to modify the speed profile and/or path to improve their lap time, without any requirement to do so. Work and play!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores self-driving technology, which is standard in the industry
Teaches safety frameworks, which helps learners evaluate the safety of self-driving cars
Develops programming skills in Python, which is a core skill for robotics
Taught by Jonathan Kelly and Steven Waslander, who are recognized for their work in robotics
Examines hardware and software architectures, which is highly relevant to self-driving cars
Requires programming experience, which may limit accessibility for some learners

Save this course

Save Introduction to Self-Driving Cars to your list so you can find it easily later:
Save

Reviews summary

Driven by data: an autonomous future

According to students, 'Introduction to Self-Driving Cars' is a well received course that explores various aspects of autonomous vehicles, providing a strong foundation for those interested in the industry. Learners say the lectures are engaging and the programming assignments are challenging but instructive. The course covers topics such as safety, control systems, and hardware stacks, and provides a hands-on experience in developing and controlling a self-driving car using the CARLA simulator. Overall, it is highly recommended for anyone seeking a comprehensive introduction to the field of autonomous driving.
The programming assignments and quizzes test students' understanding of the material and require critical thinking.
"For me, I had to read on the side (books, internet searches, and Youtube) to understand each module better in order to be able to pass the quizzes and complete the programming assignments."
"the programming assignments are quite tricky and the explanations are not really godd enough to understand the framework (e.g. unprecise definition of the waypoints array, the coordinate system, etc.) without spending extra effort on this."
"The programming assignments are well thought out, and combined with the course materials, the learning was very effective."
Interviews with professionals in the autonomous vehicle industry give learners a glimpse into the real-world applications and challenges of self-driving cars.
"It does cover many topics in broad strokes, so while the course description may say it takes about 40 hours to complete this course, expect to spend at least double"
"It also gives you a modest intro to the Carla simulator."
"The interviews of various professionals in the AV industry were very interesting."
The course is organized in a logical manner, providing a clear progression of topics and concepts.
"The possibility to get such a smooth introduction to the dynamic modeling and controlling topics together with the programming task on a realistic problem is very important for further learning and understanding."
The final project involves developing and controlling a self-driving car in a simulated environment, providing hands-on experience.
"Most of the course was easy to follow and easy to understand."
"I liked this course and learned a great deal about the in and outs of self-driving cars."
"The final project with Carla simulator is actually pretty good."
The course lacks active support, making it challenging to resolve technical issues or receive guidance.
"For this course on the forums is non existent and expecting students to jump into CARLA and write a simulation loop is quite a leap."
"Especially when debugging CARLA is next to impossible since putting a breakpoint inturn breaks the connection to the server."
"The course requires way more smaller steps before throwing the student in the deep end."
Some of the course materials and software may be outdated, requiring additional effort to complete assignments.
"The negative is that the lectures are extremely short."
"Worked problems aren´t covered in the lectures or the readings, and insight into the topic seems to have been omitted."
"Python has progressed, but the notes for installation seem to be static."
The course assumes students have a basic understanding of college-level math, physics, engineering, and Python programming.
"This course assumes you have more than a basic understanding of college-level math, physics and engineering (at least you have to know the classical control theory) and Python/familiarity with using a command line environment."
"Especially to complete the final exam, a lot of effort has to be spend to get to know environment."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction to Self-Driving Cars with these activities:
Review the mathematics behind self-driving cars
Strengthen your foundational knowledge in mathematics by reviewing concepts relevant to self-driving cars. This will improve your comprehension of the course material.
Browse courses on Linear Algebra
Show steps
  • Review linear algebra concepts
  • Refresh calculus skills
  • Review probability and statistics
Form study groups
Collaborate with classmates to review course material, solve problems, and share insights. This peer-to-peer learning will enhance your understanding.
Show steps
  • Identify classmates with similar interests
  • Schedule regular study sessions
  • Review lecture notes and assignments together
Control engineering exercises
Sharpen your control engineering skills by solving practice problems. These drills will strengthen your understanding of the fundamental concepts.
Browse courses on Control Theory
Show steps
  • Analyze system dynamics
  • Design controllers
  • Simulate control systems
Five other activities
Expand to see all activities and additional details
Show all eight activities
Tutorials on deep learning for self-driving cars
Stay up to date with the latest advancements in deep learning for self-driving cars by following guided tutorials. This will broaden your skillset and enhance your knowledge.
Browse courses on Machine Learning
Show steps
  • Learn the basics of deep learning
  • Apply deep learning to self-driving cars
  • Implement deep learning algorithms
Attend industry conferences
Connect with other professionals in the self-driving car industry to learn about the latest trends and exchange ideas.
Show steps
  • Research industry conferences
  • Register for attendance
  • Network with attendees
Build a self-driving car simulator
Implement a simulator to test and refine your self-driving car algorithms. This hands-on experience will reinforce the concepts learned in the course.
Show steps
  • Choose a simulation platform
  • Design the simulator environment
  • Implement the physics engine
  • Add sensors and actuators
  • Test the simulator
Create a blog post about a self-driving car topic
Solidify your understanding by synthesizing your knowledge into a blog post. This will help you articulate your thoughts and enhance your communication skills.
Show steps
  • Choose a specific topic
  • Research and gather information
  • Write and edit the blog post
  • Publish and promote the blog post
Participate in self-driving car competitions
Test your knowledge and skills by participating in self-driving car competitions. This real-world experience will push you to solve complex problems and refine your abilities.
Show steps
  • Identify relevant competitions
  • Form a team or join an existing one
  • Design and develop a self-driving car
  • Compete in the competition

Career center

Learners who complete Introduction to Self-Driving Cars will develop knowledge and skills that may be useful to these careers:
Automotive Engineer
Automotive Engineers design, develop, and test vehicles. They work on a variety of aspects of vehicles, including engines, transmissions, and safety systems. This course may be useful for Automotive Engineers who want to work on self-driving cars, which are a new and rapidly developing area of automotive engineering.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work on a variety of software applications, including operating systems, web applications, and mobile applications. This course may be useful for Software Engineers who want to work on self-driving cars, which are software-intensive systems.
Mechanical Engineer
Mechanical Engineers design, develop, and maintain mechanical systems. They work on a variety of mechanical systems, including engines, transmissions, and robots. This course may be useful for Mechanical Engineers who want to work on self-driving cars, which are mechanical systems that require a high level of engineering expertise.
Control Systems Engineer
Control Systems Engineers design and implement control systems, which are used to regulate the behavior of dynamic systems. They work in a variety of industries, including automotive, aerospace, and manufacturing. This course may be useful for Control Systems Engineers who want to work on self-driving cars, which are dynamic systems that require precise control.
Electrical Engineer
Electrical Engineers design, develop, and maintain electrical systems. They work on a variety of electrical systems, including power systems, control systems, and communication systems. This course may be useful for Electrical Engineers who want to work on self-driving cars, which are electrical systems that require a high level of engineering expertise.
Data Scientist
Data Scientists use data to solve business problems. They work with data to identify patterns, trends, and insights. This course may be useful for Data Scientists who want to work on self-driving cars, which generate a large amount of data that can be used to improve the performance of the car.
Product Manager
Product Managers are responsible for the development and launch of new products. They work with engineers, designers, and marketers to ensure that the product meets the needs of the customer. This course may be useful for Product Managers who want to work on self-driving cars, which are a new and rapidly developing product.
Systems Engineer
Systems Engineers manage complex systems, using their knowledge of engineering and science to make design decisions. They work with other engineers to ensure that the system is safe, efficient, and reliable. This course may be useful for Systems Engineers who want to work on self-driving cars, which are complex systems that require a high level of engineering expertise.
Project Manager
Project Managers plan and execute projects. They work with stakeholders to define the scope of the project, develop a budget, and create a timeline. They also track the progress of the project and make sure that it is completed on time and within budget. This course may be useful for Project Managers who want to work on self-driving cars, which are complex projects that require a high level of project management expertise.
Quality Assurance Engineer
Quality Assurance Engineers test software and hardware products to ensure that they meet quality standards. They work with engineers and other technical experts to identify and fix defects. This course may be useful for Quality Assurance Engineers who want to work on self-driving cars, which are complex products that require a high level of quality assurance.
Technical Writer
Technical Writers create documentation for technical products. They work with engineers and other technical experts to gather information and write clear and concise documentation. This course may be useful for Technical Writers who want to work on self-driving cars, which are complex products that require clear and concise documentation.
Robotics Engineer
Robotics Engineers design, build, and maintain robots, dealing with hardware and software issues. They often work in specialized fields, including aerospace, healthcare, manufacturing, and defense. This course may be useful for Robotics Engineers who want to work on self-driving cars, which is a specialized subfield of robotics.
Sales Engineer
Sales Engineers work with customers to identify their needs and provide them with solutions. They work with engineers and other technical experts to develop and deliver solutions that meet the customer's needs. This course may be useful for Sales Engineers who want to work on self-driving cars, which are new and rapidly developing products.
Marketing Manager
Marketing Managers develop and execute marketing campaigns to promote products and services. They work with other marketing professionals to create and deliver marketing campaigns that reach the target audience. This course may be useful for Marketing Managers who want to work on self-driving cars, which are new and rapidly developing products.
Machine Learning Engineer
Machine Learning Engineers design and build machine learning models, focusing on developing and maintaining the infrastructure and systems around the models. They work closely with data scientists to operationalize the models. This course may be useful for Machine Learning Engineers who want to build self-driving cars.

Reading list

We've selected ten books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to Self-Driving Cars.
Provides a comprehensive overview of the technical, legal, and social aspects of autonomous driving. It covers topics such as the different levels of autonomy, the sensors and algorithms used in self-driving cars, and the safety and ethical challenges of autonomous vehicles.
Dieses Buch ist ein umfassender Überblick über Betriebssysteme. Es behandelt eine breite Palette von Themen, darunter Prozessverwaltung, Speicherverwaltung und Dateisysteme.
Dieses Buch bietet einen umfassenden Überblick über Mathematik für Informatiker. Es behandelt eine breite Palette von Themen, darunter Algebra, Analysis und Wahrscheinlichkeitstheorie.
Dieses Buch bietet einen umfassenden Überblick über lineare Algebra. Es behandelt eine breite Palette von Themen, darunter Matrizen, Vektoren und Eigenwerte.
Provides a comprehensive introduction to robotics, vision, and control. It covers topics such as kinematics, dynamics, control theory, and computer vision. The book also includes a number of case studies and exercises.
Provides a comprehensive introduction to probabilistic robotics. It covers topics such as probability theory, Bayesian filtering, and motion planning. The book also includes a number of case studies and exercises.
Explores the future of transportation. It covers topics such as the impact of self-driving cars on the transportation industry, the challenges of integrating self-driving cars into the existing transportation system, and the potential benefits of self-driving cars.
Provides a comprehensive overview of reinforcement learning for self-driving cars. It covers a wide range of topics, including Markov decision processes, value functions, and policy gradients.
Provides a comprehensive overview of vehicle dynamics. It covers topics such as the forces and moments acting on a vehicle, the kinematics and dynamics of vehicle motion, and the stability and control of vehicles.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Introduction to Self-Driving Cars.
State Estimation and Localization for Self-Driving Cars
Most relevant
Motion Planning for Self-Driving Cars
Most relevant
Self-Driving Car Engineer - System Integration
Most relevant
Autonomous Cars: How Do They Work and Impact Us?
Most relevant
Self-Driving Car Engineer - Control
Most relevant
Self-Driving Car Engineer - Localization
Most relevant
Autonomous Cars: Deep Learning and Computer Vision in...
Most relevant
Decision-Making for Autonomous Systems
Most relevant
Self-Driving Cars with Duckietown
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser