Deal with non-contiguous numpy arrays #8
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Use nanobind's built-in Eigen typecasters that relax the row-major requirements for going from python to C++ in the IK functions, which fixes #4.
The problem was that numpy can create views of a matrix that do not correspond to the actual order in which the data is stored (non-contiguous), whereas the C++ type casting code assumed the matrix to be stored in row-major order.
So we were actually computing IK for a different matrix (that was not even necessarily a valid SE3 pose)
A test case has been added to verify non-contiguous numpy arrays provide the same results and to avoid future regression.
This PR also simplifies the codebase as the type casting for numpy arrays to Eigen matrices is now handled by nanobind.
PR also updates the CI workflows, as they were broken