|
|
The maximum permissible linear velocity as a function of the distance to the closest obstacle. More...
#include <armarx/navigation/algorithms/ObstacleAwareVelocityLimit.h>
Classes | |
| struct | Parameters |
Public Member Functions | |
| std::vector< float > | at (const core::Positions &positions) const |
| float | at (const Eigen::Vector2f &position) const |
| The limit at a position in the costmap's global frame. | |
| float | atDistance (float obstacleDistance) const |
| The limit for a given distance to the closest obstacle [mm]. | |
| ObstacleAwareVelocityLimit (const Costmap &costmap, const Parameters ¶ms) | |
| const Parameters & | params () const noexcept |
The maximum permissible linear velocity as a function of the distance to the closest obstacle.
The limit decays from maxVelocity in free space to maxVelocity / (1 + weight) at zero clearance:
![\[ v_{max}(d) = \frac{v_{max}}{1 + w \left(1 - \frac{\min(d, d_{max})}{d_{max}}\right)^{e}}
\]](../../form_41.png)
This used to live as a private member function of global_planning::SPFAImpl, duplicated once more in its final velocity clamp. It is a standalone concept, so it lives here and can be used to verify a trajectory produced by any planner: for a path that respects the limit, at(position) >= velocity holds at every trajectory point.
| ObstacleAwareVelocityLimit | ( | const Costmap & | costmap, |
| const Parameters & | params ) |
| std::vector< float > at | ( | const core::Positions & | positions | ) | const |
| float at | ( | const Eigen::Vector2f & | position | ) | const |
The limit at a position in the costmap's global frame.
Cells without costmap information (masked out) are treated as zero clearance, i.e. the most restrictive limit. Not knowing how far away the obstacles are is not a reason to drive fast.
The limit for a given distance to the closest obstacle [mm].
|
noexcept |