GlobalPlannerResult::SmoothingOutcome Struct Reference

Why the position smoothing stage ended the way it did. More...

#include <armarx/navigation/global_planning/GlobalPlanner.h>

Public Attributes

bool collisionFree {false}
 The smoothed path passed the collision check.
 
std::size_t collisions {0}
 Number of places the rejected smoothed path fell below the clearance.
 
std::size_t endpointCollisions {0}
 Of those, how many were at a commanded endpoint or on the segment adjoining it.
 
bool geometryValid {true}
 The smoothed path was free of folds and degenerate segments.
 
float inputMinClearance {0.F}
 Smallest clearance [mm] on the path handed to the smoother, and on its result.
 
float inputSharpestTurnDeg {0.F}
 Sharpest direction change [deg] in the trajectory handed to the smoother.
 
bool judgedAgainstInput {false}
 The input was already inside the limit, so the result was judged against it.
 
float outputMinClearance {0.F}
 
bool ran {false}
 The stage ran at all (i.e. was enabled and the trajectory was long enough).
 
std::size_t repairedWaypoints {0}
 Waypoints dropped to repair a fold.
 
float worstCollisionClearance {0.F}
 Worst clearance found at any violating sample [mm].
 

Detailed Description

Why the position smoothing stage ended the way it did.

positionSmoothingApplied alone cannot distinguish a result rejected for residual collisions from one rejected for folding back on itself, and the two call for different fixes. Populated by planners that smooth; left at its defaults otherwise.

Member Data Documentation

◆ collisionFree

bool collisionFree {false}

The smoothed path passed the collision check.

◆ collisions

std::size_t collisions {0}

Number of places the rejected smoothed path fell below the clearance.

◆ endpointCollisions

std::size_t endpointCollisions {0}

Of those, how many were at a commanded endpoint or on the segment adjoining it.

The optimizer holds the start and goal fixed – the start is where the robot is and the goal is what was asked for – so a violation there is not something it could have avoided. Counted apart so a rejection rate can distinguish a path the smoother got wrong from a request it was never able to satisfy.

◆ geometryValid

bool geometryValid {true}

The smoothed path was free of folds and degenerate segments.

◆ inputMinClearance

float inputMinClearance {0.F}

Smallest clearance [mm] on the path handed to the smoother, and on its result.

◆ inputSharpestTurnDeg

float inputSharpestTurnDeg {0.F}

Sharpest direction change [deg] in the trajectory handed to the smoother.

Without it the only turn measurable from outside is the one in the returned path, which is the smoothed path when smoothing succeeded and the unsmoothed one when it did not – two different things, so comparing them across the accept/reject split says nothing. This is the same quantity for both.

◆ judgedAgainstInput

bool judgedAgainstInput {false}

The input was already inside the limit, so the result was judged against it.

◆ outputMinClearance

float outputMinClearance {0.F}

◆ ran

bool ran {false}

The stage ran at all (i.e. was enabled and the trajectory was long enough).

◆ repairedWaypoints

std::size_t repairedWaypoints {0}

Waypoints dropped to repair a fold.

Non-zero implies the path did fold, even when geometryValid ends up true because the repair succeeded.

◆ worstCollisionClearance

float worstCollisionClearance {0.F}

Worst clearance found at any violating sample [mm].


The documentation for this struct was generated from the following file: