Skip to content

Generate overload JntToJac function in ChainJntToJacSolver Class to return Jacobians for all segments#492

Open
craigirobot wants to merge 11 commits into
orocos:masterfrom
craigirobot:jnttojac-all-segment-jacs
Open

Generate overload JntToJac function in ChainJntToJacSolver Class to return Jacobians for all segments#492
craigirobot wants to merge 11 commits into
orocos:masterfrom
craigirobot:jnttojac-all-segment-jacs

Conversation

@craigirobot
Copy link
Copy Markdown

JntToJac() in the ChainJntToJacSolver Class only returns the Jacobian for the specified input segment seg_nr. Some inverse kinematics algorithms require Jacobians for multiple segments in a chain such as those used for commanding self-motion. Because JntToJac already calculates all of the Jacobians leading up to seg_nr, it does not cost anything computationally to return the intermediate Jacobians. The modified JntToJac() returns Jacobians for all of the segments by encapsulating them in a std vector . Note that this is analogous to overloaded function JntToCart() in the ChainFkSolverPos_recursive Class which returns Cartesian frames for all of the intermediate segments in std::vector. JntToJac() follows JntToCart() as a model to generate the same functionality.

Craig Carignan and others added 3 commits May 7, 2025 09:27
… jacobians

JntToJac(const JntArray& q_in, Jacobian& jac, int seg_nr) in ChainJntToJacSolver Class only returns the Jacobian for the specified input segment.  Because this function internally calculates all of the Jacobians leading up to seg_nr, the modified JntToJac() returns all of the intermediate Jacobians by encapsulating them in a std vector <Jacobian>.  Note that this is analogous to overloaded function JntToCart() in the ChainFkSolverPos_recursive Class which returns Cartesian frames for all of the intermediate segments in std::vector<Frame>.
… jacs

Unit test 'JacAllSegments()' was added to solvertest.cpp for the new jnttojac() function that returns the Jacobians for all of the segments.  It uses the (current) JntToJac function to test the return value of the Jacobian for each individual segment.  Note that the index starts at 0 so that segment N has the index N-1 in the Jacobian vector.
Comment thread orocos_kdl/src/chainjnttojacsolver.hpp Outdated
Comment thread orocos_kdl/tests/solvertest.cpp Outdated
Comment thread orocos_kdl/tests/solvertest.cpp
Comment thread orocos_kdl/tests/solvertest.cpp Outdated
Comment thread orocos_kdl/tests/solvertest.cpp
Comment thread python_orocos_kdl/PyKDL/kinfam.cpp Outdated
craigirobot and others added 3 commits July 31, 2025 10:34
This adds the description for the new array of Jacobian outputs.
removed white space

Co-authored-by: Matthijs van der Burgh <matthijs.vander.burgh@live.nl>
Jacobians generally have 6 rows corresponding to the 6 Cartesian degrees of freedom, but this makes it explicit that the indexing is based on the number of rows of the Jacobian.
Comment thread orocos_kdl/src/chainjnttojacsolver.hpp Outdated
Comment thread orocos_kdl/src/chainjnttojacsolver.cpp Outdated
Comment thread orocos_kdl/src/chainjnttojacsolver.cpp Outdated
Comment thread orocos_kdl/src/chainjnttojacsolver.cpp
Comment thread python_orocos_kdl/PyKDL/kinfam.cpp Outdated
craigirobot and others added 5 commits December 17, 2025 10:29
formatting change only

Co-authored-by: Matthijs van der Burgh <matthijs.vander.burgh@live.nl>
formatting change only

Co-authored-by: Matthijs van der Burgh <matthijs.vander.burgh@live.nl>
Added member function to output array of Jacobians
@craigirobot craigirobot force-pushed the jnttojac-all-segment-jacs branch from 838115e to cb9b95c Compare December 31, 2025 19:49
@snrkiwi
Copy link
Copy Markdown
Contributor

snrkiwi commented Feb 13, 2026

I believe that all the issue have been dealt with. Is there anything else needed?

@craigirobot
Copy link
Copy Markdown
Author

I think all of the comments have been addressed. What needs to be done to move forward on this? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants