-
Notifications
You must be signed in to change notification settings - Fork 5
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
getting started? #6
Comments
Hello, Sorry but right now PG is completely undocumented. PG doesn't:
PG supports:
This library has been used successfully for posture/contact configuration planning of humanoid robots. |
Wow that sounds fantastic! I'm using a 7dof arm with all revolute joints, the kuka lbr iiwa. Right now I have existing code that follows a path in cartesian space, but it uses a simple pseudoinverse to solve the inverse kinematics, and thus has the potential to get caught. What I'm looking to do is to improve the planning with the extra degree of freedom to avoid joint limits and singularities better, plus ideally optimize the end effector to move with a constant contact force. (cutting) Also your description sounds like a great addition to the readme.md. Thanks! |
Do you want to do control or planning? PG is designed to compute static robot postures but is not designed to generate robot motions. The Tasks library is designed to make real-time control and have the following features:
Also this library is far more stable than PG because it uses a nice and stable QP to solve the problem instead of a "nonlinear solver of doom". Unfortunately, like PG, this library is undocumented. Also, another issue is that you cannot compile it without the LSSOL library that is proprietary. Building without it should be possible, but it will necessitate some work in the build chain. |
Unfortunately my task doesn't fit 100% strictly into either category. The vast majority of the motion I need to follow is a pre-planned path, only the initial approach and final departure steps may involve planning, though even that planning can be ignored for my first version. To keep the explanation simple, I included an image below. The robot arm has a cutter, it approaches a cut path which is the very light blue spline inside the bone image in the top right. The cutter follows that path, clearing out the interior of the bone. When the motion is complete it is removed. I need to approach the path and follow it with the following "constraints":
So the most critical part is that I am following a path with a fully specified 6dof end effector position and orientation, and I need to optimize the motion and the force applied. It probably makes the most sense to continuously adjust rather than plan over the whole path. A bonus would be if I could verify that the entire cut path is reachable before I start. Do you think either library would be suitable for that task? |
I think Tasks is a better choice for your problem.
I used to manage both points by using a Posture Task (targeting a non singular articular position) with low priority. This allow to always have all degree of freedom used and avoid singularities issues.
Here there is a lot of way to manage it. You can update the position target of your cutter. Another way is to model the bone as a unactuated robot, then you can specify the cutter position target relative to the bone (more complex solution).
During motion you can target a reference position/velocity/acceleration so you can manage the velocity of your cutter.
Managed
Managed against convex hull
I already used Tasks to do 6dof path tracking (using a B-spline has path) and to make impedance control (apply a constant force on a target). This library will give you low level functions to solve those issues. There is not a class that will allow you to make out of the box path tracking but instead some tasks (like the end effector 6 dof task) with position/velocity/acceleration target.
That's a difficult issue. I would run the controller off line and compute the tracking error to decide if the path is reachable or not. Now the big issue is more on the time you have to do that. The Tasks library can't be compiled right now because of a missing dependency. Also she's not documented. Solving both issue can take me 2 weeks. |
Ok, well I'm trying out a few possible alternatives and planning to make v-rep plugins for them in my own library grl, so that will all take time and thus I can wait a bit. In case you are both interested and aren't yet aware of them the one from others in my lab is cisst-saw, particularly the sawConstraintController component. Another is versor which implements the fabrik ik algorithm in its vsr_chain header and I have a similar conversation going on there. The approaches can differ quite a bit so I'm trying to learn about a broad range. |
I wanted to follow up, is there any chance of solving the dependency issue and adding a bit of starter documentation so I could try the library out? |
Sorry I was focused on something else. |
Thanks! |
All Tasks dependencies are now available. |
Great, thanks! I'm traveling at the moment but I'll start giving it a try after I'm back. |
Tasks looks like the way to go, I created jrl-umi3218/Tasks#10 to continue relevant discussion. |
Is there any documentation or a good way to get started with this library?
The text was updated successfully, but these errors were encountered: