[ros-users] [Discourse.ros.org] Deterministic replay and debugging

janismac ros.discourse at gmail.com
Mon Feb 13 23:35:49 UTC 2017




I need to build a ROS system that can log its inputs and node communication such that all calculations can be reproduced **exactly** during analysis later. The system needs to have two modes:

### Operation

* The system is in control of the physical robot
* All sensor data is recorded
* Sufficient data about the timing and data dependencies between the nodes is recorded.

### Analysis

* The system is not connected to the physical robot
* The recorded sensor data is replayed to the system
* The relative timings and data dependencies between the nodes are preserved. This means other nodes may have to idle if one node is paused in a debugger.

For example there may be a system with this topology `A --[/x]--> B --[/y]--> C` where `A,B,C` are nodes and `x,y` are topics. All three nodes are implemented with a polling loop (using `ros::Rate` and `ros::spinOnce`).

During analysis the node B is stopped in a debugger. Now A needs to pause because otherwise the topic queue x would overflow and messages would be dropped that were not dropped during operation. Same with C: It needs to pause because it is not getting the messages from B that it did get during operation.

This seems like a standard problem, yet I cannot find anything in the ROS ecosystem that addresses this.

I have some ideas for developing this myself, but I'd rather use an existing solution.

rosbag appears to be unsuitable: [The limitations of rosbag record/play](http://wiki.ros.org/ROS/Tutorials/Recording%20and%20playing%20back%20data#rosbag.2BAC8-Tutorials.2BAC8-Recording_and_playing_back_data.The_limitations_of_rosbag_record.2BAC8-play)






-- 
[Visit Topic](https://discourse.ros.org/t/deterministic-replay-and-debugging/1316/1) or reply to this email to respond.




More information about the ros-users mailing list