« Previous -
Version 18/38
(diff) -
Next » -
Current version
J. Moringen, 06/12/2011 07:19 PM
some non-functional properties
ROS 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 |
RSB |
Pub/sub Topology |
1:1 |
m:n |
m:n |
Abstraction |
single level |
single level |
hierarchies |
Channel Identifier |
Topic |
Scope |
|
Channel Scope |
Flat |
Scope |
Hierarchical |
Origin Filtering |
? |
Scope |
planned |
Typing |
strong |
Scope |
strong-ish |
IDL |
yes, proprietary |
Scope |
optional |
QoS |
implicit |
Scope |
explicit |
Introspection |
strong |
Scope |
implicit by multicast |
Centralized |
yes (master, param server) |
Scope |
no |
Communication Patterns¶
Aspect |
ROS |
YARP |
RSB |
|
Push-receiver |
yes |
? |
yes |
Pull-receiver |
? |
? |
yes |
RPC Features¶
Aspect |
ROS |
YARP |
RSB |
|
Asynchronous RPC |
? |
? |
yes |
|
Parallel Pipelining |
? |
? |
yes |
|
Dynamic Typing |
kind-of (schema in header) |
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/
Non-functional Properties¶
Openness¶
Aspect |
ROS |
YARP |
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 |
RSB |
|
C |
? |
partial? |
no |
C++ |
yes |
yes |
yes |
Java |
yes |
? |
yes |
Python |
yes |
? |
yes |
Common Lisp |
yes |
? |
yes |
Ruby |
? |
? |
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