Why ROS?
The main idea of ROS, as repetitively mentioned by their inventors and core developers, is to avoid reinventing the wheels in robotics. This is achieved by providing a platform in which various robotic algorithms are reusable in a modular manner. In this way, one can reuse a code developed by others and focus more on the novel contribution to be developed. In a free, open-source environment, this can be conveniently achieved.
ROS has been growing as the most widely used robot middleware. There are several characteristics of ROS, including the following:
- It is a free, open-source platform.
- It is modular which enables reusability of codes/algorithms.
- It can be built and working on Linux, Mac, and recently Windows. In spite of this claim, ROS is more mature and provides the most of its capabilities when it is used on Linux Ubuntu. For this reason, quite many people use a virtual machine to install Linux Ubuntu when they use Windows.
- It is language-agnostic. This means that a code can be developed on ROS by using several programming languages. But, the main languages used are C++ and Python.
- It provides several tools for the convenience of development, such as rqt_graph, rqt_plot, rqt_gui, RViz, and Gazebo simulator.
- It has an active and growing community. Thousands of packages have been developed by the community in various aspects of robotics, such as localization, SLAM, navigation, perception, etc. All of these packages are available for reusability as free, open-source software (FOSS).
Despite some advantageous characteristics of ROS mentioned above, some people express some concerns on ROS, such as:
- Steep learning curve. For this reasons, some people offer some educational platforms to learn and practice ROS, such as The Construct.
- Some concerns in ROS1, including realtimeness/latency, security, reliability for a distributed system, suitability for bare-metal micro-controller, and compatibility with Windows (although ROS1 is compatible with Windows since Melodic distro). These concerns have been addressed in ROS2.