-
Notifications
You must be signed in to change notification settings - Fork 80
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
EGPlanner running in infinite loop #131
Comments
Is there anything similar to: Being printed when you load the robot into graspit. My guess is that the virtual contacts on the hand (little red arrrows) are never loading. Then when you run the planner, the energy functions do not behave regularly because they all depend on the hand having virtual contacts. I think that the reason this is happening is that you have an old version of the libgraspit.so library floating around that has an old version of the code to load the robot contacts. Can you do the following:
and verify that libgraspit.so is not pointing towards something in a ros workspace or anything other than /usr/local/lib/libgraspit.so. |
Nothing of this type jvarley@skye:~$ ldd /usr/local/bin/graspit_simulator |
Another update, this Neighbor gen loops logs keep poping for first few second on every plan and suddenly start planning after some indefinite time which actually increases my planning time.So is updating to new graspit source only solution? |
If you are using Jennifer's work, just make sure you use her fork of graspit: https://github.com/JenniferBuehler/graspit and I would imagine they should be compatible. It sounds like the environment is the problem. Can you post several screen shots in both the configurations where the planner runs fine, and in the cases where it does not run correctly? |
I am thinking that your shelf maybe having an adverse effect on GraspIt!'s collision detection system, and it is having a hard time generating valid neighbor states that are collision free during planning. The EGPlanner search state calls collision detection via: https://github.com/graspit-simulator/graspit/blob/master/src/EGPlanner/energy/searchEnergy.cpp#L117 Perhaps throw in some print statements or something and try to determine if it is failing to generate collision free poses. |
Hi @jvarley I guess problem is with my gripper size.I tried to plan in cluttered environment with jaco hand where it didnt stopped for Neighbor gen loops and if I used my Robotiq hand with some custom ellongation added in order to avoid poses grabbing object from backside it takes time for starting the planner.Main motive behind extending hand long in size was just to avoid back poses which wont be achievable by my ARM so I need some work around to solve this issue.Is there something which can be done like checking if hand is transalated behind object position in world like my approach axis is X-axis so I can check weather my hand is beyond my object and guide planner to stop looking for those poses and jump to approach object from front side which is hand position for x-axis less than object position for x-axis? |
@jvarley Any help regarding my scenerio?Any updates?In short I want to define planner region in which it shoud look for poses.This region should be cone around object to be grasped.I know in my scenerio my objects will be placed in x-axis in world frame so I can put check in planner poses to discard poses behind my object pose in x-axis and then I also want to reject poses holding object from upside which means pitch of my hand shouldnt be more then certain limit.I need to put these 2 checks in planner main algorithm and perform planning inside these limits.Will this be possible by some modification in graspit code? |
I would modify the guided potential quality energy and add additional terms to the energy function to penalize grasps that are outside limits you set. Just make sure you penalize it in a way that has clear downhill gradients, so that hand is able to move to better positions. I.E. larger penalties for the farther the pitch is beyond your limit not a constant error term for being beyond your pitch limit. |
Thanks for the reply @jvarley . I got first part of your solution that to pass limit arguments to guided potential quality energy function and check for limits in that function but how to do the second part which is to move hand to better positions or position within my limits?Also how to assign penalties to pose which is way out of my limit? |
@jvarley According to my knowledge after going through whole flow of code my initial guess was to penalize grasps before marking it as legal in function analyzestate of SearchEnergy.cpp and if I penalize grasp after marking them legal and storing energy will that suffice my need? Instead if I penalize grasps at |
If hand states that you don't want have high energy, the annealing process will naturally avoid them as it moves to better low energy states. Your idea of simply making these states illegal would probably work as well. I would say try it. The only possible issue I see if that if the planner starts in an illegal state and a large fraction of the search space is illegal, then it may have a hard time getting itself to a legal state since there is no gradient for it to follow, while if you give it a really high energy, for really bad grasps and just a high energy for bad grasps, then the annealing process can move downhill to the regions you want the planner to spend its time in. |
Yes you were right I tried making states illegal directly in analyzestate function which stops planner from finding better pose and code gets stuck for indefinite time.I did as you said penalizing energy with some high error which depends upon error between my legal state and currently illegal state which works perfectly and gives me pose which are inside my desired region.Thanks alot for guiding me in proper direction. Sometimes Planner takes time to initiate planning so is that because planner being in illegal state or collision with environment can be problem?I have made my hand short as compared to previous so I dont think so its collision issue.So if its illegal state issue at start should I manually place hand in legal state and then start planner for quick results? |
Glad things are working for you. My guess is that would help, but try it. You could potentially put the hand in a good position and resave your world file, then it will just start in that position everytime you start graspit. |
Yup Thanks for all the help @jvarley . It happens in very very rare case that hand comes in illegal state and dosent come out of it due to constant energy or it is unable to move then maybe I should detect its situation and manually move robot to known legal state.Well will find out some solution out of this. |
@jvarley I had one more question.Is it possible to import PCD(Point cloud) file directly to Graspit environment.I havent seen it yet and currently thinking about converting PCD to iv and then importing it as obstacle.Are there any other ways to do this? |
Some really old code for putting a pointcloud into the graspit scene: The above code was for visualizing pointclouds sent over a socket connection to graspit. It could be modified to load from a pcd. I have not ever used pointclouds as collision objects within graspit, only for visualization. It is really designed to work with meshes and I would not recommend doing anything with pointclouds in graspit. I would mesh your cloud, then plan on the mesh. But nothing says its impossible, so good luck. |
Ok will mesh my point cloud and work with it. Thanks @jvarley for all the help.We can close this issue now. :) |
@jvarley One more question.Is there any specific steps to learn grasps produced from planner and save them like CGDB is doing but it has grasps for Barret hand and human hand.I need to create some learning based model which will save all the possible grasps for my object but also there are certain constraints like my environment is dynamic consider rack picking as it was in APC last year for which I will be adding rest of the scene pcd in form of mesh in my planning scene with my grasp object kept seperately.I need to create database of grasps for my robotiq hand.Can you refer some guidelines for doing the same? |
Call graspit from graspit_commander: |
Ok Thanks :) |
Is there any example for connecting this grasp database to main graspit planner via cpp interface so that it will not plan and just give me best grasp from database?Also my assumption for using this grasp database is like in any kind of cluttered environment I will get top good grasps within my defined region which are not in collision considering various poses of grasp object.Am I right?Or I will have to do collision checking explicitily after getting grasp poses from database?I mean how collision checking is handled while dealing with DB |
One more query. I downloaded and loaded CGDB in my database postgres and also set CGDB environment variable to point to psb objects.Now if I go to connect and browse database from UI then it gives me segmentation fault without giving any reason.I followed steps in graspit manual http://graspit-simulator.github.io/build/html/cgdb.html and I couldnt find graspit.pro file.If you have any updated steps to connect to CGDB kindly send me the link for the same. |
@jvarley I wanted one more help.Since object pose estimation is major requirement to plan stable grasp can you guide me where to look for some stable pose estimation library? |
Cool will have a look into this.Thanks :) |
For anyone experiencing this issue, the cause, as @jvarley said in a comment before, is "it is having a hard time generating valid neighbor states that are collision free during planning". |
Hello ,
I am adding some graspable object in graspit world along with my robot.I do have some obstacle over which I am placing this graspable object.Pose for this object is basically fetched through pose estimation running on my machine. I am getting following logs and it goes on infinitily printing it without planning in some cases.
created new L1 Norm GWS.
Neighbor gen loops: 11
Neighbor gen loops: 11
Neighbor gen loops: 11
Neighbor gen loops: 13
Neighbor gen loops: 11
Neighbor gen loops: 16
Neighbor gen loops: 12
Eigen Planner never comes out of this loop.What does this exactly mean?My problem gets resolved if I use space search as COMPLETE instead of Axis angle.My graspit world is cluttered consider a rack consisting of my objects between which my grasp object is placed.
The text was updated successfully, but these errors were encountered: