page_title: Robot Operating System
section_title: Philosophy
hierarchical_section_title: Robot Operating System / Design / Philosophy
caption_attribution_description: English: The equation of what makes ROS: The underlying plumbing and structure + tools + capabilities + ecosystem.
context_page_description: Robot Operating System is robotics middleware. Although ROS is not an operating system, it provides services designed for a heterogeneous computer cluster such as hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, and package management. Running sets of ROS-based processes are represented in a graph architecture where processing takes place in nodes that may receive, post and multiplex sensor data, control, state, planning, actuator, and other messages. Despite the importance of reactivity and low latency in robot control, ROS itself is not a real-time OS. It is possible, however, to integrate ROS with real-time code. The lack of support for real-time systems has been addressed in the creation of ROS 2.0, a major revision of the ROS API which will take advantage of modern libraries and technologies for core ROS functionality and add support for real-time code and embedded hardware.
  Software in the ROS Ecosystem can be separated into three groups:
  language-and platform-independent tools used for building and distributing ROS-based software;
context_section_description: ROS was designed with open-source in mind, intending that users would be able to choose the configuration of tools and libraries which interacted with the core of ROS so that users could shift their software stacks to fit their robot and application area. As such, there is very little which is actually core to ROS, beyond the general structure within which programs must exist and communicate. In one sense, ROS is the underlying plumbing behind nodes and message passing.  However, in reality, ROS is that plumbing, a rich and mature set of tools, a wide-ranging set of robot-agnostic capabilities provided by packages, and a greater ecosystem of additions to ROS.
caption: An image depicting the ROS equation: Plumbing + Tools + Capabilities + Ecosystem = ROS!
exif: {}