You already know some programming and how to use a terminal, and you want to get into robotics. Or you are making the specs for an entire new robotics project. And… You don't know if you should use ROS or not.
ROS, which means Robot Operating System, is a set of software libraries and tools to help you build robot applications. The point of ROS is to create a robotics standard, so you don't need to reinvent the wheel anymore when building a new robotic software.
So, why should you use ROS for robotics ?
1. ROS is general
The same base code and knowledge can be applied to many different kinds of robots : robotic arms, drones, mobile bases, … Once you've learned about how communication is done between all the nodes of the program, you can setup new parts of an application very easily. In the future, if you need to switch to a totally different robotics projects, you won't be lost.
You'll be able to reuse what you know and some parts that you've built, so you'll never really start from scratch again.
2. ROS packages for everything
You need to compute a trajectory for your robot ? There is a package for that. Use your joystick to control the robot ? There is also a package for that. Or you want to map out a room with a drone ? There are many packages to do that.
Well, if you search a little bit, you'll find many, many ROS packages for almost any robotic application.
3. ROS is language-agnostic
You can easily communicate between a Python node and a C++ node. It means a lot of reusability and possibilities of coworking. Many libraries also allow you to use other languages (because ROS has mainly targeted C++ and Python).
You can also get a websocket server running on your robot (rosbridge_suite) or an HTTP server, and thus use any language to communicate with it.
4. ROS has great simulation tools
You can't always get your robot running for real, so you need simulation tools. ROS has many great tools, such as Rviz and Gazebo. With Gazebo you can even add some physical constraints to the environment, so when you run the simulation and the real robot, the outcome is pretty much the same. Imagine mapping a room in 3D with a drone directly on your computer, that could save you a huge amount of time.
The simulation tools also allow you to see and use other robots that you don't possess, for educational purposes or to test in a specific environment.
5. You can control multiple robots with ROS
ROS can work with multiple ROS masters. It means that you can have many independent robots, each with its own ROS system, and all robots can communicate between each other.
6. ROS is light
The core base of ROS doesn't take much space and resources. You can quickly install the core packages and get started in a few minutes. Plus, you can also use ROS on embedded computers, such as Raspberry Pi 3 boards. Thus you can easily start a new project without much trouble.
7. More and more compatible ROS products
When you build a robot, you don't necessarily want to reinvent or recreate every part of it. You might want to focus on some development points, and integrate the rest from other manufacturers. The good news here is you can find many robotics products – such as grippers, controller boards, … – that already have a ROS package. So, in addition to the physical tool, the software that goes with it is directly compatible with your ROS system.
8. ROS is an open source project with a permissive license
One of the greatest strength of ROS is that it's open source. Most of the core packages are released under a BSD license. A BSD license allows you to modify and use the code for commercial purposes, without having to release your code with an open source license. This can be a good point when a company decides to integrate an open source software. But, hey, don't forget about the open source spirit 🙂
A bright future for ROS
ROS was created in 2007, and has now a huge and still growing user base. More and more packages are being developed.
Also, a new version of ROS is about to be released : ROS 2 ! ROS 2 is a completely rewritten software, and has many advantages over ROS 1 : multi platform support, embedded systems support, real-time execution, better resource handling, …
ROS is definitely worth it. If you want to get into robotics, you should learn and use ROS. This will teach you so many things about robotics, and you'll save a huge amount of time not trying to reinvent the wheel for each new project.
If you want to see an example of a robot powered by ROS for free, check out Niryo One ROS stack github repository on github. You can easily install the Niryo One packages and get a simulation running in 5 minutes !