From d0fad962b07c31a853fa8c90af0578a7376fc698 Mon Sep 17 00:00:00 2001 From: Peter Corke Date: Sun, 9 Aug 2026 14:55:38 +1000 Subject: [PATCH 1/2] fix: use spatialgeometry's correctly-spelled _propagate_scene_tree() _propogate_scene_tree() was a misspelling of "propagate" in spatialgeometry -- see jhavl/spatialgeometry#38, which adds the correctly-spelled _propagate_scene_tree() and keeps the old misspelled name as a deprecated (FutureWarning) alias. Migrate Link.py's and Robot.py's 8 call sites to the new name ahead of the old one's eventual removal. Not touching this repo's own vendored src/spatialgeometry/ snapshot -- that's separate, deliberate legacy left alone until Swift/SG work is done. --- src/roboticstoolbox/robot/Link.py | 8 ++++---- src/roboticstoolbox/robot/Robot.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/roboticstoolbox/robot/Link.py b/src/roboticstoolbox/robot/Link.py index acb08043..3f189fc3 100644 --- a/src/roboticstoolbox/robot/Link.py +++ b/src/roboticstoolbox/robot/Link.py @@ -1101,8 +1101,8 @@ def closest_point( if not skip: self.robot._update_link_tf(self.robot.q) # type: ignore - self._propogate_scene_tree() - shape._propogate_scene_tree() + self._propagate_scene_tree() + shape._propagate_scene_tree() d = 10000 p1 = None @@ -1134,8 +1134,8 @@ def iscollided(self, shape: Shape, skip: bool = False) -> bool: if not skip: self.robot._update_link_tf(self.robot.q) # type: ignore - self._propogate_scene_tree() - shape._propogate_scene_tree() + self._propagate_scene_tree() + shape._propagate_scene_tree() for col in self.collision: if col.iscollided(shape): diff --git a/src/roboticstoolbox/robot/Robot.py b/src/roboticstoolbox/robot/Robot.py index 4d706b6e..289a581d 100644 --- a/src/roboticstoolbox/robot/Robot.py +++ b/src/roboticstoolbox/robot/Robot.py @@ -1289,8 +1289,8 @@ def closest_point( if not skip: self._update_link_tf(q) - self._propogate_scene_tree() - shape._propogate_scene_tree() + self._propagate_scene_tree() + shape._propagate_scene_tree() d = 10000 p1 = None @@ -1324,8 +1324,8 @@ def iscollided(self, q, shape: Shape, skip: bool = False) -> bool: if not skip: self._update_link_tf(q) - self._propogate_scene_tree() - shape._propogate_scene_tree() + self._propagate_scene_tree() + shape._propagate_scene_tree() for link in self.links: if link.iscollided(shape, skip=True): From 972ff0d65bda1c63f00367dd062d82c761a117b8 Mon Sep 17 00:00:00 2001 From: Peter Corke Date: Sun, 9 Aug 2026 15:38:47 +1000 Subject: [PATCH 2/2] fix: use spatialgeometry's new update() method, not the deprecated alias Follow-up to the previous commit here -- spatialgeometry's PR (jhavl/spatialgeometry#38) was amended before merging: instead of landing a correctly-spelled but still-private _propagate_scene_tree() only to deprecate it again immediately after, it went straight to a public update() method. _propogate_scene_tree() (the original misspelled name this repo used to call) remains available as a deprecated (FutureWarning) alias, but Link.py/Robot.py should call update() directly. Confirmed no collision with any existing RTB method: grepped the whole roboticstoolbox tree for def update( and found only unrelated local functions elsewhere (PyPlot backends, mobile/Animations.py) -- none on Robot/Link or anything in their MRO. Confirmed live: rtb.Robot.update is spatialgeometry.SceneNode.update. --- src/roboticstoolbox/robot/Link.py | 8 ++++---- src/roboticstoolbox/robot/Robot.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/roboticstoolbox/robot/Link.py b/src/roboticstoolbox/robot/Link.py index 3f189fc3..ccae7b6b 100644 --- a/src/roboticstoolbox/robot/Link.py +++ b/src/roboticstoolbox/robot/Link.py @@ -1101,8 +1101,8 @@ def closest_point( if not skip: self.robot._update_link_tf(self.robot.q) # type: ignore - self._propagate_scene_tree() - shape._propagate_scene_tree() + self.update() + shape.update() d = 10000 p1 = None @@ -1134,8 +1134,8 @@ def iscollided(self, shape: Shape, skip: bool = False) -> bool: if not skip: self.robot._update_link_tf(self.robot.q) # type: ignore - self._propagate_scene_tree() - shape._propagate_scene_tree() + self.update() + shape.update() for col in self.collision: if col.iscollided(shape): diff --git a/src/roboticstoolbox/robot/Robot.py b/src/roboticstoolbox/robot/Robot.py index 289a581d..ac42061c 100644 --- a/src/roboticstoolbox/robot/Robot.py +++ b/src/roboticstoolbox/robot/Robot.py @@ -1289,8 +1289,8 @@ def closest_point( if not skip: self._update_link_tf(q) - self._propagate_scene_tree() - shape._propagate_scene_tree() + self.update() + shape.update() d = 10000 p1 = None @@ -1324,8 +1324,8 @@ def iscollided(self, q, shape: Shape, skip: bool = False) -> bool: if not skip: self._update_link_tf(q) - self._propagate_scene_tree() - shape._propagate_scene_tree() + self.update() + shape.update() for link in self.links: if link.iscollided(shape, skip=True):