clear_costmap_recovery

asked 2017-12-28 20:17:16 -0600

dyan gravatar image

I want to know why this recovery_behavoir aggressive_reset distance is 4*circumscribed_radius? I'm readed the source code

double start_point_x = pose_x - reset_distance_ / 2;
double start_point_y = pose_y - reset_distance_ / 2;
double end_point_x = start_point_x + reset_distance_;
double end_point_y = start_point_y + reset_distance_;

int start_x, start_y, end_x, end_y;
costmap->worldToMapNoBounds(start_point_x, start_point_y, start_x, start_y);
costmap->worldToMapNoBounds(end_point_x, end_point_y, end_x, end_y);

unsigned char* grid = costmap->getCharMap();
for(int x=0; x<(int)costmap->getSizeInCellsX(); x++){
bool xrange = x>start_x && x<end_x;

for(int y=0; y<(int)costmap->getSizeInCellsY(); y++){
  if(xrange && y>start_y && y<end_y)
    continue;
  int index = costmap->getIndex(x,y);
  if(grid[index]!=NO_INFORMATION){
    grid[index] = NO_INFORMATION;
  }
}

but by the default in move_base.cpp,aggressive_reset distance is

reset_distance_ = 4*circumscribed_radius

so,if the obstacles far away from robot center between circumscribed_radius to 2*circumscribed_radius,the recovery_behavoir will become failure allways?

the other question is when run move_base on robot,if my robot stuck once,it seems more easy to stuck again.if you have faced the same problem?

edit retag flag offensive close merge delete