SMACC
Loading...
Searching...
No Matches
cp_tf_listener.h
Go to the documentation of this file.
1/*****************************************************************************************************************
2 * ReelRobotix Inc. - Software License Agreement Copyright (c) 2018-2020
3 * Authors: Pablo Inigo Blasco, Brett Aldrich
4 *
5 ******************************************************************************************************************/
6#pragma once
7
8#include <smacc/component.h>
10
11#include <geometry_msgs/Pose.h>
12#include <tf/transform_listener.h>
13#include <tf/transform_datatypes.h>
14#include <mutex>
15#include <thread>
16
17namespace cl_move_base_z
18{
20 {
21 std::mutex mutex_;
22 geometry_msgs::PoseStamped pose_;
23 std::string targetPoseFrame_;
25 bool once = true;
26 bool isInitialized = false;
27 };
28
30 {
31 public:
33
34 virtual void update() override
35 {
36 for(auto& poseTrack: poseTracks_)
37 {
38 tf::StampedTransform transform;
39 try
40 {
41 {
42 std::lock_guard<std::mutex> lock(listenerMutex_);
43 tfListener_->lookupTransform(poseTrack->referenceBaseFrame_,poseTrack->targetPoseFrame_,
44 ros::Time(0), transform);
45 }
46
47 {
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;
53 }
54 }
55 catch (tf::TransformException ex)
56 {
57 ROS_ERROR_STREAM_THROTTLE(1, "[Component pose] (" << poseFrameName_ << "/[" << referenceFrame_ << "] ) is failing on pose update : " << ex.what());
58 }
59 }
60 }
61
62 void getLastTransform(std::string &targetPoseFrameName, std::string &referenceBaseFrame, geometry_msgs::Pose &out)
63 {
64 }
65
66 std::future<geometry_msgs::Pose> waitForNextTransform(std::string &targetName, std::string &referenceBaseFrame)
67 {
68 tracks_
69 }
70
71 private:
72 static std::shared_ptr<tf::TransformListener> tfListener_;
73 static std::mutex listenerMutex_;
74
75 std::mutex m_mutex_;
76 std::list<std::shared_ptr<TfPoseTrack>> poseTracks_;
77 };
78} // namespace cl_move_base_z
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_
geometry_msgs::PoseStamped pose_