Ejemplo n.º 1
0
void
initialize_map( carmen_vascocore_map_t * map,
		int sx, int sy, int center_x, int center_y,
		double resolution, carmen_point_t start )
{
  int x, y;

  map->mapsize.x  = sx;
  map->mapsize.y  = sy;
  map->resolution = resolution;
  map->offset     = start;
  if (carmen_vascocore_settings.verbose) {
    fprintf( stderr, "* INFO: allocating memory ... " );
  }
  map->updated  = carmen_mdalloc( 2, sizeof(unsigned char),  sx, sy );
  carmen_test_alloc(map->updated);
  map->maphit   = carmen_mdalloc( 2, sizeof(float),  sx, sy );
  carmen_test_alloc(map->maphit);
  map->mapsum   = carmen_mdalloc( 2, sizeof(short),  sx, sy );
  carmen_test_alloc(map->mapsum);
  map->mapprob  = carmen_mdalloc( 2, sizeof(float), sx, sy );
  carmen_test_alloc(map->mapprob);
  map->calc     = carmen_mdalloc( 2, sizeof(float), sx, sy );
  carmen_test_alloc(map->calc);
  if (carmen_vascocore_settings.verbose) {
    fprintf( stderr, "done\n" );
  }
  map->center.x = center_x;
  map->center.y = center_y;

  if (carmen_vascocore_settings.verbose) {
    fprintf( stderr, "* INFO: map:            %d %d\n",
	     map->mapsize.x, map->mapsize.y );
    fprintf( stderr, "* INFO: center:         %.1f %.1f\n",
	     map->center.x, map->center.y );
    fprintf( stderr, "* INFO: resolution:      %.2f\n",
	     map->resolution );
    fprintf( stderr, "* INFO: real-size:      [%.1f %.1f] [%.1f %.1f]\n",
	     -sx*map->resolution, sx*map->resolution,
	     -sy*map->resolution, sy*map->resolution );
    fprintf( stderr, "***************************************\n" );
  }
  
  for (x=0;x<sx;x++) {
    for (y=0;y<sy;y++) {
      map->mapprob[x][y] = carmen_vascocore_settings.local_map_std_val;
      map->calc[x][y]    = carmen_vascocore_settings.local_map_std_val;
      map->maphit[x][y]  = 0.0;
      map->mapsum[x][y]  = 0;
      map->updated[x][y]  = UPDT_NOT;
    }
  }
  initialize_qtree( &(map->qtree), sx, sy );
}
Ejemplo n.º 2
0
Archivo: map.c Proyecto: lixiao89/MBot
void
initialize_map( MAP2 *map, int sx, int sy, int center_x, int center_y,
		double resolution, logtools_rpos2_t start )
{
  int x, y, j;

  map->mapsize.x  = sx;
  map->mapsize.y  = sy;
  map->resolution = resolution;
  map->offset     = start;

  fprintf( stderr, "* INFO: allocating memory ... " );

  if (1) {
    map->updated  =
      (unsigned char **) mdalloc( 2, sizeof(unsigned char),  sx, sy );
    map->maphit   = (float **) mdalloc( 2, sizeof(float),  sx, sy );
    map->mapsum   = (short **) mdalloc( 2, sizeof(short),  sx, sy );
    map->mapprob  = (float **) mdalloc( 2, sizeof(float), sx, sy );
    map->calc     = (float **) mdalloc( 2, sizeof(float), sx, sy );
  } else {
    map->updated  =
      (unsigned char **) malloc( sx * sizeof(unsigned char *) );
    map->maphit  =
      (float **) malloc( sx * sizeof(float *) );
    map->mapsum  =
      (short **) malloc( sx * sizeof(short *) );
    map->mapprob  =
    (float **) malloc( sx * sizeof(float *) );
    map->calc  =
      (float **) malloc( sx * sizeof(float *) );
    for (j=0; j<sx; j++) {
      map->updated[j]  =
	(unsigned char *) malloc( sy * sizeof(unsigned char) );
      map->maphit[j]  =
	(float *) malloc( sy * sizeof(float) );
      map->mapsum[j]  =
	(short *) malloc( sy * sizeof(short) );
      map->mapprob[j]  =
	(float *) malloc( sy * sizeof(float) );
      map->calc[j]  =
	(float *) malloc( sy * sizeof(float) );
    }
  }
  fprintf( stderr, "done\n" );
  map->center.x = center_x;
  map->center.y = center_y;

  fprintf( stderr, "* INFO: map:            %d %d\n",
	   map->mapsize.x, map->mapsize.y );
  fprintf( stderr, "* INFO: center:         %.1f %.1f\n",
	   map->center.x, map->center.y );
  fprintf( stderr, "* INFO: resolution:      %.2f\n",
	   map->resolution );
  fprintf( stderr, "* INFO: real-size:      [%.1f %.1f] [%.1f %.1f]\n",
	   -sx*map->resolution, sx*map->resolution,
	   -sy*map->resolution, sy*map->resolution );
  fprintf( stderr, "***************************************\n" );
  fprintf( stderr, "* INFO: clearing map ... " );

  for (x=0;x<sx;x++) {
    for (y=0;y<sy;y++) {
      map->mapprob[x][y] = settings.local_map_std_val;
      map->calc[x][y]    = settings.local_map_std_val;
      map->maphit[x][y]  = 0.0;
      map->mapsum[x][y]  = 0;
      map->updated[x][y]  = UPDT_NOT;
    }
  }
  initialize_qtree( &(map->qtree), sx, sy );
  fprintf( stderr, "***************************************\n" );
}