Self-Driving Cars
with ROS and Autoware
Self-driving cars will transform the way we travel and commute.
This technology merges robotics, machine learning, engineering,
and modern software development methods.
What is the course about?
Developing production-grade autonomous driving systems require a stack of interrelated technologies. This course brings together all the significant parts into a practical step-by-step guide to architect, develop, test, and deploy an autonomous system.
This intermediate-level course using the popular open-source robotics frameworks ROS 2
and Autoware.Auto algorithms and covers through the course of 14 lectures, state-of-the-art techniques that combine hardware, software, algorithms, methodologies, tools, and data analytics.
What will I learn?
You’ll learn a modern approach to developing complex systems for autonomy that the most innovative automotive companies are adopting. The teachers are experienced professionals who have contributed open-source materials moving the industry towards higher standards of design, engineering, and safety.
Who should take the course?
This is an intermediate-level course for individuals who develop pre-production autonomous driving systems. Participants should have knowledge of C++ (including testing), robotics frameworks, and system integration.
Get notified when new lectures will be released!


Autoware Course Lecture 1 - Part 1
Autoware Course Lecture 1 - Part 2
Autoware Course Lecture 3 - Part 1
Autoware Course Lecture 2


Autoware Course Lecture 3 - Part 2

Autoware Course Lecture 4 - Part 1

Autoware Course Lecture 4 - Part 2

Autoware Course Lecture 5 - Part 2

Autoware Course Lecture 7

Autoware Course Lecture 9 - Part 1

Autoware Course Lecture 10

Autoware Course Lecture 11 -Part 2

Autoware Course Lecture 5 - Part 1

Autoware Course Lecture 6

Autoware Course Lecture 8

Autoware Course Lecture 9 - Part 2

Autoware Course Lecture 11 - Part 1

Autoware Course Lecture 12 - Part 1

Autoware Course Lecture 12 -Part 2

Autoware Course Lecture 13

Autoware Course Lecture 14
Course Overview
Lecture 1 | Development Environment
Lecture 2 | ROS 2 101
2. Getting help
3. Unofficial resources
4. ROS Intro
· Core concepts of ROS
· Environment setup
· Colcon nomenclature
· Overview of topics
· Building and running a node
· Simple publisher build and run
· Modify the publisher
· Building a subscriber
· Pub/Sub working together
· Concept overview
· Review basic service
· Running basic services
· Calling services from command line
· Building a service client
· Executing service server/client
· Action overview
· Action file review
· Basic action review
· Running / calling an action
· Action client review
· Running action server with client
Lecture 3 | ROS 2 Tooling
· The Command Line
· Environment Variables
2. Setting up our toy environment
· ros2 run: execute a program
· ros2 node: inspect a node
· ros2 node list
· ros2 node info
5. "Sniffing the Bus": Examining topics
· ros2 topic list
· ros2 topic echo
· ros2 topic hz
· ros2 topic info
· ros2 msg show
· ros2 topic pub
6. GUI equivalents
· RQT
· gqt_graph
· ros2 topic pub
7. Parameters
· ros2 param list
· ros2 param get
· ros2 param set
8. Services: Making things happen
· ros2 service list
· ros2 service type
· ros2 srv show
· ros2 service call
9. Actions
· ros2 action list
· ros2 action info
· ros2 action send_goal
· ros2 action show
· More complex calls
10. Logging data: Secure the bag
· What's a bag?
· ros2 bag record
· ros2 bag record -- selecting topics
· ros2 bag info
· ros2 bag play
11. Wrap up and homework
Lecture 4 | Platform (HW, RTOS, DDS)
Lecture 5 | Autonomous Driving Stacks
Lecture 6 | Autoware 101
Lecture 7 | Object Perception: LIDAR
Lecture 8 | Object Perception: Camera
Lecture 9 | Object Perception: Radar
Lecture 10 | State Estimation for Localization
Lecture 11 | LGSVL Simulation
Lecture 14 | HD Maps
Lecture 12 | Motion Planning & Control
· A nonlinear MPC formulation
· Where to find it in the repository
· How to call it
· How to inspect the results
Lecture 13 | Data Storage and Analytics
2. Add metadata files with customer scanner
3. Use metadata for filter and listing
4. Write custom nodes to process data streams
5. Use Tensorflow to detect objects in video