AngleAxis and getunit error with Numpy 2.4
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 50/100
Research direction
Reproduce the SO3.AngVec(theta=0, v=[0, 0, 1]) failure with NumPy 2.4, then inspect spatialmath/pose3d.py and spatialmath/base/transforms3d.py, including getunit and angvec2r. Done means the call no longer raises a TypeError under NumPy 2.4 and retains the expected identity rotation behavior.
Written by the indexing model from the issue text.
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
- Dominant language
- Python
- Stars
- 641
- Forks
- 102
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 4
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from rai-opensource/spatialmath-python
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
rai-opensource/spatialmath-python#32 · 4 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
-
bug
rai-opensource/spatialmath-python#165 · 2 comments · 1 assignee ·
-
rai-opensource/spatialmath-python#143 · 8 comments · 1 assignee ·
-
under investigation
Difficulty 3/5 1-2 days Newbie friendliness 25/100
rai-opensource/spatialmath-python#78 · 2 comments ·
All issues in rai-opensource/spatialmath-python
Similar issues
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
NousResearch/hermes-agent#117848 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100