void map_update_handler(carmen_map_t *new_map) 
{
  carmen_map_destroy(&map);
  map = carmen_map_copy(new_map);
  if (is_graphics_up)
    navigator_graphics_change_map(map);
}
void
behavior_selector_update_map(carmen_map_t *map, int *goal_list_updated)
{
	if (current_map)
		carmen_map_destroy(&current_map);

	current_map = carmen_map_clone(map);

	if (current_goal_source != CARMEN_BEHAVIOR_SELECTOR_USER_GOAL)
	{
		update_goal_index_to_next_collision_free_goal();
		*goal_list_updated = 1;
	}
	else
		*goal_list_updated = 0;
}
void navigator_get_map(carmen_navigator_map_t type) 
{
  carmen_map_t new_map;
  int index;

  memset(&new_map, 0, sizeof(carmen_map_t));

  if (type == CARMEN_LOCALIZE_LMAP_v || type == CARMEN_LOCALIZE_GMAP_v) {
    if (type == CARMEN_LOCALIZE_LMAP_v) 
      carmen_localize_get_map(0, &new_map);
    else
      carmen_localize_get_map(1, &new_map);
    
    if (new_map.complete_map == NULL)
      return;
    
    for (index = 0; index < new_map.config.x_size*new_map.config.y_size; 
	 index++) 
      new_map.complete_map[index] = exp(new_map.complete_map[index]);
  } else {
    carmen_navigator_get_map(type, &new_map);
    
    if (new_map.complete_map == NULL)
      return;
    
  }

  /*
  if (map && strcmp(map->config.map_name, new_map.config.map_name) == 0) {
    if (is_graphics_up)
      navigator_graphics_display_map(new_map.complete_map, type);
    return;
  }
  */
  
  if (map) 
    carmen_map_destroy(&map);
  
  map = (carmen_map_t *)calloc(1, sizeof(carmen_map_t));
  carmen_test_alloc(map);

  *map = new_map;
  
  if (is_graphics_up)
    navigator_graphics_change_map(map);
}