Closed mjd3 closed 5 years ago
Ran the following for testing accuracy/speed of each method (inverse() is current inverse method, inverse2() is proposed method):
import numpy as np import timeit from autolab_core import RigidTransform loops = 10000 print('inverse(), {} loops: {:.6f} s per loop'.format(loops, timeit.timeit('RigidTransform(rotation=RigidTransform.random_rotation(), translation=RigidTransform.random_translation()).inverse()', setup="from __main__ import RigidTransform", number=loops)/loops)) print('inverse2(), {} loops: {:.6f} s per loop'.format(loops, timeit.timeit('RigidTransform(rotation=RigidTransform.random_rotation(), translation=RigidTransform.random_translation()).inverse2()', setup="from __main__ import RigidTransform", number=loops)/loops)) same = np.zeros(loops, dtype=np.uint8) for i in range(loops): A = RigidTransform(rotation=RigidTransform.random_rotation(), translation=RigidTransform.random_translation()) same[i] = np.allclose(A.inverse().matrix, A.inverse2().matrix) print(np.all(same))
Here is the output:
inverse() 10000 loops: 0.000129 s per loop inverse2() 10000 loops: 0.000063 s per loop True
Ran the following for testing accuracy/speed of each method (inverse() is current inverse method, inverse2() is proposed method):
Here is the output: