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

ROS, Robot Architecture and Complex task planning [closed]

asked 2013-05-03 03:03:21 -0500

Erwan R. gravatar image

updated 2014-01-28 17:16:25 -0500

ngrennan gravatar image

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.

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by Arkapravo
close date 2014-06-22 09:50:13.701133

1 Answer

Sort by ยป oldest newest most voted
6

answered 2013-05-05 06:50:14 -0500

updated 2013-05-13 06:47:42 -0500

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)

edit flag offensive delete link more

Comments

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 ..

Erwan R. gravatar image Erwan R.  ( 2013-05-13 06:03:14 -0500 )edit

... ROS is the most adapted to that task. (other people opinions are welcome :))

Erwan R. gravatar image Erwan R.  ( 2013-05-13 06:03:46 -0500 )edit

@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

Arkapravo gravatar image Arkapravo  ( 2013-05-13 06:51:23 -0500 )edit
1

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)

dornhege gravatar image dornhege  ( 2013-05-14 00:00:29 -0500 )edit
1

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 !

Erwan R. gravatar image Erwan R.  ( 2013-05-26 23:25:08 -0500 )edit

Question Tools

5 followers

Stats

Asked: 2013-05-03 03:03:21 -0500

Seen: 2,304 times

Last updated: May 13 '13