Robotics Equipment Corporation DeutschEnglish


Online API documentation


The Robotics Equipment Corporation (REC) remote procedure call (RPC) library is a system for inter-process communication. Processes (clients) connect to a server over network (TCP). Data is exchanged via network, local sockets or shared memory.

The server defines topics all participants can publish data to. If a participant subscribes to a topic it is informed whenever the topic data changes. It has to be outlined that on subscribtion it is informed about the current topic data which is stored by the server.

The server also defines RPC methods. These methods can be called by the clients in a blocking or non-blocking way to execute the accordant function in the server. The clients get informed about the result.


Why a new RPC library?

The reason for writing this libary is simple. No other library out there fit our needs. Our main concern was (and still is) to interface a ROS system running on a Linux system with a Qt based GUI running on Windows. Our first try was to port ROS to Windows. This failed because we found out that the network connection established by ROS is not robust against disturbances as seen with wireless networks. Furthermore ROS connects via multiple ports which conflicts with the restricted networks found in industrial environments. The very good communication framework ICE could not be used due to restrictive (and expensive) licensing issues. In the end we found us writing this library, which has the following advantaches:

  • Network connection via a single port.
  • Robust against network disturbance.
  • Integrates perfectly into Qt applications.
  • Uses local sockets and shared memory when client and server live on the same machine.

Simple client/server examples

The simple client/server example shows the basic usage of this library.

ROS interface

We stripped down one of our current projects to show a real world example of how to interface a ROS system to a (Windows) Qt GUI.

The GUI lets you

  • Enter the IP address of the ROS system to connect to
  • Set the pose estimate through /initialpose (geometry_msgs::PoseWithCovarianceStamped)
  • Set the robots goal /move_base_simple/goal (geometry_msgs::PoseStamped)
  • Teleoperate the robot by setting cmd_vel
  • See the current map /map, the robots position /odom and the measurements of a rangefinder /scan
  • See messages going to rousout_agg
Robotics Equipment Corporation GmbH ·