Tuesday, April 12, 2005

Bug in SphereColChecker

  1. David pointed out a bug on the original Quinlan's code:
    On line 63 of gilbert.c, change:
    if (dstsq >= lastdstsq || nvs == 4) {
    to
    if (dstsq >= lastdstsq * (1 - 1e-10) || nvs == 4) {
    Once I changed that, I don't get the computer in an infinite loop.
  2. Making sure that the change on the collision checker did not affected anything else. Trying the planner with different problems I get always that one of the configurations (start or goal) are in collision. My guess is that it has to do with the translation of the base of the robot. Of course, the image seems ok, but the collision checking is detecting collisions incorrectly. I will check that the transforms are correctly applied to the models.
  3. Somethings to remember.
    a) I am not prunning now pairs. Which means that every time the collision checker is called all possible pairs are checked (in the worst case). This is due to the fact that in the original version of MPK, Bounding Volumes (BV) are constructed using information extracted from PQP and then the BVs are used both for defining the colliding pairs as well as in the collision checking in a step done before calling the actual collision checker.
    b) I have two models of the geometry of the obstacles. The same applies for the robot links. This is because the GUI requires the BV for every link. I will check later how to extract that information using only SphereColChecker.
  4. mpkBVControl::init(robots, obstacles, bv_level);
    mpkGUI::scene->addChild(mpkBVControl::ivroot());
    is producing a segmentation fault....
  5. Problem corrected. But now I cannot pick the links of the robot in the GUI. That is not good, since it may be due to some problem while reading the robot description. However, I cannot identify where is the problem.
  6. The Bounding Boxes are correctly computed now.

0 Comments:

Post a Comment

<< Home