-
Notifications
You must be signed in to change notification settings - Fork 97
Open
Description
Hi,
When calling SO3.AxisAngle in Python 3.11 with numpy 2.4, I get the error:
Python 3.11.11 | packaged by conda-forge | (main, Dec 5 2024, 08:47:03) [Clang 18.1.8 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'2.4.0'
>>> from spatialmath import SO3
>>> SO3.AngVec(theta=0, v=[0, 0, 1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/homebrew/Caskroom/miniconda/base/envs/vp_311/lib/python3.11/site-packages/spatialmath/pose3d.py", line 825, in AngVec
return cls(smb.angvec2r(theta, v, unit=unit), check=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/miniconda/base/envs/vp_311/lib/python3.11/site-packages/spatialmath/base/transforms3d.py", line 760, in angvec2r
R = np.eye(3) + math.sin(θ) * sk + (1.0 - math.cos(θ)) * sk @ sk
^^^^^^^^^^^
TypeError: only 0-dimensional arrays can be converted to Python scalars
>>> However, with numpy 2.2, I get the expected behavior:
Python 3.11.11 | packaged by conda-forge | (main, Dec 5 2024, 08:47:03) [Clang 18.1.8 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'2.2.6'
>>> from spatialmath import SO3
>>> SO3.AngVec(theta=0, v=[0, 0, 1])
SO3(array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]))The error seems to stem from getunit, which when given a scalar now returns a 1-dimensional array instead of a 0-dimensional array. That then gets fed to math.cos, not np.cos, in angvec2r and the error occurs.
Thank you for all your work on this library,
JF
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels