00001 #ifndef TF_REMAPPER_NODE_CPP_TF_REMAPPER_H 00002 #define TF_REMAPPER_NODE_CPP_TF_REMAPPER_H 00003 00004 #include <ros/ros.h> 00005 #include <tf2_msgs/TFMessage.h> 00006 #include <ros/message.h> 00007 00008 #include <tf_remapper_cpp/tf_remapper.h> 00009 00010 namespace tf_remapper_cpp { 00011 00023 class TfRemapperNode { 00024 public: 00027 TfRemapperNode(); 00028 00029 virtual ~TfRemapperNode() {}; 00030 00031 protected: 00032 ros::NodeHandle publicNodeHandle; 00033 ros::NodeHandle privateNodeHandle; 00034 ros::Subscriber oldTfSubscriber; 00035 ros::Subscriber remappedTfSubscriber; 00036 ros::Publisher remappedTfPublisher; 00037 ros::Publisher oldTfPublisher; 00038 00039 bool staticTf; 00040 tf2_msgs::TFMessage staticTfCache; 00041 tf2_msgs::TFMessage reverseStaticTfCache; 00042 00043 std::string oldTfTopic; 00044 std::string remappedTfTopic; 00045 00046 TfRemapper tfRemapper; 00047 TfRemapper reverseTfRemapper; 00048 00051 void oldTfCallback(const ros::MessageEvent<tf2_msgs::TFMessage const>& event); 00052 00055 void remappedTfCallback(const ros::MessageEvent<tf2_msgs::TFMessage const>& event); 00056 00060 void addToStaticTfCache(const tf2_msgs::TFMessage& message, tf2_msgs::TFMessage& cache) const; 00061 }; 00062 00063 }; 00064 00065 #endif //TF_REMAPPER_NODE_CPP_TF_REMAPPER_H