-
Notifications
You must be signed in to change notification settings - Fork 25
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
Support planning with joint groups #56
Comments
I'm going to try this out before trying to merge the PR for #65 (just putting this here so people can see it's WIP :) ) |
I'm working on this now. Currently, I have a class, class JointGroup:
model : pinocchio.Model
def __init__(self, model : pinocchio.Model, indices):
self.model = model
self.joint_indices = indices
def __getattr__(self, name):
return getattr(self.model, name) The idea being that There is a second class, joint_group_manager.make_joint_group("Test", ["panda_finger_joint1", "panda_finger_joint2"]) And that adds a It seems like this Another question is what should I add overrides for in You can look at the WIP code here for the actual classes and here for the test. |
"Because who can come up with a better name than slapping manager on it?" Absolute genius 🏅 Thank you for taking a crack at this! The way that I've implemented this in other settings actually removes one layer of abstraction, in that you don't necessarily need a joint group manager class. The key idea is that right now, everything we do in PyRoboPlan directly accepts a class PlanningContext: # you could just as well call this a manager lol
model = ???
visual_model = ???
collision_model = ???
joint_groups_map = {
"arm": JointGroup(...),
"gripper": JointGroup(...),
} Then, actually all the PyRoboPlan functions could directly accept one of these objects which will shrink down the function signatures in tons of places. Would something like this make sense to you? I actually had a really minor placeholder for this already in https://github.com/sea-bass/pyroboplan/blob/main/src/pyroboplan/core/planning_context.py Also, re: your last question about requiring state, that is certainly true. In my related implementation, and also in things like MoveIt's |
@sea-bass yes, I think that totally makes sense! Thanks for the response and examples, just wanted to make sure I was on the right track before making more progress. I'll take that into account! |
Right now, all planning is happening with the entire URDF; meaning all joints are accounted for in planning.
To be more in accordance with most motion planning frameworks, it would be nice to have this concept of "joint groups" so that planning can be done by fixing a subset of joint values and only planning for the desired joints.
At its core, this will require a wrapper class around the Pinocchio models, which can contain these joint groups as well as the model data. It will look closer to, e.g., a MoveIt planning scene or a Drake scene graph.
The text was updated successfully, but these errors were encountered: