Guaranteed message delivery
Hello,
It seems ROS makes no guarantee of message delivery. I know some can be lost at the beginning (nodes haven't fully started up) but of course they can also be dropped later. It is the dropping messages later that I am concerned about.
I have seen rosbags suggested at the way to get guaranteed message delivery (maybe minus the node start up situation, which I'm not worried about). It seems they are used for capturing/replaying messages and are not thread-safe.
Has anyone used them for receiving messages in real-time? Is there another way to go?
I know queue sizes/publishing rates are adjustable and this can minimize loss, but there are certain messages I can't afford to drop, even occassionally. And I am losing some.
Thanks.
What is your application? There might be ROS ways to do that other than messages via TCP/IP.
Right now I am using the messages to pass sensor data collected from certain nodes to other nodes. It is very important that I don't miss data. All the nodes are running on a single physical machine.
Is this high-frequency high-bandwidth data? If not wrapping this into a service might work although it is inconvenitent. I believe originally the sequence id was ment to serve that purpose, but is not used. You could still emulate that manually.