ROS2 (Foxy) For Beginners I: Basics and Fundamental Concepts
What you'll learn
- Install ROS2 on Ubuntu
- Recognize the concepts of ROS2 and its ecosystem
- Understand the difference between ROS1 and ROS2
- Recognize the features of Data Distribution Service (DDS) used in ROS2
- Create ROS2 workspaces and packages
- Develop programs with ROS2 (C++ and Python)
- Execute applications using ROS2
- Practice ROS2 Computation Graph Concepts using Hands-on with Turtlesim
Requirements
- Knowledge in C++ and/or Python Programming languages.
- Familiarity with ROS1 (recommended)
- Basic understanding of Linux Ubuntu Operating System
- Motivated to learn, explore and get started with ROS2
Description
Note
The course title was changed from ROS2 (Foxy): The Next-Generation ROS to the new title ROS2 (Foxy) For Beginners I: Basics and Fundamental Concepts. The reason is to be in line with my course series ROS For Beginners.
UPDATE
The course is updated with the latest LTS ROS2 version, ROS2 Foxy, on March 2022.
Are you in the right place?
You are a ROS user, and you have heard about ROS2 as being the next generation ROS, but,
you are still unsure what ROS2 is?
How does it improve on and differ from ROS1?
Is it time to migrate to ROS2?
Is it easy to install ROS2 and get it up and running?
How to create a workspace, a package, and write programs with ROS?
This course is the right place to address all the questions about ROS2.
ROS2 is the next generation of Robot Operating System (ROS) and the community is starting the migration to this new framework.
Why do you need to take a ROS2 course now?
ROS1 has emerged since 2009 and has been evolving as the defacto standard Ecosystem for developing all kinds of robotics applications, including mobile robots, robotics arms, unmanned aerial systems and drones, self-driving cars, and much more. In ROSCon 2014 conference, the Open Source Robotics Foundations (OSRF) and the ROS community started to discuss and identify some gaps in ROS1, including (1) single point of failure with the ROS Master Node, (2) nonsupport of multi-robots systems as ROS1 was designed for a single robot usage, (3) and no support of real-time guarantee or quality of service profiles, and thus its reliability was questionable.
The ROS community has formed several working groups to design and develop the next-generation version of ROS1, which is currently ROS2. Alpha and Beta versions started to show up from August 2015 until September 2017, and the first official ROS2 release, known as Ardent Apalone, was launched. On December 8th, 2017. Despite the release of ROS2, ROS1 was still being used more actively than ROS2 until 2022, and the main reason is that ROS2 has been under continuous development and did not reach the same level of maturity as ROS1. In fact, the ROS2 developers created the ROS1 Bridge package to be able to communicate between ROS1 and ROS2 when ROS1 is needed from missing functionalities in ROS2.
However, things have been changing since 2021, where ROS2 has accomplished most of the missing functionalities, including navigation, transformations, and others. It is expected that ROS2 will completely dominate or at least start to dominate ROS1 in 2023. For this reason, learning about ROS2, even if you are an experience ROS1 developer, is becoming more and more in need of coping with the future changes and transition from ROS1 and ROS2. As a matter of fact, the latest ROS1 version, ROS Noetic, released in May 2020, has an end of life in May 2025, while ROS2 will continue developing.
I provide this course to all ROS users, with prior knowledge on ROS1 or even entirely new to the ROS ecosystem, to present the features of ROS2 and how it differs and compares with ROS1.
Course Objectives:
The objectives of this course are as follow:
Unveil the secrets of ROS2
Explain the concepts of ROS2 using a hands-on approach
Clarify the differences between ROS1 and ROS2
Provide comprehensive coverage of the ROS2 ecosystem
Demonstrate how to create a ROS2 workspace and packages using C++ and Python
Discuss in detail the implementation aspects of ROS2 topics, services, messages, and actions
Course Learning Outcomes
At the end of the course, you will be able to:
Install ROS2 on Ubuntu
Recognize the concepts of ROS2 and its ecosystem
Understand the difference between ROS1 and ROS2
Recognize the features of Data Distribution Service (DDS) used in ROS2
Create ROS2 workspaces and packages
Develop programs with ROS2 (C++ and Python)
Execute applications using ROS2
Practice ROS2 Computation Graph Concepts using Hands-on with Turtlesim
Pre-Requisites
Familiarity or ROS1 basic concepts
Knowledge in C++ and/or Python programming languages
Basic understanding of Linux Ubuntu Operating System
Enroll now!
If you want to be one of the first ROS users to learn ROS2 and be up to date with the next-generation robot operating system framework, which sooner or later, will be fully replacing ROS2, as the ROS developer community is actively pushing towards ROS2, then, do not let time running out and enroll right away in this course to start your ROS2 experience.
Who this course is for:
- Existing ROS developers and users willing to discover ROS2
- Robotics Engineers
- University Students studying Robotics Courses
- University Instructors teaching Robotics Courses
- Anyone interest to know about the basic concepts of ROS2
Featured review
Instructor
I am Anis Koubaa, a Full Professor in Computer Science at Prince Sultan University and the Director of the Robotics and Internet-of-Things research lab. I am also R&D Director at Gaitech Robotics in China and Senior Researcher in CISTER/INESC TEC and ISEP-IPP, Porto, Portugal. I have been the Chair of the ACM Chapter in Saudi Arabia since 2014. I am also a Senior Fellow of the Higher Education Academy (HEA) in UK.
I received several distinctions and awards including the Rector Research Award in 2010 at Al-Imam Mohamed bin Saud University, and the Rector Teaching Award in 2016 at Prince Sultan University.
I have been teaching Programming courses for more than 16 years in particular Java and Web technologies, and different computer science courses. Programming is my passion for me and I have developed many software and applications. I have been also teaching robotics and developing several program with ROS in both academia and industry.
I am the Editor of three books on Robot Operating System (ROS) with Springer publisher, which are in the top 25% of most downloaded book in Springer database.
I have a lot of tutorials and course on the Internet provided on my YouTube Channel. I am very excited to provide my courses on Udemy to students around the world with practical hands-on activities.
My teaching philosophy is based on Teaching by Demonstration, where I like to explain the concepts by demonstrating them with real-world illustrations. The students will be mainly Learning by Doing.