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

Unable to resolve pose when one led is occluded #15

Open
cmas1 opened this issue May 2, 2019 · 1 comment
Open

Unable to resolve pose when one led is occluded #15

cmas1 opened this issue May 2, 2019 · 1 comment

Comments

@cmas1
Copy link

cmas1 commented May 2, 2019

Hi,

I am testing this node in simulation, on VREP. I have created a scene with 6 markers and one camera. The markers are not coplanar and well spaced
The markers are now simple spheres and I added some filters on the camera in order to mimc the IR emitters and IR camera.

I set up the position of the markers in the yaml file and lanched the node. What happens is that when all 6 markers are visible, the pose estimation works very well. However, as soon as I occlude any of the 6 markers the pose estimation fails and I get the warning "Unabel to resolve a pose".

I verified that the blobs are detected correctly. I believe my problem is at a later step, perhaps in the correspondence check. I have also tried to force and always reinitialize the estimation, and the problem persists. So it looks like is is not limited to neither the brute force correspondence check nor the correspondence check from the predicted pose.

Here are the parameters I used in the launch file
param name= "threshold_value" value = "140"
param name= "gaussian_sigma" value = "0.6"
param name= "min_blob_area" value = "60"
param name= "max_blob_area" value = "2000"
param name= "max_width_height_distortion" value = "0.7"
param name= "max_circular_distortion" value = "0.7"
param name= "back_projection_pixel_tolerance" value = "5"
param name= "nearest_neighbour_pixel_tolerance" value = "70"
param name= "certainty_threshold" value = "0.75"
param name= "valid_correspondence_threshold" value = "0.7"
param name= "roi_border_thickness" value="100"

Any suggestion at what could be the cause or to what part of the algorithm I should focus looking at?

@cmas1
Copy link
Author

cmas1 commented May 2, 2019

Ok, I dug a little deeper in the code. I found that one problem occurred when looking for correspondences in the histogram.

In PoseEstimator::correspondencesFromHistogram there is a check
if (max_value < histogram_threshold_)
break;

What was happening is that the histogram_threshold_ was set at 20, but the values in the histogram would drop below 15 whenever a led is not detected. In turns this I think depends on some hyperparameters such as tolerances in the pixels and thresholds in the correspondences. I improved my results by fiddling with the following parameters:
back_projection_pixel_tolerance
nearest_neighbour_pixel_tolerance
certainty_threshold
valid_correspondence_threshold

Ultimately, I can also modify the histogram_threshold directly, however hardcoding a threshold value like that might not be the best idea.

I still need to verify what happens when looking for correspondences not in the histogram, but from the prediction, so that point is still open. Anyway I expect it to be related to the choice of parameters and perhaps some other threshold.

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

No branches or pull requests

1 participant