Hello everyone! 

 

We have launched a project to modify the ROS c++ core (both Hydro and Indigo) to use OMG's DDS (Data Distribution Service for Real-time Systems) as its transportation layer. This project is named micROS RT, in which RT is short for real-time. An early result of our work can be found at the bottom of this mail. This is a prototype without comprehensive testing and just for evaluation and feedback collection. 

 

The main features of our work include: 

(1) Using DDS to deliver ROS messages, instead of the built-in message channel in ROS. DDS is a mature middleware standard which "aims to enable standard which scalable, real-time, dependable, high-performance and interoperable data exchanges between publishers and subscribers". 

(2) Existing ROS applications (as well as the existing ROS programming paradigm) need no modification. In other words, our modification to the ROS core is transparent to the upper-layer applications. All you have to do is to replace the libroscpp.so in the ROS installation directory. 

(3) Providing QoS assurance in the message delivery process (coming soon). You can set QoS parameters when advertising a topic using the API we added, for example, transport priority, latency budget, delivery reliability, etc. 

(4) Interoperable with the official ROS core (both C++ and Python-based). In virtue of the built-in protocol negotiation mechanism in ROS, our implementation is interoperable with the official ROS core. 

 

Feature 3 is not supported yet in this version. It will come in the next two or three weeks. We are testing. 

 

Installation guides: 

(1) Installing OpenSplice DDS 6.4 community version £¨http://www.prismtech.com/opensplice/opensplice-dds-community). 

(2) Please ensure that the DDS environment variables have been set correctly. Usually, you can achieve this goal by simply running "source %DDSInstallationPath%/release.com". 

(3) Replace the libroscpp.so in the ROS directory with the file at the bottom downloaded from the link at the bottom of this mail. 

After that, all ROS messages will be switched to the DDS channel instead of the built-in message channel (i.e. the TCPROS protocol) in ROS. 

When you ROS application starts, you can see a prompt ¡°[DDSListener] Ready¡­¡± in the console to tell you the DDS has been successfully started  (only on the subscriber side). 

 

Frequently asked Questions: 

(1)  What is DDS? Why DDS? 

DDS is short for "Data Distribution Service for Real-time Systems". It is an Object Management Group's standard for publish/subscribe middleware standard. It supports high-performance, scalable and QoS-assuring message delivery. It has been applied into many industry-level systems. 

Regarding the question of "Why DDS", we refer you to a related article (http://design.ros2.org/articles/ros_on_dds.html) discussing the design of ROS 2.0, the planned next generation of ROS. The reason for us to launch this project is very simple, i.e., we need QoS features in ROS message delivery processes and we cannot wait ROS 2.0. 

(2) Can this modified ROS core and the official ROS core co-exist in a distributed robot system? 

Yes. MicROS RT will automatically select the transport protocol. If the remote ROS node is using an official core without DDS support, it will smartly changes to the built-in ROS message channel. However, obviously, the QoS-assurance in message delivery cannot be supported in this case. 

(3) Can I specify the preferred transport protocol in my program? 

Yes, you can choose the preferred transport protocol (TCPROS, UDPROS or DDS) by using the ros::TransportHints API. Before we release the source code and the manual, you can contact us for more details. 

(4) Will you provide the source code? 

Yes, we will open the source code in the several weeks. The prototype we released now is just for collecting feedback. 

(5) Who are you? 

We are the micROS team, an non-profit academic group which consists of researchers, teachers and students from China. We focus on the robot software research and practice and hope to contribute to the ROS community. Any suggestion, feedback or bug reports can send to bding@msn.com Thanks! 

 

micROS RT 0.14beta, based on ROS Indigo, 64bit binary distribution (compiled on Ubuntu 14.04LTS 64bit) 

https://onedrive.live.com/redir?resid=1639AB4151BFD7D6!2267&authkey=!ANeW-e3Rv9qbYds&ithint=file%2cso

micROS RT 0.14beta, based on ROS Hydro, 64bit binary distribution (compiled on Ubuntu 12.04LTS 64bit) 

coming soon... 

micROS RT 0.14beta, source code 

coming soon...