1010import colorsys
1111from kf_hungarian_tracker .obstacle_class import ObstacleClass
1212
13- from tf2_ros import LookupException
13+ from tf2_ros import TransformException
1414from tf2_ros .buffer import Buffer
1515from tf2_ros .transform_listener import TransformListener
1616from tf2_geometry_msgs import do_transform_point , do_transform_vector3
@@ -70,7 +70,7 @@ def __init__(self):
7070
7171 # publisher for tracking result
7272 self .tracker_obstacle_pub = self .create_publisher (ObstacleArray , 'tracking' , 10 )
73- self .tracker_marker_pub = self .create_publisher (MarkerArray , 'marker ' , 10 )
73+ self .tracker_marker_pub = self .create_publisher (MarkerArray , 'tracking_marker ' , 10 )
7474
7575 # setup tf related
7676 self .tf_buffer = Buffer ()
@@ -98,7 +98,15 @@ def callback(self, msg):
9898 try :
9999 trans = self .tf_buffer .lookup_transform (self .global_frame , msg .header .frame_id , rclpy .time .Time ())
100100 msg .header .frame_id = self .global_frame
101+ # do_transform_vector3(vector, trans) resets trans.transform.translation
102+ # values to 0.0, so we need to preserve them for future usage in the loop below
103+ translation_backup_x = trans .transform .translation .x
104+ translation_backup_y = trans .transform .translation .y
105+ translation_backup_z = trans .transform .translation .z
101106 for i in range (len (detections )):
107+ trans .transform .translation .x = translation_backup_x
108+ trans .transform .translation .y = translation_backup_y
109+ trans .transform .translation .z = translation_backup_z
102110 # transform position (point)
103111 p = PointStamped ()
104112 p .point = detections [i ].position
@@ -112,8 +120,10 @@ def callback(self, msg):
112120 s .vector = detections [i ].size
113121 detections [i ].size = do_transform_vector3 (s , trans ).vector
114122
115- except LookupException :
116- self .get_logger ().info ('fail to get tf from {} to {}' .format (msg .header .frame_id , self .global_frame ))
123+ except TransformException as ex :
124+ self .get_logger ().error (
125+ 'fail to get tf from {} to {}: {}' .format (
126+ msg .header .frame_id , self .global_frame , ex ))
117127 return
118128
119129 # hungarian matching
@@ -204,15 +214,15 @@ def callback(self, msg):
204214 arrow .scale .z = 0.05
205215 marker_list .append (arrow )
206216 # add dead obstacles to delete in rviz
207- for uuid in dead_object_list :
217+ for dead_uuid in dead_object_list :
208218 marker = Marker ()
209219 marker .header = msg .header
210- marker .ns = str (uuid )
220+ marker .ns = str (dead_uuid )
211221 marker .id = 0
212222 marker .action = 2 # delete
213223 arrow = Marker ()
214224 arrow .header = msg .header
215- arrow .ns = str (uuid )
225+ arrow .ns = str (dead_uuid )
216226 arrow .id = 1
217227 arrow .action = 2
218228 marker_list .append (marker )
0 commit comments