
Master the basics of ROS from scratch with a step-by-step, beginner-friendly course that covers installing ROS on Ubuntu and building ROS nodes, topics, services, messages, parameters, and launch files.
Set up your development environment by installing ROS on Ubuntu, selecting a ROS version, and running ROS for the first time, using a virtual machine if needed.
Install ROS Noetic on Ubuntu 20.04 by configuring sources, keys, and apt, choosing desktop-full or ros-base, then set up the environment in bashrc and start your first ROS program.
Learn to write and run your first ROS program by creating a workspace, building ROS packages and a ROS node in Python, then C++, and using common command line tools.
Learn how anonymous nodes let you launch multiple publishers and subscribers on the same topic across Python and C++ in ros.
Visualize the ROS graph with rqt_graph to see which nodes publish or subscribe to the robot news radio topic, and use it to debug topic flows.
Launch the turtlesim node with rosrun, control movement via teleop turtle, inspect topics and rostopic info, publish geometry message twist via rostopic pub, and visualize data with rqt graph.
Publish and subscribe with ROS in Python by building a number publisher and a counter node that subscribes to the number topic and publishes to number_count.
Learn how ros services create a synchronous client-server workflow with a request and a response, enabling actions like led power and weather lookups across multiple clients.
Create a complete c++ ros service server and client, advertise a two-integer add service, implement a callback, handle requests and responses, and test with catkin build and ros run.
Practices ros services with turtlesim by running roscore and turtlesim, calling services like reset and teleport relative or absolute, and observing immediate turtle movements across nodes.
Add a reset counter service using ROS standard SetBool with std_srvs to reset a global counter in the number counter node, including Python and C++ solutions.
Learn how ROS services enable node communication by creating a service server, advertising the service, and calling it from a client to compute a value or perform a quick action.
Understand ROS message and service definitions, how topics differ from services, and how the Catkin build generates code from these definitions, with examples from std, geometry, and sensor messages.
Create a custom ros srv to compute disk area, with a float64 radius request and a float64 area response. Update the CMakeLists and build with catkin_make to generate server code.
Learn to use ros topic, ros msg, and ros srv command line tools to list, show, and debug topics, messages, and services, including their definitions.
Explore ROS parameters and launch files, learn why they are useful, and practice creating and using your own parameters and launch files to build robot applications.
Launch the ROS master to create the parameter server, a global dictionary of parameters accessible from node, where you can read, modify, and create booleans, integers, doubles, strings, and lists.
Create a launch file to start all parameters and nodes, using a dedicated launch package and roslaunch to start the number publisher and the number counter.
Explore writing ros code with object oriented programming in python and c++, using a class-based number counter node with publishers, subscribers, and a service server.
Compare a non-class and a class-based ROS number counter in C++, showing how the node handle creates publishers, subscribers, and a service server within a constructor.
create and manage multiple catkin workspaces to isolate robot projects, then source each workspace’s setup.bash in the correct order to switch between environments.
(Updated with ROS Noetic - This course is now valid for ROS Kinetic, ROS Melodic, and ROS Noetic)
Learning ROS is hard, and you know it. But why should it be that way?
There is a lack of structured resources for beginners. You can find some explanations and programming tutorials online about Robot Operating System, but they won’t really tell you which path to follow when you begin, where to go, what to focus on, etc.
That’s why I’ve created this course, that I wish I had when I begun. So you can learn ROS much faster than I did.
The goal of this course is to remove the big learning curve that you face when you start to learn ROS by yourself. I will show you, step by step, what you need to know to get started and master ROS basics.
This course is:
Structured in a way that is easy to follow for a beginner
Going through all ROS core concepts that you need, step by step
Going to the point. No useless and over-complicated stuff that you won’t use anyway.
Full of practice and challenges to make you progress faster
Now, why should you choose my course?
In the past I have developed a complete ROS software for an entire 6 axis robotic arm. I’m telling you that because by developing this robot, I learned (the hard way) what I really needed to know to build things that actually work.
My experience with ROS is not only about university work or a weekend hobby: I actually co-founded a business with a robot powered by ROS. By doing so, I had to focus on going to the point, finding what is useful, and what is not.
So today, with the practical vision that I’ve developed, I know exactly what you need to learn at the beginning if you want to get serious about building robotic applications.
What is this course about?
This course will guide you, step by step, through all the ROS core functionalities. We’ll focus on ROS basics, communication tools, and also on how to build a scalable application with Robot Operating System.
For each section, I will explain one concept in a way that is easy to understand, and then you will practice with me by writing, building, and running some code. I will show you what you need to pay attention to, what you need to focus on, and how to avoid common mistakes.
And, more importantly, I will give you some activities and challenges to make you practice on the concepts that you’ve just seen.
Note that all the code written in this course will be both in Python and C++, so you can decide to learn ROS with those 2 languages, or only one of them.
So.. Start your learning today and build awesome robotic applications with ROS !
After installing ROS on a Ubuntu OS, you will learn the following ROS key concepts :
Nodes
Topics
Services
Msg and Srv definitions
Parameters
Launch Files
And much more!
By mastering those concepts, you will be 100% ready to start any other robotic application and build complete software from scratch using Robot Operating System.
You will also learn how to :
Debug your program
Use command-line tools for each key concept
Build your application
Correctly set up and manage your project structure
And as I want to make you develop great (not just good, because “good” is not good enough) and scalable robotic applications, I will share with you the best practices that I’ve learned from my own experience.
UPDATE:
Note: this course targets the first version of ROS, or "ROS1". This is not a ROS2 course.
- Should you learn ROS1 or ROS2?
As of today, you should learn ROS2. ROS1 is not supported anymore and won't receive new official updates.
Now, having said that, lots of companies are still using ROS1 on legacy projects, and you might need to work with a ROS1 codebase at some point. If that's the case, then this course will help you.
Note that if you already know ROS1 or ROS2, switching to the other version won't be that hard, as most of the concepts are identical.