Starting the Self -Driving Cars Program by the University of Toronto

Source: Deep Learning on Medium

This month, I received an email about a new course on Self-Driving Cars from The University of Toronto at Coursera. I’m growing a passion for Artificial Intelligence and Deep Learning, so I was so excited to apply for a financial aid. You have to fill a form and write about your reasons to study this specialization and the motivation behind it.

I had many reasons to share and the journey I’ve been following in order to learn Artificial Intelligence and Deep Learning. Lucky me, after two weeks, received the news that my financial aid application for Introduction to Self-Driving Cars was approved!!

What’s the Self Driving Cars course about?

I’m so excited because this is the first course in University of Toronto’s Self-Driving Cars Specialization.

This course is an introduction to new terminology to me such design considerations and safety assessment of self-driving cars.

After completing 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

Final Project and CARLA Simulator

The main reason I decided to go for this course is the hands on experience you get. In the final project, students will have the opportunity to develop control code to navigate a self-driving car around a racetrack in the CARLA simulation environment.

Things to do in the final project:

  • You will construct longitudinal and lateral dynamic models for a vehicle and create controllers that regulate speed and path tracking performance using Python 3.0
  • You’ll test the limits of your control design and learn the challenges inherent in driving at the limit of vehicle performance

I have almost too years digging in the data science field and using Python in my projects.This is an advanced course, intended for learners with a background in mechanical engineering, computer and electrical engineering, or robotics. I have a background in computer science but I still need to improve my engineering skills. 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).

Hardware and software requirements to run Carla Simulator:

You need to fill the following requirements to work in the coding assignments:

  • 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)

There’s a total of 4 courses in this specialization:

  • Introduction to Self-Driving Cars
  • State, Estimation and localization
  • Visual Perception for Self-Driving Cars
  • Motion Planning for Self-Driving Cars

The Story of Autonomous Vehicles

In 1925, started the Self-Driving Car dream. Francis P. Houdina, a local mechanic, was the first person to tested out a driverless car using a remote control setup, called “The American Wonder”. The idea is old but now, with the available technology, these systems can be developed easier than years ago.

The reality of driving a busy traffic

More than a luxury thing, self-driving cars are needed to redefine transportation for safety purposes. Just imagine a world where we don’t need to drive anymore but rely on autonomous systems. The advantages are huge: traffic accidents will be reduced tremendously due that the task won’t rely on humans but machines. Machines never get bored or tired about driving! and it can change the way we commute, saving more time for other tasks.

I recommend you to watch this TED Talk: “How a driverless car sees the road” by Chris Urmson. Chris is part of the Google’s driverless car program, one of several efforts to remove humans from the driver’s seat. He has a great point about the need of self-driving cars and remarks the benefits in order to reduce traffic accidents and save lives.

Watch the video here:

Taxonomy of driving

Driving Task

Driving task is made of three sub-tasks:

Perception: It’s perceiving the environment you are driving in. Examples: Tracking a car’s motion in and identifying the various elements in the world around us (road services, road signs, vehicles, pedestrians, etc).

Motion-Planning: This allow us to reach our destination successfully. Example: drive from your home to your office.

Vehicle Control: We need to take the appropriate steering, break and acceleration decisions to control the vehicle’s position and velocity on the road.

Operational Design Domain (ODD)

Constitutes the operating conditions under which a given system is designed to function (environmental time of day, roadway and other characteristics in which the car will perform reliably).

How to classify driver system automation

In order to classify driver system automation, we need to consider the next points:

  • Driver attention requirements (Can you watch a movie while driving to work?)
  • Driving action requirements (do you need to steer?, do you need to change lanes?)
  • What exactly makes up a driving task?

What exactly makes up a driving task?

Lateral Control: steering

Longitudinal Control: braking, accelerating

Object and Event Detection and Response (OEDR): detection and reaction

Planning: it’s primarily concerned with the long and short term plans needed to travel a destination or execute maneuvers such as lane changes and intersection crossings.

Miscellaneous: tasks that people do while driving as well (signaling with indicators, hand-waving, interacting with other drivers and so on).

Commonly-Uses Level of Automation defined by the SAE Standard J3 016

Level 0- No Automation (Full human perception, planning and control)

In this level, there’s no driving automation and everything is done by the driver.

Level 1- Driving Assistance

An autonomous system assists the driver by performing either lateral or longitudinal control tasks. Example: Adaptive cruise control (ACC). In ACC, the system can control the speed of the car, but it needs the driver to perform steering. So, it can perform longitudinal control but needs the human to perform lateral control. Another example is Lane Keeping Assistance. In this one, the system can help you stay within your lane and warn you when you are drifting towards the boundaries. Today’s systems rely on visual detection of lane boundaries coupled with lane centering lateral control.

Adaptive cruise control (ACC)
Lane Keeping Assistance

Level 2- Partial Automation

In this level, the system performs both the control tasks, lateral and longitudinal in specific driving scenarios. Examples of these systems are: GM Super Cruise and Nissan’s Pro Pilot Assist. These systems can control both, your lateral and longitudinal motion, but it stills need the driver monitoring of the system. Some companies that offer systems with this level of automation are: Mercedes, Audi, Tesla and Hyundai.

Level 3- Conditional Driving Automation

In this level, the system can perform Object and Event Detection in Response to a certain degree in addition to the control tasks but, in the case of failure, the control must be taken up by the driver. The key difference between level 2 and 3 is that the driver does not need to pay attention in certain specific situations as the vehicle can alert the driver in time to intervene. Example of these systems are: Audi A8 Sedan (can navigate unmonitored in slow traffic).

Level 4- High Driving Automation

The system is capable of reaching a minimum risk condition in case the driver doesn’t intervene in time for an emergency. These systems can handle emergencies on their own but may still ask drivers to take over to avoid pulling over to the side of the road unnecessarily. At this level, passengers can check their phone or watch a movie knowing that the system is able to handle emergencies and is capable of keeping the passengers safe. However, this level still permits self-driving systems with a limited ODD. Example: Waymo, it’s the only one that has deployed vehicles for public transport with this level of autonomy.

Level 5 — Fully Driving Automation

The system is fully autonomous and its ODD is unlimited, it can operate under any condition necessary. There are not examples yet in this level of automation.


Those are my notes about the first Module on this course. Hope you enjoyed!


You can watch the video about this specialization:

CARLA Simulator Research Paper: