CommandRampCheck Struct Reference

How far a velocity profile asks for more than the device command ramp can deliver. More...

#include <armarx/navigation/applications/global_planning_analysis/reparametrization.h>

Public Attributes

std::vector< std::pair< float, float > > spans
 Arc-length spans in which the demand exceeds the ramp, for the plot.
 
float terminalStoppingDistance {0.F}
 Distance the ramp needs to stop from the profile's final velocity [mm].
 
bool terminalVelocityExceedsBoundary {false}
 Whether the profile ends above boundaryVelocity, i.e. faster than by design.
 
std::size_t violations {0}
 Waypoints demanding more than the ramp can deliver.
 
float worstArcLength {0.F}
 
float worstDemand {0.F}
 Largest demanded tangential acceleration [mm/s^2], and where along the path it is.
 
float worstLimit {0.F}
 The bound that was exceeded there [mm/s^2].
 

Detailed Description

How far a velocity profile asks for more than the device command ramp can deliver.

A GlobalTrajectory stores a speed per position, so the tangential acceleration it implies is v * dv/ds. Nothing in the planning stack compares that against the ramp in Velocity.cpp, which is the actual bottleneck: TOPPRA is bounded by motor torque and happily plans an 873 mm/s^2 stop that the configured 400 mm/s^2 ramp cannot execute, and the base sails past the goal.

Definition at line 48 of file reparametrization.h.

Member Data Documentation

◆ spans

std::vector<std::pair<float, float> > spans

Arc-length spans in which the demand exceeds the ramp, for the plot.

Definition at line 61 of file reparametrization.h.

◆ terminalStoppingDistance

float terminalStoppingDistance {0.F}

Distance the ramp needs to stop from the profile's final velocity [mm].

A flat profile passes the v * dv/ds test everywhere and still overshoots, because it simply ends at speed: nothing in a GlobalTrajectory says the robot has to be able to stop. This is the number that predicts the overshoot.

Definition at line 68 of file reparametrization.h.

◆ terminalVelocityExceedsBoundary

bool terminalVelocityExceedsBoundary {false}

Whether the profile ends above boundaryVelocity, i.e. faster than by design.

Definition at line 71 of file reparametrization.h.

◆ violations

std::size_t violations {0}

Waypoints demanding more than the ramp can deliver.

Definition at line 51 of file reparametrization.h.

◆ worstArcLength

float worstArcLength {0.F}

Definition at line 55 of file reparametrization.h.

◆ worstDemand

float worstDemand {0.F}

Largest demanded tangential acceleration [mm/s^2], and where along the path it is.

Definition at line 54 of file reparametrization.h.

◆ worstLimit

float worstLimit {0.F}

The bound that was exceeded there [mm/s^2].

Definition at line 58 of file reparametrization.h.


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