void grid_mapping_change_map_origin_to_another_map_block(carmen_position_t *map_origin) { static int first_time = 1; carmen_map_t new_carmen_map; new_carmen_map.complete_map = NULL; if (first_time) { x_origin = map_origin->x; y_origin = map_origin->y; first_time = 0; } //verify if its necessery to change the map if (carmen_grid_mapping_is_map_changed(map_origin, x_origin, y_origin)) { x_origin = map_origin->x; y_origin = map_origin->y; carmen_grid_mapping_update_map_buffer(&carmen_map); carmen_grid_mapping_get_buffered_map(x_origin, y_origin, &new_carmen_map); //destroy current map and assign new map to current map carmen_grid_mapping_switch_maps(&carmen_map, &new_carmen_map); } carmen_map.config.x_origin = x_origin; carmen_map.config.y_origin = y_origin; }
void localalize_using_map_change_map_origin_to_another_map_block(carmen_position_t *map_origin) { static int first_time = 1; static carmen_map_t new_sum_remission_map, new_sum_sqr_remission_map, new_count_remission_map; if (first_time) { g_map_origin = (*map_origin); carmen_grid_mapping_create_new_map(&new_sum_remission_map, sum_remission_map.config.x_size, sum_remission_map.config.y_size, sum_remission_map.config.resolution); carmen_grid_mapping_create_new_map(&new_sum_sqr_remission_map, sum_sqr_remission_map.config.x_size, sum_sqr_remission_map.config.y_size, sum_sqr_remission_map.config.resolution); carmen_grid_mapping_create_new_map(&new_count_remission_map, count_remission_map.config.x_size, count_remission_map.config.y_size, count_remission_map.config.resolution); first_time = 0; } //verify if its necessery to change the map if (carmen_grid_mapping_is_map_changed(map_origin, g_map_origin.x, g_map_origin.y)) { g_map_origin = *map_origin; carmen_point_t pose; pose.x = robot_pose.position.x; pose.y = robot_pose.position.y; pose.theta = robot_pose.orientation.yaw; carmen_grid_mapping_change_blocks_map_by_origin(pose, &sum_remission_map, &new_sum_remission_map); carmen_grid_mapping_change_blocks_map_by_origin(pose, &sum_sqr_remission_map, &new_sum_sqr_remission_map); carmen_grid_mapping_change_blocks_map_by_origin(pose, &count_remission_map, &new_count_remission_map); carmen_grid_mapping_swap_maps_and_clear_old_map(&sum_remission_map, &new_sum_remission_map); carmen_grid_mapping_swap_maps_and_clear_old_map(&sum_sqr_remission_map, &new_sum_sqr_remission_map); carmen_grid_mapping_swap_maps_and_clear_old_map(&count_remission_map, &new_count_remission_map); sum_remission_map.config.x_origin = g_map_origin.x; sum_remission_map.config.y_origin = g_map_origin.y; sum_sqr_remission_map.config.x_origin = g_map_origin.x; sum_sqr_remission_map.config.y_origin = g_map_origin.y; count_remission_map.config.x_origin = g_map_origin.x; count_remission_map.config.y_origin = g_map_origin.y; } }