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