Why is it necessary to declare ros transform broadcaster in main?
Hi, I was trying to broadcast a tf in ros.
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
#include <tf/tf.h>
#include <geometry_msgs/TransformStamped.h>
ros::Timer robot_pose_broadcaster;
void robotPoseCallBack(const ros::TimerEvent& eventalpha)
{
tf::TransformBroadcaster robotPoseBroadcaster;
geometry_msgs::TransformStamped robotPose;
robotPose.header.stamp = ros::Time::now();
robotPose.header.frame_id = "/map";
robotPose.child_frame_id = "/base_link";
robotPose.transform.translation.x = 0.0;
robotPose.transform.translation.y = 0.0;
robotPose.transform.translation.z = 0.0;
robotPose.transform.rotation.x = 0.0;
robotPose.transform.rotation.y = 0.0;
robotPose.transform.rotation.z = 0.0;
robotPose.transform.rotation.w = 0.9999;
robotPoseBroadcaster.sendTransform(robotPose);
ROS_INFO("DONE POSE BROADCASTING");
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "od_transform");
ros::NodeHandle n;
robot_pose_broadcaster = n.createTimer(ros::Duration(.1), robotPoseCallBack);
// tf::TransformBroadcaster aphabetagamma;
ros::spin();
return 0;
}
This code broadcast nothing. But when I uncomment the below line.
tf::TransformBroadcaster aphabetagamma;
This code publishes transform between map and base_link even though I never use variable aphabetagamma. Can someone help me understand this.
Thanks.