Generate overload JntToJac function in ChainJntToJacSolver Class to return Jacobians for all segments#492
Open
craigirobot wants to merge 11 commits into
Open
Conversation
… 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.
MatthijsBurgh
requested changes
Jul 24, 2025
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.
MatthijsBurgh
requested changes
Aug 5, 2025
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
838115e to
cb9b95c
Compare
Contributor
|
I believe that all the issue have been dealt with. Is there anything else needed? |
Author
|
I think all of the comments have been addressed. What needs to be done to move forward on this? Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
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.