This class takes a path object and smoothes the nodes of the path. More...
#include <smoother.h>
Public Member Functions | |
| void | smoothPath (DynamicVoronoi &voronoi) | 
| This function takes a path consisting of nodes and attempts to iteratively smooth the same using gradient descent.  More... | |
| double | tracePath (const Node3D *node, int i=0, std::vector< Node3D > path=std::vector< Node3D >(), double length=0) | 
| Given a node pointer the path to the root node will be traced recursively.  More... | |
| std::vector< Node3D > | getPath () | 
| returns the path of the smoother object  | |
| Vector2D | obstacleTerm (Vector2D xi) | 
| obstacleCost - pushes the path away from obstacles  | |
| Vector2D | curvatureTerm (Vector2D xi0, Vector2D xi1, Vector2D xi2) | 
| curvatureCost - forces a maximum curvature of 1/R along the path ensuring drivability  | |
| Vector2D | smoothnessTerm (Vector2D xim2, Vector2D xim1, Vector2D xi, Vector2D xip1, Vector2D xip2) | 
| smoothnessCost - attempts to spread nodes equidistantly and with the same orientation  | |
| Vector2D | voronoiTerm () | 
| voronoiCost - trade off between path length and closeness to obstaclesg  | |
| bool | isOnGrid (Vector2D vec) | 
| a boolean test, whether vector is on the grid or not  | |
Private Attributes | |
| float | kappaMax = 1.f / (Constants::r * 1.1) | 
| maximum possible curvature of the non-holonomic vehicle  | |
| float | obsDMax = Constants::minRoadWidth | 
| maximum distance to obstacles that is penalized  | |
| float | vorObsDMax = Constants::minRoadWidth | 
| maximum distance for obstacles to influence the voronoi field  | |
| float | alpha = 0.1 | 
| falloff rate for the voronoi field  | |
| float | wObstacle = 0.2 | 
| weight for the obstacle term  | |
| float | wVoronoi = 0 | 
| weight for the voronoi term  | |
| float | wCurvature = 0 | 
| weight for the curvature term  | |
| float | wSmoothness = 0.2 | 
| weight for the smoothness term  | |
| DynamicVoronoi | voronoi | 
| voronoi diagram describing the topology of the map  | |
| int | width | 
| width of the map  | |
| int | height | 
| height of the map  | |
| std::vector< Node3D > | path | 
| path to be smoothed  | |
This class takes a path object and smoothes the nodes of the path.
It also uses the Voronoi diagram as well as the configuration space.
| void Smoother::smoothPath | ( | DynamicVoronoi & | voronoi | ) | 
This function takes a path consisting of nodes and attempts to iteratively smooth the same using gradient descent.
During the different interations the following cost are being calculated obstacleCost curvatureCost smoothnessCost voronoiCost
| double Smoother::tracePath | ( | const Node3D * | node, | 
| int | i = 0,  | 
        ||
| std::vector< Node3D > | path = std::vector<Node3D>(),  | 
        ||
| double | length = 0  | 
        ||
| ) | 
Given a node pointer the path to the root node will be traced recursively.
| node | a 3D node, usually the goal node | 
| i | a parameter for counting the number of nodes | 
 1.8.6