ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Now ! I would guess that you have Arkin's book by your bedside ! :-) In trying to answer your queries, I will quote Brian from http://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/;

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. ros.org 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).

This in hindsight should explain both of your questions.

Last year I had written a 4 part series for an Indian magazine (for the typical ROS newbie) which probed into such questions, you can have a look at them here ==> http://mobotica.blogspot.in/p/ros.html (scroll down to the end of the page for the links)

Now ! I would guess that you have Arkin's book by your bedside ! :-) In trying to answer your queries, I will quote Brian from http://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/;

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. ros.org 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).

This in hindsight should explain both of your questions.

Last year I had written a 4 part series for an Indian magazine (for the typical ROS newbie) which probed into such questions, may help your cause, you can have a look at them here ==> http://mobotica.blogspot.in/p/ros.html (scroll down to the end of the page for the links)

Now ! I would guess that you have Arkin's book by your bedside ! :-) In trying to answer your queries, I will quote Brian from http://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/;

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. ros.org 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).

This in hindsight should explain both of your questions. However, this is an open question and may have other opinions etc.

You can also have a look at the ICRA 2009, ROS paper, http://ai.stanford.edu/~mquigley/papers/icra2009-ros.pdf.

Last year I had written a 4 part series for an Indian magazine (for the typical ROS newbie) which may help your cause, you can have a look at them here ==> http://mobotica.blogspot.in/p/ros.html (scroll down to the end of the page for the links)

Now ! I would guess that you have Arkin's book by your bedside ! :-)

In trying to answer your queries, I will quote Brian from http://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/;

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. ros.org 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).

This in In hindsight this should explain both of your questions. However, this is an open question and query and there may have be other opinions etc.

You can also have a look at the ICRA 2009, ROS paper, http://ai.stanford.edu/~mquigley/papers/icra2009-ros.pdf.

Last year I had written a 4 part series for an Indian magazine (for the typical ROS newbie) which may help your cause, you can have a look at them here ==> http://mobotica.blogspot.in/p/ros.html (scroll down to the end of the page for the links)

Now ! I would guess that you have Arkin's book by your bedside ! :-)

In trying to answer your queries, I will quote Brian from http://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/;

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. ros.org 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).

In hindsight this should explain both of your questions. However, this is an open query and there may be other opinions etc.

You can also have a look at the ICRA 2009, ROS paper, http://ai.stanford.edu/~mquigley/papers/icra2009-ros.pdf.

Last year I had written a 4 part series for an Indian magazine (for the typical ROS newbie) which may help your cause, you can have a look at them here ==> http://mobotica.blogspot.in/p/ros.html (scroll down to the end of the page for the links)

UPDATE : AFAIK, ROS is well suited for development of nearly most of the well known robotic systems saving multirobot and swarm systems (there is significant work going on in the ROS community on this topic)