Skip to content

Commit 68b5f9d

Browse files
committed
New: Fixes in AauSpatialReasoner
* Time(0) does not work and it defaults to 0 anyway * Check for empty frame IDs * Do not deepcopy element when updating linked frames
1 parent 75f7fca commit 68b5f9d

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

skiros2_std_reasoners/skiros2_std_reasoners/aau_spatial_reasoner.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def get_transform(self, base_frm, target_frm, duration=Duration(nanoseconds=0.0)
122122
fails.
123123
"""
124124
try:
125-
t = self._tlb.lookup_transform(base_frm, target_frm, Time(0), duration)
125+
t = self._tlb.lookup_transform(base_frm, target_frm, Time(), duration)
126126
return ((t.transform.translation.x, t.transform.translation.y, t.transform.translation.z),
127127
(t.transform.rotation.x, t.transform.rotation.y, t.transform.rotation.z, t.transform.rotation.w))
128128
except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException) as e:
@@ -143,6 +143,10 @@ def transform(self, element, target_frm, duration=Duration(nanoseconds=0.0)):
143143
"""
144144
try:
145145
pose = element.getData(":PoseStampedMsg")
146+
if not pose.header.frame_id or not target_frm:
147+
self._node.get_logger().warn("[{}] {} failed to transform. Empty source '{}' or target '{}' frame.".format(
148+
self.__class__.__name__, element, pose.header.frame_id, target_frm))
149+
return False
146150
self._tlb.lookup_transform(target_frm, pose.header.frame_id,
147151
pose.header.stamp, duration)
148152
element.setData(":PoseStampedMsg", self._tlb.transform(pose, target_frm))
@@ -174,10 +178,10 @@ def _update_linked_objects(self):
174178
try:
175179
update = self._vector_distance(
176180
new_p, old_p) > 1e-6 or self._vector_distance(new_o, old_o) > 1e-5
177-
except TypeError as e:
181+
except TypeError:
178182
update = new_p is not None and new_o is not None
179183
if update:
180-
e = deepcopy(self._wmi.get_element(k))
184+
# e = deepcopy(self._wmi.get_element(k))
181185
e.setData(":Pose", (new_p, new_o))
182186
self._wmi.update_properties(e, self.__class__.__name__, self)
183187
for e in self._e_to_update:
@@ -676,7 +680,7 @@ def computeRelations(self, sub, obj, with_metrics=False):
676680
if obj.getProperty("skiros:FrameId").value == "":
677681
obj.setProperty("skiros:FrameId", "obj_temp_frame")
678682
self._tlb.settransform(self.getData(obj, ":TransformMsg"), "AauSpatialReasoner")
679-
self._tlb.lookup_transform(obj_base_frame, sub_frame, Time(0), Duration(nanoseconds=10**9))
683+
self._tlb.lookup_transform(obj_base_frame, sub_frame, Time(), Duration(nanoseconds=10**9))
680684
obj.setData(":PoseStampedMsg", self._tlb.transform(obj.getData(":PoseStampedMsg"), sub_frame))
681685
except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException):
682686
log.error("[computeRelations]", "Couldn't transform object in frame {} to frame {}.".format(

0 commit comments

Comments
 (0)