New Gazebo plugin for ROS control to simulate control packet latency: robot_hw_sim_latency

Dear ROS Community,

The popular robotic simulator, Gazebo seems to lack the feature of simulating the effects of control latency that would make it a fully-fledged cyber-physical system (CPS) simulator.
The CPS that we address to measure is a robotic arm (UR5) controlled remotely with velocity commands. The main goal is to measure Quality of Control (QoC) related KPIs during various network conditions in a simulated environment.

We implemented a Gazebo plugin <https://github.com/Ericsson/robot_hw_sim_latency> to make the above measurement feasible by making Gazebo capable to delay internal control and status messages and also to interface with external network simulators to derive even more advanced network effects.
Our preliminary evaluation shows that there is certainly an effect on the behavior of the robotic arm with the introduced network latency in line with our expectations, but more detailed further study is needed.

State-of-the-art:

Authors of http://cpham.perso.univ-pau.fr/WSN-MODEL/castalia-ros.html describe some early experiments in linking the OMNET++ simulation framework with the ROS middleware for interacting with robot simulators in order to get within the OMNET++ simulation a robot’s position which is accurately simulated by an external simulator based on ROS. The motivation is to use well-tested and realistic robot simulators for handling all the robot navigation tasks (obstacle avoidance, navigation towards goals, velocity, etc.) and to only get the robot’s position in OMNET++ for interacting with the deployed sensors.
Our goal is the other way around, thus to introduce the effects of the network simulator into the robot simulator.

The roadmap of Gazebo development shows that version 9.0 arriving at 2018-01-25 will have support to integrate network simulation (ns-3 or EMANE). Further information if this feature will be like \citep{omnetros} or the one we propose in this paper is not available yet.

Known issues and open questions:

  • Do you know how the above feature of Gazebo 9 relates to this plugin?
  • Do you see any major implementation shortcoming of the plugin that should be done in a completely other way?
  • With the 10 msec latency setup, the robot arm begins to vibrate. Do you know what causes this artifact and how can we eliminate it?

Thanks for any feedback!
BR,
Geza