Retrieve first message in a topic
Hi,
I need to retrieve the first message from a ros topic and store it in variable or a file. Is there a way to do so?
Thanks in advance!
Asked by fun01 on 2020-08-24 08:35:53 UTC
Answers
If your node is started before the topic is running, you can create a subscriber and a static boolean in your callback (assuming you're working in C++ and ROS1) :
static bool isFirstTime = true;
static geometry_msgs::Pose firstPose
static void callbackSubscriber(const geometry_msgs::Pose::ConstPtr& msg)
{
if(isFirstTime)
{
isFirstTime = false;
firstPose = msg;
}
}
Disclaimer : I haven't tested, just wrote it off to give a global idea. Not sure this is a "clean" solution too.
Asked by Vic on 2022-05-03 08:17:43 UTC
Comments
Starting
rosbag record
before starting the node that publishes the required ROS message, might be a way to do it.Asked by praskot on 2020-08-24 18:24:46 UTC
@fun01 You may also want to check WaitForMessage that will wait for a single message to arrive on a topic. Another possible solution is to have a subscriber and in the callback unsubscribe after the first call.
Asked by Weasfas on 2020-08-25 04:16:05 UTC