0
$\begingroup$

Rosanswers logo

Hello,

I'm currently reading a lot on Robot Control Architectures (from classical Sense-Plan-Act, Brook's Subsumption to Layered Hybrid Architectures - CLARAty, Atlantis, heterogeneous LAAS architecture, etc. and UTC ACT-R, SOAR) and I have two related questions.

1/ First, I'm wondering where and/or how ROS would integrate in these architectures principles. On one hand, some people quote it as a component-based framework providing functionalities. In a 3-Layer architecture, it would be the Functional Layer, that implements low-level drivers and controllers, essentials algorithms (SLAM, Motion Control). But on the other hand, ROS also contains/provides planning, decision-making algorithms, that can be seen as Deliberative Layer capabilities (Motion and Path planning are example for "low-level" planning, but as "planning", I would qualify them as Deliberative). Is ROS only a framework that provide functionalities, or does it allows to control the usage of these functionalities ?

2 / This leads to my second question : if ROS (would theoretically) allows for functionality control, are there existing packages/stacks (I'm still working with fuerte) that allow this control ? Something like a task planner, that would be able to take a goal and find the relevant sequence of sub-goals to be accomplished and the corresponding functionalities (nodes ?) that must be called for that ? Or does this high-level planning need a meta-framework able to launch and shutdown the relevant functionalities ? Is ROS designed for that ?

I don't think this (these) question(s) as only technical and to have a definitive answer but more philosophical and that's why opinions from main ROS team and/or roboticists / AI experts are welcome. I posted this question here as there are many experts that already probably thought about it. If this question is not relevant with the intented goal of ros.org, please tell me where it could be more adapted to post.

Thanks for reading and waiting for your point of view.


Originally posted by Erwan R. on ROS Answers with karma: 697 on 2013-05-03

Post score: 7

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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)


Originally posted by Arkapravo with karma: 1108 on 2013-05-05

This answer was ACCEPTED on the original site

Post score: 6


Original comments

Comment by Erwan R. on 2013-05-13:
Thanks for your answer, and sorry for the late answer. It shows me what ROS is in its principles and it structure. According to that, ROS, in its current shape, would still be the "functional level" of a robot architecture, in my opinion. Even if a decisional layer could be designed, i'm not sure ..

Comment by Erwan R. on 2013-05-13:
... ROS is the most adapted to that task. (other people opinions are welcome :))

Comment by Arkapravo on 2013-05-13:
@Erwan R. I am not sure about the layering approach (should be possible though), I have added an UPDATE to confirm with the applicability of ROS to various robotic systems

Comment by dornhege on 2013-05-14:
Such functionality as decision making would be put on top of ROS with the ecosystem using ROS messages/services, etc. Task planning has been used in ROS by some people, e.g. http://ros.org/wiki/symbolic_planning?distro=fuerte (Disclaimer: these are our packages)

Comment by Erwan R. on 2013-05-26:
Thanks for your answer Domhege, That package looks to be exactly the kind I was looking for and I'm going have a look at this. I delayed that because of a problem with PR2 and Gazebo (you may have seen my other post there), but for sure I'll try it !

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.