Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Start implementing changeRootJoint #1310

Draft
wants to merge 2 commits into
base: devel
Choose a base branch
from

Conversation

jcarpent
Copy link
Contributor

@jcarpent jcarpent commented Oct 6, 2020

No description provided.

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 6, 2020

Related to #1308.

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 6, 2020

In this PR, it is still needed to inverse the joint placements, change the inertias and the frame placements according to the new root joint.

@Gregwar
Copy link

Gregwar commented Oct 6, 2020

One note about that (not sure if it is relevant): the degrees of freedom on the chain from (old root) to (new root) should be "backward" if you want that the same q state vector to produce the same configuration

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 7, 2020

One note about that (not sure if it is relevant): the degrees of freedom on the chain from (old root) to (new root) should be "backward" if you want that the same q state vector to produce the same configuration

Yes this is precisely the content of my previous comment and what I have started to implement. Did you check the code?

@jmirabel
Copy link
Contributor

jmirabel commented Oct 7, 2020

One note about that (not sure if it is relevant): the degrees of freedom on the chain from (old root) to (new root) should be "backward" if you want that the same q state vector to produce the same configuration

Yes this is precisely the content of my previous comment and what I have started to implement. Did you check the code?

isn't this breaking compactness on which some algorithms rely ?

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 7, 2020

Normally not.

@jmirabel
Copy link
Contributor

jmirabel commented Oct 7, 2020

I am not sure to understand how it is possible to have the same configuration order for the original model and the re-rooted model, while keeping the fact that all the child joints of a joint A corresponds to the n DoFs following the parameter of joint A...

Anyway, I think this is a useful feature. Thanks for implementing it.

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 7, 2020

No, the configuration order will change. This is the role of the user to provide the correct configuration.
For all the basic joints except the FreeFlyer, SphericalZYX and Composite this is possible.

@Gregwar
Copy link

Gregwar commented Oct 7, 2020

The fact that the configuration order will change should indeed be specified on the documentation, a common thing the user will want is to write some code to remap the values of its model data from the original model to the re-rooted one. My comment above is that the values themselves could be compatible (which I guess is what @jcarpent also wants).

Thanks as well for implementing this.

@jcarpent
Copy link
Contributor Author

jcarpent commented Oct 7, 2020

@Gregwar It would be nice if you can provide some help on this feature. For instance, the remaping function for joints configuration, so far an so on.

@Gregwar
Copy link

Gregwar commented Oct 12, 2020

I am not sure what is your philosophy here: do you want the values of the joints to be compatible with the re-rooted robot or not?

As a simple example; will a revolute joint axis that is on the re-root support in the tree have its orientation inverted (newAxis=-axis) or not?

@jcarpent jcarpent marked this pull request as draft August 23, 2021 12:21
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.

None yet

3 participants