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

[Core] Next classes to implement #32

Closed
2 of 11 tasks
traversaro opened this issue May 6, 2015 · 4 comments
Closed
2 of 11 tasks

[Core] Next classes to implement #32

traversaro opened this issue May 6, 2015 · 4 comments

Comments

@traversaro
Copy link
Member

It would be desirable to have semantics aware classes for covering all the algorithms implemented in iDynTree, I will list some of them to keep track.

For integration work with @DiegoRomeres and @occam , we need to expose at least a subset of this classes, that I marked in the list with [priority] .

(cc @DanielePucci All the iDynTree::?? still needs a proper name.)

At the raw (coordinates) level we will need:

  • iDynTree::SpatialMotionRaw [priority]
  • iDynTree::SpatialForceRaw [priority]
  • iDynTree::SpatialMotionToForceDyadicRaw
  • iDynTree::JntPositionRaw [priority]
  • iDynTree::JntMotionRaw [priority]
  • iDynTree::JntForceRaw
  • iDynTree::JntMotionToForceDyadicRaw
  • iDynTree::?? Free floating robot configuration
  • iDynTree::?? Free floating robot Motion
  • iDynTree::?? Free floating robot force
  • iDynTree::?? Free floating robot Motion to force dyadic
@traversaro
Copy link
Member Author

To wrap up: we have three configuration spaces:

  • SE3
  • robot joint configurations (i.e. fixed base robot configurations)
  • "free floating robot configurations.

For each one of this configuration spaces, we need classes to represent the:

  • configuration space (i.e. positions)
  • tangent space (i.e. velocities and its derivatives)
  • dual of the tangent space (momentum, wrenches/forces and their derivatives)
  • dyadics between the tangent space and its dual (tangent --> dual inertia/mass matrices, dual --> tangent inverse mass matrices).

To avoid a combinatorial explosion, it could make sense to include derivatives information (i.e. if a spatial motion vector is a twist, acceleration twist, jerk twist) directly in the semantics.

@traversaro
Copy link
Member Author

I like the idea of including derivatives information in the semantics, but this could be confusing because the user could realistically expect to have different classes for different concepts, even if they share the same geometry, like iDynTree::Wrench and iDynTree::SpatialMomentum. This is useful to have also some semantics check at compile time, instead of runtime. Using template metaprogramming this would reduce to a simple typedef, but I guess we can obtain a similar result by having classes like iDynTree::Wrench and iDynTree::SpatialMomentum inherit from iDynTree::SpatialForce.

@traversaro
Copy link
Member Author

Note that until we support complex joint type (i.e. spherical) the configuration space, tangent space and dual space have the same R^n geometry, so we can just start with a iDynTree::JntArrayRaw, similary to the KDL::JntArray class.

@traversaro traversaro mentioned this issue May 8, 2015
@traversaro
Copy link
Member Author

We choose a different direction to implement those classes, closing.

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

No branches or pull requests

1 participant