struct mp2p_icp_filters::FilterTraversability::Parameters

Overview

#include <FilterTraversability.h>

struct Parameters
{
    // fields

    std::string input_pointcloud_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW;
    std::string seeds_pointcloud_layer;
    std::string output_layer_obstacles;
    std::string output_layer_traversable;
    float resolution = 0.20f;
    float max_slope_deg = 15.0f;
    float slope_window_radius = 0.40f;
    float max_step = 0.15f;
    float body_min_height = 0.25f;
    float body_max_height = 1.20f;
    uint32_t body_min_points = 2;
    float ground_envelope_size = 1.0f;
    float ground_envelope_slope_deg = 30.0f;
    float ground_fill_distance = 1.0f;
    float seeds_radius = 0.30f;
    bool unknown_is_obstacle = true;
    float obstacle_distance = 2.0f;

    // methods

    void load_from_yaml(
        const mrpt::containers::yaml& c,
        FilterTraversability& parent
        );
};

Fields

std::string input_pointcloud_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW

Input 3D point cloud, typically without dynamic objects

std::string seeds_pointcloud_layer

Optional layer with seed points known to be traversable (e.g. the vehicle trajectory). Enables the reachability analysis.

std::string output_layer_obstacles

Output layer for the obstacle cells

std::string output_layer_traversable

Optional output layer for the traversable (reachable) cells

float resolution = 0.20f

Grid cell size [m]

float max_slope_deg = 15.0f

Maximum traversable slope [deg]

float slope_window_radius = 0.40f

Half size of the window to fit the ground plane for the slope [m]

float max_step = 0.15f

Maximum ground height change between neighbor cells [m]

float body_min_height = 0.25f

Height band of the vehicle body above the ground [m]

uint32_t body_min_points = 2

Minimum points in the body band to mark a cell as obstacle

float ground_envelope_size = 1.0f

Window for the lower envelope of the ground [m]

float ground_envelope_slope_deg = 30.0f

Slope tolerated within the ground envelope window [deg]

float ground_fill_distance = 1.0f

Maximum distance to interpolate ground into cells where it was not seen (only non-ground points, or no points at all) [m]

float seeds_radius = 0.30f

Radius around each seed point that is traversable [m]

bool unknown_is_obstacle = true

Whether never observed cells bordering the reachable region are obstacles

float obstacle_distance = 2.0f

Non traversable cells up to this distance from the reachable region are obstacles [m]