Framework Comparison » History » Version 22

« Previous - Version 22/38 (diff) - Next » - Current version
J. Moringen, 06/12/2011 07:37 PM


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 RSB
Pub/sub Topology 1:1 m:n ? m:n
Abstraction single level single level ? hierarchies
Channel Identifier Topic none? ? Scope
Channel Scope Flat Flat ? Hierarchical
Origin Filtering ? no? ? planned
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 RSB
Pub-Sub yes yes yes yes
.. Push-receiver yes ? ? yes
.. Pull-receiver ? ? ? yes
Client-Server yes yes yes yes

RPC Features

Aspect ROS YARP XCF 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 ? partial
Protocol Specification yes, inaccurate yes, inaccurate ? yes, uses IDL
Source Code Documentation ? ? ? ?
Project Layout/Source code organization monolithic confusing ? ?

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

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