You have complete freedom to decide what components you use to assemble a robot. If choosing the ingredients of a robot looks more like a playground, the hard part comes when, in one way or another, all these elements have to communicate. But just making them communicate is not enough to make your robot move and make something useful. You have to control all the elements. You need a conductor to put the bits in the right place and hold the rhythm together. You need ROS.
In this post, I did a collection of more than 15 reasons why to use ROS. Below, I have explored from compatible tools to more insights such as its flexibility in controlling things.
Probably the best books to learn ROS
- The robots love Linux. ROS as well.
Most of the robots in the world (including here the robots built at home by hobbyists) are running Linux. So, this is the line where the ROS’s engineers focused their efforts.
ROS is not actually an operating system. Its name – Robot Operating System – creates confusion and misleading the user. But strictly speaking, it is a collection of software libraries and tools used by the roboticists to develop applications.
And because is not an operating system, ROS is running on a true operating system. ROS uses the OS’s processes management system, user interface, file system and programming utilities. The most used operating system is Linux, followed by Mac OS X and somewhat recently there are some steps forward to make it Windows compatible.
- Made for all
Do you want to control a robot by using a PS3 controller? Or to build a self-driving robot? ROS is the center of all these applications and not only.
The ROS has packages for a wide range of applications and hardware. From packages to create a map to localization system to machine vision and to gesture sensors.
Otherwise, if you don’t find what you need, you can develop and add to ROS your own package.
- Something may fail, but not everything
Every component of the robot is connected by a distributed message system. If one element crashes, your whole system doesn’t crash. This approach makes the system robust and able to perform its functions despite internal and external perturbations.
For example, if a sensor or an arm motor stop working, ROS manage the crash and makes things easier for the robot to continue doing things.
- Doesn’t matter if everything is different
The ROS message passing system is designed to work with different components and subsystems that probably running different programming languages.
This system makes things communicate in a more efficient way than APIs.
- Concurrent resource handling
Any large robotics application is a multithreading system. ROS has the ability to manage large multi-threaded systems. It simplifies the whole process by ensuring that your threads are publishing and subscribing to messages.
- Integration with open source projects
ROS can be integrated with other popular open-source projects. You want to simulate a robot, you use Gazebo.
Do you need the computer vision algorithms and utilities of OpenCV? ROS integrate the things and provides all of these.
The Point Cloud Library is a library focused on the manipulation and processing of three-dimensional data and depth images. You can use it also with ROS.
Do you want to use ROS in manufacturing automation and robotics? ROS-Industrial is another open-source project compatible ROS and designed to extend the advanced capabilities of ROS for industrial robots.
- Everything is modular
So, you need a system able to control the components of a robot from a PC. An ROS system is comprised of a number of independent nodes that communicates each other using messages.
To make you an idea what is a node and what is a message, think of a sensor’s driver as a node and sensor’s data as a stream of messages. The messages could be consumed by any other node from the system. These can feed filters, loggers, and applications such as pathfinding, position, etc. Moreover, the nodes in ROS can be on multiple computers and different architecture. You can have an Arduino that publishes messages, a Raspberry Pi as the subscriber and a smartphone for driving motors.
This approach of the modularity makes ROS really flexible and adaptable to any environment and the needs of the user.
- ROS is on Raspberry Pi
ROS is developed to run on different machines with different cores. The official Raspberry Pi operating system is a version of Debian, which is not supported by ROS. But there are other Raspberry Pi compatible Linux distro supported by ROS. These are: Fuerte, Groovy, Hydro, Indigo, and Kinetic.
- Sensors. A lot of sensors.
You need sensors, a lot of sensors, to build an intelligent robot. On ROS Wiki are several robotics sensors compatible ROS. Some of these sensors are supported by official ROS packages, but the majority of them are supported by the ROS community.
- LEGO EV3 just become more powerful with ROS
The LEGO Mindstorms EV3 robots just become much more powerful with ROS. The ROS framework runs on the EV3 Yocto Image.
- You use additional tools and libraries
On the Wiki is available a series of tools and libraries compatible with ROS. All of them makes your work easier while building, writing and running code on different computers.
- ROSComponents make things easier and simpler for the customers
Almost all the robots and components in the market support ROS, but it is difficult to fit the product with the right ROS version. The ROSComponents concept has the purpose to make things easier and simpler for customers. All these robots and components are well documented and you will know how to install and configure each of them.
- Maintained by many people
ROS is an open-source framework that takes all the advantages of a community knowledge. This openness makes it immensely successful among roboticists that build new products and services.
- ROS is the main core of a growing community
- The total line count is over 14 million lines of code
- There have been 2477 authors
- And 181509 commits
- Averaging 73.3 commits per author
These are just the most recent numbers of the growing community around ROS.
- You can use it with C++ and Python
C++ is faster than Python. At least for ROS. The main programming language is the general-purpose programming language C++. Otherwise, you are free to experiment with the ROS framework modern programming languages like Python and in a limited way with Java.
- ROS-Industrial was set up to provide key benefits for industry
Since 2007 when the framework was released, the ROS community has grown with at least two digits year after year. The growing popularity has brought various special interest groups for specific applications. One of these groups is the ROS-Industrial Consortium.
ROS-I is a software library based on ROS and designed to integrate the power and flexibility of ROS in the industrial area. It is a software library for industrial robot arms.
Because the interest to use ROS in the manufacturing field is quite high, ROS-I is supported by the largest robot arms manufacturers such as ABB and Yaskawa.
- Sell ROS robots without any licence fee
Each package in the ROS framework has a specific license and you can quickly identify if a specific package meets your licensing needs.
Otherwise, ROS has permissive licenses. All the code is open-source so anyone can modify or add new functionalities. ROS encourage you to put it in your product without any license fee.
- It is a really good software-based simulation
Think about you want to build a new mobile robot – maybe a lawnmower robot. You have the idea, but where do you start with the software? You have to detect obstacles, map the environment, plan paths and much more.
If you use ROS, you can take the advantage and use all these things that already exists in it.
Another advantage is the simulation of the robot. You can use an open-source robot simulation project called Gazebo to visualize your robot in its environment.
- Concurrency, inter-communication and extensibility
Even split second lag can result in a disaster for your robot. So you need an operate system capable for real-time processes.
ROS provides you with the architecture to achieve concurrency, inter-communication, and extensibility for robotics processes.