Open peci1 opened 2 years ago
This pull request has been mentioned on ROS Discourse. There might be relevant details there:
https://discourse.ros.org/t/add-heartbeat-message-type/24162/27
Thank you for the review, Tully. I'll try to make a set of packages utilizing this concept and report back here when it is done.
The approach I used to correlate the heartbeats to the parallel stream was by using a naming convention - I appended /heartbeat
to the name of the parallel topic. So we e.g. have os_cloud_node/points
with pointclouds and os_cloud_node/points/heartbeat
with their heartbeat. I think this follows the same logic as e.g. camera_info
.
Thanks a set of packages with a prototype would be great.
Yeah, that sort of naming convention makes sense generally. That should be documented clearly so people understand it. And it might be good to play out some of the cases that might be a problem, such as remapping, muxing, recording and playback etc.
I'm going to bump this to be a draft PR so it's not in our review queue for now.
Slowly getting there:
Message: https://github.com/ctu-vras/cras_msgs/blob/master/msg/Heartbeat.msg
topic_tools-like library publishing heartbeat of any messages with header: https://github.com/ctu-vras/ros-utils/blob/master/cras_topic_tools/src/heartbeat.cpp (usage).
Deep analysis of the current state in ROS 1 along with discussion can be found here: https://discourse.ros.org/t/add-heartbeat-message-type/24162 .
A short summary for why this message should be added:
A longer summary of the ROS 1 analysis:
Heartbeat
message type is available in "official" ROS repos/enable_statistics
parameter when launching nodes, but it is impractical as it requires synchronizing the launch sequence)/statistics
) so finding data relevant for a single topic needs matching the topic name against all messages in the topicFrequencyStatus
andTimeStampStatus
diagnostic tasks can be used to check frequency/delay of published messagesHeartbeat
diagnostic task is not suitable as it reports a plain timer-based heartbeat telling that the process of the node is runningBond
messages would break the ROS principle of using semantically-fitting message types (bond is inherently point-to-point, publishers are point-to-multipoint)/statistics
topic was recorded/statistics
by topic name/statistics
can have noticeable performance impact (observed in SubT Virtual challenge)FrequencyStatus
andTimeStampStatus
tasks can be recorded and used in playback to give an idea how the publications were working