time delay

Check if a DataWriter is ready to write

Following on from my previous post re unreliable WiFi connections, I found that the problem was caused by calling DataWriter::write()too soon after creating the DataWriter.  Because write()is non-blocking it returned immediately without doing anything.  Also, because it is void, there is no error return code.

So the publishing app was not in fact sending anything, and I had no way of knowing.

It obviously needed more time to assemble its plumbing, so I put in a 2 second sleep, after which it worked.


The Robot Application Programming Interface Delegate (RAPID) is a set of software data structures and routines that simplify the process of communicating between multiple diverse robots and their command and control systems. RAPID is not intended to be an all-encompassing API for robot communication, but rather it’s a compatibility layer that permits tools and robotic assets to exchange data and information and allows operators to communicate with heterogeneous robots in a uniform way. RAPID is a compatibility layer that delegates information between robots that speak different languages.

The RAPID specification includes definitions and APIs for messages and services that support supervisory telerobotics operations over near-Earth time delay. RAPID is not a middleware specification, although safety and time-delay capabilities do imply requirements on implementing middleware systems. As currently implemented, the RAPID system can be considered a software reference implementation for remote operations.

For more information, contact David.S.Mittman@jpl.nasa.gov.


Subscribe to RSS - time delay