5
5
import rclpy
6
6
from rclpy .node import Node
7
7
8
+ from rclpy .time import Time
9
+ from rclpy .duration import Duration
10
+
8
11
from tf2_ros .static_transform_broadcaster import StaticTransformBroadcaster
9
12
from tf2_ros .buffer import Buffer
10
13
from tf2_ros .transform_listener import TransformListener
@@ -30,26 +33,29 @@ def __init__(self):
30
33
31
34
self .tf_static_broadcaster = StaticTransformBroadcaster (self )
32
35
36
+
37
+
38
+ # ############################ TF Setup ########################################
39
+ self .link_name = 'link_realsense'
33
40
# Publish static transforms once at startup
34
41
self .make_transforms ()
35
42
36
- # ############################ TF Setup ########################################
37
- # # buffer to hold the transform in a cache
38
- # self.tf_buffer = Buffer()
43
+ # buffer to hold the transform in a cache
44
+ self .tf_buffer = Buffer ()
39
45
40
- # # listener. Important to spin a thread, otherwise the listen will block and no TF can be updated
41
- # self.tf_listener = TransformListener(buffer=self.tf_buffer, node=self, spin_thread=True)
46
+ # listener. Important to spin a thread, otherwise the listen will block and no TF can be updated
47
+ self .tf_listener = TransformListener (buffer = self .tf_buffer , node = self , spin_thread = True )
42
48
43
- # self.pose_publisher = self.create_publisher(
44
- # msg_type=TransformStamped,
45
- # topic='/realsense_capture/realsense_pose',
46
- # qos_profile=10)
49
+ self .pose_publisher = self .create_publisher (
50
+ msg_type = TransformStamped ,
51
+ topic = '/realsense_capture/realsense_pose' ,
52
+ qos_profile = 10 )
47
53
48
- # self.create_timer(0.5, self.publish_pose)
54
+ self .create_timer (0.5 , self .publish_pose )
49
55
50
56
def publish_pose (self ):
51
57
try :
52
- t = self .tf_buffer .lookup_transform ('link_base' , 'link_realsense' , self .get_clock (). now ( ))
58
+ t = self .tf_buffer .lookup_transform ('link_base' , self .link_name , Time (), timeout = Duration ( seconds = 2 ))
53
59
self .pose_publisher .publish (t )
54
60
except Exception as e :
55
61
self .get_logger ().info (f"Failed to publish pose: { e } " )
@@ -59,7 +65,7 @@ def make_transforms(self):
59
65
60
66
t .header .stamp = self .get_clock ().now ().to_msg ()
61
67
t .header .frame_id = 'link_eef'
62
- t .child_frame_id = 'link_realsense'
68
+ t .child_frame_id = self . link_name
63
69
64
70
t .transform .translation .x = float (- self .d405_center2left )* 0.001
65
71
t .transform .translation .y = float (- self .mount_translation_y )* 0.001
0 commit comments