WP2 Data Flow API and Implementation Improvement

Context: Because the current data flow communication primitives in RTT limit the reusability and potential implementations, Sylvan Joyeux proposed a new, but fairly compatible, design. It is intended that this new implementation can almost transparently replace the current code base. Additionally, this package extends the DataFlow transport to support out-of-band real-time communication using Xenomai IPC primitives.

Link : http://www.orocos.org/wiki/rtt/rtt-2.0/dataflow http://www.orocos.org/wiki/rtt/rtt-2.0/dataflow

Estimated work : 45 days for a demonstrable prototype.


2.1 Review and merge proposed code and improve/fix where necessary

Sylvain's code is clean and of high standards, however, it has not been unit tested yet and needs a second look.

Deliverable Title Form
2.1.1 Code reviewed and imported in RTT-2.0 branch Patch set
2.1.2 Unit tests for reading, writing, connecting and disconnecting in-process communication Patch set

2.2 Port CORBA type transport to new code base

Sylvain's code has initial CORBA support. The plan is to cooperate on the implementation and offer the same or better features as the current CORBA implementation does. Also the DataFlowInterface.idl will be cleaned up to reflect the new semantics.

Deliverable Title Form
2.2.1 CORBA enabled data flow between proxies and servers which uses the RTT type system merged on RTT-2.0 branch Patch set
2.3 Allow Real-Time data port access with CORBA Proxy

A disadvantage of the current data port is that ports connected over CORBA may cause stalls when reading or writing them. The Proxy or Server implementation should, if possible, do the communication in the background and not let the other component's task block.

Deliverable Title Form
2.3.1 Event driven network-thread allocated in Proxy code to receive and send data flow samples Patch set
2.4 Reduce footprint of data connections

The current lock-free data connections allocate memory for allowing access by 16 threads, even if only two threads connect. One solution is to let the allocated memory grow with the number of connections, such that no more memory is allocated than necessary.

Deliverable Title Form
2.4.1 Let lock-free data object and buffer memory grow proportional to connected ports Patch set
2.5 Out of band data flow review

It is often argued that CORBA is excellent for setting up and configuring services, but not for continuous data transmission. There are for example CORBA standards that only mediate setup interfaces but leave the data communication connections up to the implementation. This task looks at how ROS and other frameworks set up out-of band data flow and how such a client-server architecture can be added to RTT/CORBA.

Deliverable Title Form
2.5.1 Report on out of band implementations and similarities to RTT. Email on Orocos-dev
2.6 Create automatic marshalling of user types

Since the out-of-band communication will require objects to be transformed to a byte stream and back, a marshalling system must be in place. The idea is to let the user specify his data types as IDL structs (or equivalent) and to generate a toolkit from that definition. The toolkit will re-use the generated CORBA marshalling/demarshalling code to provide this service to the out-of-band communication channels.

Deliverable Title Form
2.6.1 Marshalling/demarshalling in toolkits Patch set
2.6.2 Tool to convert data specification into toolkit Executable
2.7 Create out-of-band data flow communication

The first communication mechanism to support is data flow. This will be demonstrated with a Xenomai RTPIPE implementation (or equivalent) which is setup between a network of components.

Deliverable Title Form
2.7.1 Real-time inter-process communication of data flow values on Xenomai Patch set
2.7.2 Unit test for setting up, connecting and validating Real-Time properties of data ports in RT IPC setting. Patch set
2.8 Update documentation and Examples

In compliance with modern programming art, the unit tests should always test and pass the implementation. Documentation and Examples are provided for the users and complement the unit tests.

Deliverable Title Form
2.8.1 Unit tests updated Patch set
2.8.2 rtt-examples, rtt-exercises updated Patch set
2.8.3 orocos-corba manual updated Patch set

2.9 Organize and Port OCL deployment, reporting and taskbrowsing

RTT 2.0 data ports will require a coordinated action from all OCL component maintainers to port and test the components to OCL 2.0 in order to use the new data ports. This work package is only concerned with the upgrading of the Deployment, Reporting and TaskBrowser components.

Deliverable Title Form
2.9.1 Deployment, Reporting and TaskBrowser updated Patch set