Framework Comparison » History » Version 28

« Previous - Version 28/38 (diff) - Next » - Current version
J. Moringen, 06/15/2011 02:31 PM
fixed table headers


Framework Comparison

Scope

Please note: We are comparing RSB against roscore (or even ros_comm?) not against ROS!
and YARP_OS?

Functional Differences

Aspect ROS YARP XCF/AM RSB
Pub/sub Topology 1:1 m:n 1:n, m:n over AM m:n
Abstraction single level single level single level hierarchies
Channel Identifier Topic none? name or URI Scope
Channel Scope Flat Flat Flat Hierarchical
Origin Filtering ? no? not required for 1:n planned
Content Filtering ? no yes (via XPath) via extension, e.g., XPath
Typing static,strong dynamic none strong-ish
IDL yes, proprietary no no optional, standardized
QoS implicit limited support, mixed with flow-control limited, local queuing explicit
Introspection strong nameserver, port admin protocol limited implicit by multicast
Centralized yes (master, param server) yes (nameserver), direct connect. poss. yes, dispatcher no
Event meta-data client level ? yes yes

Communication Patterns

Aspect ROS YARP XCF/AM RSB
Pub-Sub yes yes yes yes
.. Push-receiver yes ? yes yes
.. Pull-receiver ? ? yes yes
Client-Server yes yes yes yes

RPC Features

Aspect ROS YARP XCF/AM RSB
Asynchronous RPC ? ? ? yes
Parallel Pipelining ? ? ? yes
Dynamic Typing kind-of (schema in header) yes yes no (for Protocol Buffers)
Connection pooling manually configurable ? ? no pooling, but reuse
Delayed return ? ? ? no
Event-driven I/O ? ? ? no (one thread per connection)

Criteria are based on http://msgpack.org/, explanations here .

Non-functional Properties

  • Architecture
  • Dependencies

Openness

Aspect ROS YARP XCF RSB
Lock-in strong ? ? ?
Use of standards/terminology partial almost none XML, XPath partial
Protocol Specification yes, inaccurate yes, inaccurate no(?) yes, uses IDL
Source Code Documentation ? ? partial client-level nearly complete
Project Layout/Source code organization monolithic confusing confusing at least, we have a plan...

Programming Language Support

Language ROS YARP XCF RSB
C ? partial? no no
C++ impl impl impl impl
Java impl? ? impl impl
Python impl ? binding impl
Common Lisp impl ? binding impl
Ruby ? ? no no

Operating System Support

Wishes

  • We believe in the power of reflection and self-description, such that
    • a generic content-based subscription model, e.g., with path-based access such as XPath becomes feasible
    • messages can be generally understood by everyone even if parts are not accessible
  • RSB shall provide better introspection features, both for programmatic access (e.g., for anomaly detection) but also for developers
  • Reduced framework lock-in