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.
Tasks:
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 |
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 |
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 |
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 |
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 |
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 |
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 |