{"action":"created","issue":{"url":"https://api.github.com/repos/dartsim/dart/issues/548","labels_url":"https://api.github.com/repos/dartsim/dart/issues/548/labels{/name}","comments_url":"https://api.github.com/repos/dartsim/dart/issues/548/comments","events_url":"https://api.github.com/repos/dartsim/dart/issues/548/events","html_url":"https://github.com/dartsim/dart/issues/548","id":114915674,"number":548,"title":"Group/Metaskeleton semantics are not expressive enough.","user":{"login":"mklingen","id":241184,"avatar_url":"https://avatars.githubusercontent.com/u/241184?v=3","gravatar_id":"","url":"https://api.github.com/users/mklingen","html_url":"https://github.com/mklingen","followers_url":"https://api.github.com/users/mklingen/followers","following_url":"https://api.github.com/users/mklingen/following{/other_user}","gists_url":"https://api.github.com/users/mklingen/gists{/gist_id}","starred_url":"https://api.github.com/users/mklingen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mklingen/subscriptions","organizations_url":"https://api.github.com/users/mklingen/orgs","repos_url":"https://api.github.com/users/mklingen/repos","events_url":"https://api.github.com/users/mklingen/events{/privacy}","received_events_url":"https://api.github.com/users/mklingen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-11-03T21:34:07Z","updated_at":"2015-11-11T19:25:56Z","closed_at":null,"body":"Right now, a `Group` or `MetaSkeleton` is fundamentally a collection of DOFs. The `BodyNode`s in a group come along for free by virtue of being attached to the DOFs in the group. But what if I want other body nodes rigidly attached to the group by upstream or downstream fixed DOFs?\r\n\r\nFor example, suppose I want to get all the bodies in the \"arm\" of my robot. This should include the base of the arm, all of the joints of the arm, and then any attached bodies on the end effector. If I create a group with just the arm dofs, this excludes the base and the attached bodies.\r\n\r\nHere's a diagram with the group selected by \"*\":\r\n\r\n```\r\narm_base --> *joint_1* --> *link_1* --> ... --> *joint_N* --> *link_N* --> (downstream links/joints)\r\n```\r\n\r\nI would like to be able to add additional bodies to the group without adding their associated DOFs."},"comment":{"url":"https://api.github.com/repos/dartsim/dart/issues/comments/155885642","html_url":"https://github.com/dartsim/dart/issues/548#issuecomment-155885642","issue_url":"https://api.github.com/repos/dartsim/dart/issues/548","id":155885642,"user":{"login":"mxgrey","id":1307217,"avatar_url":"https://avatars.githubusercontent.com/u/1307217?v=3","gravatar_id":"","url":"https://api.github.com/users/mxgrey","html_url":"https://github.com/mxgrey","followers_url":"https://api.github.com/users/mxgrey/followers","following_url":"https://api.github.com/users/mxgrey/following{/other_user}","gists_url":"https://api.github.com/users/mxgrey/gists{/gist_id}","starred_url":"https://api.github.com/users/mxgrey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mxgrey/subscriptions","organizations_url":"https://api.github.com/users/mxgrey/orgs","repos_url":"https://api.github.com/users/mxgrey/repos","events_url":"https://api.github.com/users/mxgrey/events{/privacy}","received_events_url":"https://api.github.com/users/mxgrey/received_events","type":"User","site_admin":false},"created_at":"2015-11-11T19:25:56Z","updated_at":"2015-11-11T19:25:56Z","body":"When it comes to the ``ReferentialSkeleton``, the dynamics computations are really being done by the ``Skeleton`` that it's holding references to. The ``ReferentialSkeleton`` just repackages the information after it's been computed. The only complications that could arise would be with how the references are managed and how the information gets collated. But at the end of the day, these are just implementation details. I can already think of a way to handle this without very many drastic changes to the current implementation.\r\n\r\nThere are several different extensions of the ``ReferentialSkeleton`` class which each offer different restrictions on what sets of BodyNodes/DegreesOfFreedom are allowed inside of them. For example, the ``Branch`` class will start from a single BodyNode and is required to include all the BodyNodes and DegreesOfFreedom which descend from it. Would you like more flexibility in these classes that have these strict criteria? For example, would you like to be able to take a ``Branch`` and be able to remove certain ``DegreesOfFreedom``, so long as all the BodyNodes remain in the Branch? Or would you be happy enough to just have complete freedom with the ``Group`` class? (I should note that it is trivial to construct a ``Group`` that duplicates a ``Branch``)"}}