Skip to content

Commit c1604b7

Browse files
committed
updating tf_relay to have a dynamically-reconfigurable delay
1 parent a5eb693 commit c1604b7

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.6.3)
22

33
project(lcsr_tf_tools)
44

5-
find_package(catkin REQUIRED tf geometry_msgs interactive_markers visualization_msgs message_generation)
5+
find_package(catkin REQUIRED tf geometry_msgs interactive_markers visualization_msgs message_generation std_msgs)
66

77
add_message_files(
88
FILES StaticTransform.msg)

include/lcsr_tf_tools/tf_relay.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <ros/ros.h>
55
#include <ros/time.h>
66
#include <tf/tfMessage.h>
7+
#include <std_msgs/Float64.h>
78
#include <boost/unordered_set.hpp>
89
#include <queue>
910

@@ -32,6 +33,7 @@ class TFRelay {
3233

3334
protected:
3435

36+
void set_delay_cb(const std_msgs::Float64 &msg);
3537
void cb(const tf::tfMessageConstPtr &msg);
3638

3739
ros::Duration delay_;
@@ -44,7 +46,8 @@ class TFRelay {
4446
buffered_transforms_;
4547
boost::unordered_set<std::string> frame_ids_;
4648
boost::unordered_set<std::string> filtered_frame_ids_;
47-
ros::Subscriber sub_;
49+
ros::Subscriber tf_sub_;
50+
ros::Subscriber set_delay_sub_;
4851
ros::Publisher pub_;
4952
};
5053

package.xml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<run_depend>geometry_msgs</run_depend>
2323
<run_depend>interactive_markers</run_depend>
2424
<run_depend>visualization_msgs</run_depend>
25+
<run_depend>std_msgs</run_depend>
2526
</package>
2627

2728

src/tf_relay.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ TFRelay::TFRelay(ros::NodeHandle nh) :
4444
if(use_udp) {
4545
hints = hints.udp();
4646
}
47-
sub_ = nh.subscribe("tf_in", 300, &TFRelay::cb, this, hints);
47+
tf_sub_ = nh.subscribe("tf_in", 300, &TFRelay::cb, this, hints);
48+
set_delay_sub_ = nhp.subscribe("set_delay", 1, &TFRelay::set_delay_cb, this);
4849
}
4950

5051
void TFRelay::sleep()
@@ -63,6 +64,12 @@ void TFRelay::broadcast()
6364
msg_.transforms.clear();
6465
}
6566

67+
void TFRelay::set_delay_cb(const std_msgs::Float64 &msg)
68+
{
69+
delay_ = ros::Duration(msg.data);
70+
}
71+
72+
6673
void TFRelay::cb(const tf::tfMessageConstPtr &msg)
6774
{
6875
// Filter the messages based on child_frame_id

0 commit comments

Comments
 (0)