What is ROS, When to use it, and Why ?
A free video tutorial from Edouard Renard
Software Engineer and Robotics Teacher
20 courses
119,570 students
Learn more from the full course
ROS For Beginners (ROS Noetic, Melodic, Kinetic)
Master the Key ROS (Robot Operating System) Concepts to Create Powerful and Scalable Robot Applications, Step By Step
05:47:28 of on-demand video • Updated November 2025
Master ROS basics
Create, build, run, and debug your ROS program
Master ROS core functionalities
Learn ROS best practices to make your application readable and scalable
Create reusable code for any robot powered by ROS
Write ROS code with both Python and C++
Learn by doing, not just watching
English
What is the common point between all those robots? Well, all the robots you see here are or can be powered by ROS. ROS means Robot Operating System. It is something between a middleware and a framework built especially for robotics applications. ROS goal is to provide a standard for robotic software that developers can use and reuse in any robot. Once you know how to use ROS efficiently, you will be able to set up a new software for a new robot in no time. You first need to master the basics and core functionalities which you will see in this course. And then for every new robot you program, you will gain more skills that can apply to other robots. The more you know about ROS, the easiest it will be for you to program and understand the code of any robot. But is that it? No. Another philosophy behind ROS is: don't reinvent the wheel. Reinventing the wheel is a very common problem in robotics. People always start building new software that is already existing, and thus they don't have the time to work on really valuable stuff. What if instead you could build on a strong software base to directly program high level functionalities and work on use cases instead of low level technical stuff that already exists anyway? So this is the why behind ROS. Now when to use ROS? Maybe you've already started to program robots with an Arduino board or with a custom code on a computer. And what you will quickly experience is that the more sensors, actuators controllers you add on your application, the more complex it becomes until you reach a point where everything is mixed up and you can't add any code for a new sensor without having a huge headache. ROS is here to help you develop powerful and scalable robotic applications. You can use it whenever you want to create a robot software which needs a lot of communication between its subprograms or has some functionalities that go beyond very simple use case. ET cetera. So for a robot that will just open a door with a servo motor when it detects a movement, maybe you don't need ROS, but for a mobile robot, which you want to control with a GPS and a camera, in this case, ROS might really help you. All right. You've just seen what is the why behind ROS and when to use it. Now, what is ROS? It would be hard to describe exactly what is ROS in about two minutes, even an hour. But here are two main points that will give you an idea of the big picture. First of all, ROS provides you with a way of separating your code into reusable blocks, along with a set of communication tools to easily communicate between all your sub programs. Let's say that you are programming a robotic arm. You can create a sub program called Node for your camera. Another for the motion planning, another one for the hardware driver, another for joystick. And so on. And each of those independent blocks will communicate between each other in a way that is powerful and scalable. The second main point is that ROS provides you with many plug and play libraries that will save you a huge amount of time. And most importantly, that will prevent you from reinventing the wheel. If we come back to the robotic arm, imagine how difficult it can be to compute the inverse kinematics for the arm to plan a trajectory which will make the arm move smoothly and avoid any obstacle on the way. Impossible you might think unless you spend two years studying mathematics, motion planning, etcetera. But what if I tell you this: You don't need two years. You need maybe two days to install a library and figure out how to use it. So you have great communication tools and great libraries. That's not all. ROS is said to be language agnostic. It means that you can program some parts of your application in a programming language and another part in another programming language simply because the communication tools don't rely on a specific language. So in this course, we will not go into all the external libraries that exist for many different robots. We will mostly focus on the ROS basics and core functionalities that will enable you to easily start any robot application powered by ROS using Python and C++. ROS is also open source with an active and growing community so you can directly see what's going on. You can get help share your project and even contribute if you wish to. All right. With this quick introduction, you should get some ideas about what is ROS when to use it and why it is useful. Don't panic, though, if you don't understand everything right now. The big picture behind ROS is pretty hard to get at the beginning, but after some practice you will start to get it. And I can guarantee you that you will quickly think that ROS is awesome.