ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A
Ask Your Question

What is ROS exactly? Middleware, Framework, Operating System?

asked 2011-12-05 18:10:52 -0500

Mimax gravatar image

updated 2014-01-28 17:10:56 -0500

ngrennan gravatar image

Recently I had a discussion with a co-worker about the definition of ROS and what it actually is.

I’m not sure and that’s why I’m posting this question. I’ve seen different definitions. Middleware, Framework, Operating System. But what is the best fitting definition? If there is any!

In my opinion, I see ROS as a mixture:

The high level and service oriented communication concept could be defined as a middleware, whereas the core libraries rather do have framework functionality. And about the term OS - as it does not match the classical definition of a operating system, I’d prepend “Meta” and regard it as a “Meta-Operating System”.

Any thoughts on this?

edit retag flag offensive close merge delete


@Mimax : I agree to what you say, however in day to day discussions 'middleware' is probably the most common term used to express ROS like platforms.
Arkapravo gravatar imageArkapravo ( 2011-12-06 05:36:31 -0500 )edit

2 Answers

Sort by » oldest newest most voted

answered 2011-12-06 01:19:04 -0500

Brian Gerkey gravatar image

I usually explain ROS in the following way:

ROS = plumbing + tools + capabilities + ecosystem
  1. plumbing: ROS provides publish-subscribe messaging infrastructure designed to support the quick and easy construction of distributed computing systems.

  2. tools: ROS provides an extensive set of tools for configuring, starting, introspecting, debugging, visualizing, logging, testing, and stopping distributed computing systems.

  3. capabilities: ROS provides a broad collection of libraries that implement useful robot functionality, with a focus on mobility, manipulation, and perception.

  4. ecosystem: ROS is supported and improved by a large community, with a strong focus on integration and documentation. is a one-stop-shop for finding and learning about the thousands of ROS packages that are available from developers around the world.

In the early days, the plumbing, tools, and capabilities were tightly coupled, which has both advantages and disadvantages. On the one hand, by making strong assumptions about how a particular component will be used, developers are able to quickly and easily build and test complex integrated systems. On the other hand, users are given an "all or nothing" choice: to use an interesting ROS component, you pretty much had to jump in to using all of ROS.

Four years in, the core system has matured considerably, and we're hard at work refactoring code to separate plumbing from tools from capabilities, so that each may be used in isolation. In particular, we're aiming for important libraries that were developed within ROS to become available to non-ROS users in a minimal-dependency fashion (as has already happened with OMPL and PCL).

edit flag offensive delete link more


Thanks for that insight. I think you're explanation goes along with the way I see ROS. For me the key words that characterize ROS are Middleware+Framework+Open source. Do you agree? How is your definition or let’s say opinion about a definition ;) in terms of what we have been talking about above?
Mimax gravatar imageMimax ( 2011-12-07 00:40:19 -0500 )edit

answered 2011-12-05 19:03:40 -0500

roehling gravatar image

updated 2011-12-05 19:10:22 -0500

ROS is indeed called a meta-operating system (see ROS/Introduction). ROS shares characteristics with some middleware systems (marshalling and loose coupling by message passing) and frameworks (message callbacks, tons of utility classes), but it also has OS-like features (hardware abstraction, package management, developer toolchain).

Compared to most other middleware systems and frameworks for robots, ROS imposes little policy on the developer, both in terms of API and license issues. The learning curve is not too steep, and most legacy code is quite easily ported once you understood the ROS basics. In my opinion, this is the reason for its success.

edit flag offensive delete link more


Thanks for you answer. And what would be your definition in one sentence? Meta OS combining framework and middleware functionality?
Mimax gravatar imageMimax ( 2011-12-06 17:58:51 -0500 )edit
I'd stick with the "official" Wiki version: ROS is a meta-operating system for your robot. To be honest, most of the time I call it a "framework", because that's the part that has the most impact on my business life. I would not start a holy war about it ;-)
roehling gravatar imageroehling ( 2011-12-06 20:13:45 -0500 )edit
Haha ;) i'll definetly won't do that. I just want to have good and easy definition ;)
Mimax gravatar imageMimax ( 2011-12-07 01:00:56 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2011-12-05 18:10:52 -0500

Seen: 9,984 times

Last updated: Dec 06 '11