コード例 #1
0
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;
}
コード例 #2
0
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;
	}
}