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

Reachability validation #91

Open
mpomarlan opened this issue Jan 23, 2019 · 2 comments
Open

Reachability validation #91

mpomarlan opened this issue Jan 23, 2019 · 2 comments

Comments

@mpomarlan
Copy link
Contributor

When using costmaps to resolve a location designator, and this designator is a reachability one, then the robot-pose-gaussian-costmap::reachable-location-validator function is used.

This function performs a simple check that the distance between the candidate solution pose and the target pose in the designator is between a min and a max threshold. However, these thresholds are the same as the ones used to create the costmap from which the solution is sampled; we are pretty much guaranteed this distance will never be outside the threshholds because the costmap itself is hard cut off at them.

Suggestion: perform a call to ik to actually check reachability (I have code for this in the Bolzano branch of my fork). A couple of notes about the suggestion:

  • service calls tend to spam the console with debug messages, especially when the IK fails for several candidates; they're written that way in roslisp, presumably, but maybe some messages might be silenced when required
  • this makes designator validation dependent on some sort of tf. For example, if one wants to quickly check that designators in the projection world are solvable, and wants to do this in the REPL command line, it's better to use a (pr2-proj:with-projected-robot (desig:reference ...)) than a simple (desig:reference ...)
@gaya-
Copy link
Member

gaya- commented Jan 23, 2019

Lorenz had this kind of validation. I found that it was too strict and even created false negatives. Additionally, I was creating a lot of computational overhead (or rather it would take too long) as IK queries are not completely for free. Because of that, I personally rely on good failure handling and resampling.

@mpomarlan
Copy link
Contributor Author

I'll be gathering experience about the change, of course, until we can get to March or whenever some development time can be scheduled. The little experience I have so far is positive in terms of speed, and I didn't get false negatives.

Rather, the reason for the suggested change is false positives created by the previous approach. It comes down to how big the max distance threshold is for the costmap. Too large, and there is a chance that the robot will try to grip an object from too far away, which will result in a failure.

As to why it's a good idea to increase the max distance threshold for the costmap, it is precisely to avoid false negatives. The robot "should" reach more often than it does when that threshold is low (I say this having tried various pick-place plans and really there should have been fewer cases where it gave up). Increasing the max distance threshold for the costmap will work, as long as the reachability test actually tests reachability, rather than trivially being true for the costmap.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants