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

Nikolaus Demmel ros.discourse at gmail.com
Tue Feb 14 23:42:28 UTC 2017

[quote="wjwwood, post:2, topic:1316"]
For ROS 2, we've been discussion how we might do this in order to determine if there are any features missing in ROS 1's communication system that would prevent us from doing so, but we've stopped short of writing this down in a white paper like document or prototyping it. The basic idea is to make it possible to control behavior of each node in the synchronous graph through a polling mechanism, and then use that polling (or pumping) mechanism to implement a supervisor who "fires" each node in sequence. Then the fact that the asynchronous comms is being used between the nodes is unimportant.

This is actually something I wished was possible many times, but for a different reason than debugging as OP. For us this was mostly about processing pipelines such as might be moddeled with e.g. ecto, for which we nevertheless prefer having multiple ROS nodes (for example in order to use the ROS tools to introspect also the intermediate results, compose the individual parts of the pipelines in different ways, etc...). Now for live operation on a robot that is fine. However when developing or testing, there is often the desire to run a recorded dataset through the pipeline as fast as possible and in a deterministic way. Doing this with a node graph and rosbag play is difficult. Playing back the bag file too fast might result in overflowing queues and playing it back to slowly you don't crunch the numbers as fast as you could. Also, different optimal rates might apply for different parts of the sequence.

What we have done in the past is writing separate wrappers that use the bag API to run through the dataset one by one and invoke the algorithms in a deterministic pipeline (like e.g. ecto does AFAICT). However you loose composability and writing such wrapper is very tedious work.

So being able to operate in ROS graph in the kind of pulling / pumping mechanism that you mention would address this exactly AFAICT.

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

More information about the ros-users mailing list