11#include <geometry_msgs/Pose.h>
12#include <tf/transform_listener.h>
13#include <tf/transform_datatypes.h>
22 geometry_msgs::PoseStamped
pose_;
38 tf::StampedTransform transform;
43 tfListener_->lookupTransform(poseTrack->referenceBaseFrame_,poseTrack->targetPoseFrame_,
44 ros::Time(0), transform);
48 std::lock_guard<std::mutex> guard(
m_mutex_);
49 tf::poseTFToMsg(transform, poseTrack->pose_.pose);
50 poseTrack->pose_.header.stamp = transform.stamp_;
51 poseTrack->pose_.header.frame_id = poseTrack->referenceBaseFrame_;
52 poseTrack->isInitialized =
true;
55 catch (tf::TransformException ex)
57 ROS_ERROR_STREAM_THROTTLE(1,
"[Component pose] (" << poseFrameName_ <<
"/[" << referenceFrame_ <<
"] ) is failing on pose update : " << ex.what());
62 void getLastTransform(std::string &targetPoseFrameName, std::string &referenceBaseFrame, geometry_msgs::Pose &out)
66 std::future<geometry_msgs::Pose>
waitForNextTransform(std::string &targetName, std::string &referenceBaseFrame)
virtual void update() override
std::list< std::shared_ptr< TfPoseTrack > > poseTracks_
std::future< geometry_msgs::Pose > waitForNextTransform(std::string &targetName, std::string &referenceBaseFrame)
static std::shared_ptr< tf::TransformListener > tfListener_
void getLastTransform(std::string &targetPoseFrameName, std::string &referenceBaseFrame, geometry_msgs::Pose &out)
static std::mutex listenerMutex_
std::string targetPoseFrame_
std::string referenceBaseFrame_
geometry_msgs::PoseStamped pose_