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!
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
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: 2020-08-24 08:35:53 -0600
Seen: 427 times
Last updated: May 03 '22
Starting
rosbag record
before starting the node that publishes the required ROS message, might be a way to do it.@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.