From 046264e0dac6f25db8f45442c313aec06e040c88 Mon Sep 17 00:00:00 2001 From: Filippo Luca Ferretti Date: Fri, 26 Apr 2024 09:39:53 +0200 Subject: [PATCH] Add tree transform cache --- src/rod/kinematics/tree_transforms.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/rod/kinematics/tree_transforms.py b/src/rod/kinematics/tree_transforms.py index 3a4940a..c098a49 100644 --- a/src/rod/kinematics/tree_transforms.py +++ b/src/rod/kinematics/tree_transforms.py @@ -14,6 +14,7 @@ @dataclasses.dataclass class TreeTransforms: kinematic_tree: KinematicTree = dataclasses.dataclass(init=False) + _transform_cache: dict[str, npt.NDArray] = dataclasses.field(default_factory=dict) @staticmethod def build( @@ -33,6 +34,13 @@ def build( ) def transform(self, name: str) -> npt.NDArray: + if name in self._transform_cache: + return self._transform_cache[name] + + self._transform_cache[name] = self._compute_transform(name=name) + return self._transform_cache[name] + + def _compute_transform(self, name: str) -> npt.NDArray: match name: case TreeFrame.WORLD: return np.eye(4)