On Mon, Jan 28, 2013 at 11:51 AM, Herman Bruyninckx <Herman.Bruyninckx@mech.kuleuven.be> wrote:
On Mon, 28 Jan 2013, Jonathan Bohren wrote:

Based on this thread, and from what I know about other efforts going on in the
community, I just went ahead and created a google group called "ros-robot-control-sig"
[1].
My thought is that purpose of this group should be to coordinate efforts on a common
interface for robot control in a ROS-based system as well as a common realtime-friendly
and simulation-friendly controller architecture. While different platforms will always
call for different architectures, it would be great if the different systems spoke the
same ROS interfaces, and if similar computation platforms could use the same libraries
for control.

Allow me to disagree... Putting the design of interfaces (and "topic" data
structures) at the level of a programming language as the most important
design decision is wrong: robotics is one of the few technology domains
(together with computer vision and machine learning) where software and
systems are made 100% by compilers and hand-written libraries; other
domains (automative, aerospace, mechatronics and control,...) start with
standardizing _models_ (and their semantics), and _generate_ code from
there.

No, I agree entirely. I should have been more clear. When I refer to ROS interfaces, I mean the interfaces that we can use to connect the operation of these controllers to higher-level execution systems. In my experience, moving to something more model-based and _not_ heavily multithreaded is definitely the way to go.
 
What I now see happening all the time (and especially in the context of
so-called "hackathons") is that developers _have_ to look at each others'
implementations in order to make components/nodes work together, since the
_meaning_ of the topics is not ambiguously defined. (Similar problems occur
at the level of the "actions": too many configuration parameters are in the
"code" and not in the "model".)
 
And finally, the data topics on their own never fully represent an
_interface_ between two concurrent activities: there just represent functional
data flow, but also discrete coordination, bi-lateral QoS
adaptations, introspection, and data buffering policies are parts of the
interaction between components.

I agree, semantic information about the data is _critical_.

-j
 
--
Jonathan Bohren
PhD Student
Dynamical Systems and Control Laboratory
Laboratory for Computational Sensing and Robotics
The Johns Hopkins University

(707) 520-4736
jbo@jhu.edu