Nav2 Navigation Stack - humble
humble
ROS 2 Navigation Stack
|
Navigation function class. Holds buffers for costmap, navfn map. Maps are pixel-based. Origin is upper left, x is right, y is down. More...
#include <nav2_navfn_planner/include/nav2_navfn_planner/navfn.hpp>
Public Member Functions | |
NavFn (int nx, int ny) | |
Constructs the planner. More... | |
void | setNavArr (int nx, int ny) |
Sets or resets the size of the map. More... | |
void | setCostmap (const COSTTYPE *cmap, bool isROS=true, bool allow_unknown=true) |
Set up the cost array for the planner, usually from ROS. More... | |
bool | calcNavFnAstar () |
Calculates a plan using the A* heuristic, returns true if one is found. More... | |
bool | calcNavFnDijkstra (bool atStart=false) |
Caclulates the full navigation function using Dijkstra. | |
float * | getPathX () |
Accessor for the x-coordinates of a path. More... | |
float * | getPathY () |
Accessor for the y-coordinates of a path. More... | |
int | getPathLen () |
Accessor for the length of a path. More... | |
float | getLastPathCost () |
Gets the cost of the path found the last time a navigation function was computed. More... | |
void | setGoal (int *goal) |
Sets the goal position for the planner. Note: the navigation cost field computed gives the cost to get to a given point from the goal, not from the start. More... | |
void | setStart (int *start) |
Sets the start position for the planner. Note: the navigation cost field computed gives the cost to get to a given point from the goal, not from the start. More... | |
void | initCost (int k, float v) |
Initialize cell k with cost v for propagation. More... | |
void | updateCell (int n) |
Updates the cell at index n. More... | |
void | updateCellAstar (int n) |
Updates the cell at index n using the A* heuristic. More... | |
void | setupNavFn (bool keepit=false) |
Set up navigation potential arrays for new propagation. More... | |
bool | propNavFnDijkstra (int cycles, bool atStart=false) |
Run propagation for <cycles> iterations, or until start is reached using breadth-first Dijkstra method. More... | |
bool | propNavFnAstar (int cycles) |
Run propagation for <cycles> iterations, or until start is reached using the best-first A* method with Euclidean distance heuristic. More... | |
int | calcPath (int n, int *st=NULL) |
Calculates the path for at mose <n> cycles. More... | |
float | gradCell (int n) |
Calculate gradient at a cell. More... | |
Public Attributes | |
int | nx |
int | ny |
int | ns |
COSTTYPE * | costarr |
float * | potarr |
bool * | pending |
int | nobs |
int * | pb1 |
int * | pb2 |
int * | pb3 |
int * | curP |
int * | nextP |
int * | overP |
int | curPe |
int | nextPe |
int | overPe |
float | curT |
float | priInc |
int | goal [2] |
int | start [2] |
float * | gradx |
float * | grady |
float * | pathx |
float * | pathy |
int | npath |
int | npathbuf |
float | last_path_cost_ |
float | pathStep |
Navigation function class. Holds buffers for costmap, navfn map. Maps are pixel-based. Origin is upper left, x is right, y is down.
nav2_navfn_planner::NavFn::NavFn | ( | int | nx, |
int | ny | ||
) |
bool nav2_navfn_planner::NavFn::calcNavFnAstar | ( | ) |
Calculates a plan using the A* heuristic, returns true if one is found.
Definition at line 310 of file navfn.cpp.
References propNavFnAstar(), and setupNavFn().
int nav2_navfn_planner::NavFn::calcPath | ( | int | n, |
int * | st = NULL |
||
) |
Calculates the path for at mose <n> cycles.
n | The maximum number of cycles to run for |
Definition at line 756 of file navfn.cpp.
References gradCell(), gradx, grady, npath, npathbuf, ns, pathStep, pathy, and potarr.
float nav2_navfn_planner::NavFn::getLastPathCost | ( | ) |
Gets the cost of the path found the last time a navigation function was computed.
Definition at line 738 of file navfn.cpp.
References last_path_cost_.
int nav2_navfn_planner::NavFn::getPathLen | ( | ) |
float * nav2_navfn_planner::NavFn::getPathX | ( | ) |
float * nav2_navfn_planner::NavFn::getPathY | ( | ) |
float nav2_navfn_planner::NavFn::gradCell | ( | int | n | ) |
void nav2_navfn_planner::NavFn::initCost | ( | int | k, |
float | v | ||
) |
Initialize cell k with cost v for propagation.
k | the cell to initialize |
v | the cost to give to the cell |
Definition at line 400 of file navfn.cpp.
References potarr.
Referenced by setupNavFn().
bool nav2_navfn_planner::NavFn::propNavFnAstar | ( | int | cycles | ) |
Run propagation for <cycles> iterations, or until start is reached using the best-first A* method with Euclidean distance heuristic.
cycles | The maximum number of iterations to run for |
Definition at line 657 of file navfn.cpp.
References curT, last_path_cost_, nobs, ns, overP, overPe, pending, potarr, priInc, and updateCellAstar().
Referenced by calcNavFnAstar().
bool nav2_navfn_planner::NavFn::propNavFnDijkstra | ( | int | cycles, |
bool | atStart = false |
||
) |
Run propagation for <cycles> iterations, or until start is reached using breadth-first Dijkstra method.
cycles | The maximum number of iterations to run for |
atStart | Whether or not to stop when the start point is reached |
Definition at line 576 of file navfn.cpp.
References curT, nobs, ns, overP, overPe, pending, potarr, priInc, and updateCell().
Referenced by calcNavFnDijkstra().
void nav2_navfn_planner::NavFn::setCostmap | ( | const COSTTYPE * | cmap, |
bool | isROS = true , |
||
bool | allow_unknown = true |
||
) |
void nav2_navfn_planner::NavFn::setGoal | ( | int * | goal | ) |
void nav2_navfn_planner::NavFn::setNavArr | ( | int | nx, |
int | ny | ||
) |
void nav2_navfn_planner::NavFn::setStart | ( | int * | start | ) |
void nav2_navfn_planner::NavFn::setupNavFn | ( | bool | keepit = false | ) |
Set up navigation potential arrays for new propagation.
keepit | whether or not use COST_NEUTRAL |
Definition at line 341 of file navfn.cpp.
References costarr, curT, gradx, grady, initCost(), nobs, ns, overP, overPe, pb1, pb3, pending, and potarr.
Referenced by calcNavFnAstar(), and calcNavFnDijkstra().
|
inline |
|
inline |
COSTTYPE* nav2_navfn_planner::NavFn::costarr |
cell arrays cost array in 2D configuration space
Definition at line 168 of file navfn.hpp.
Referenced by NavFn(), setCostmap(), setNavArr(), setupNavFn(), updateCell(), and updateCellAstar().
float nav2_navfn_planner::NavFn::curT |
block priority thresholds current threshold
Definition at line 179 of file navfn.hpp.
Referenced by propNavFnAstar(), propNavFnDijkstra(), setupNavFn(), updateCell(), and updateCellAstar().
float* nav2_navfn_planner::NavFn::gradx |
gradient and paths
Definition at line 246 of file navfn.hpp.
Referenced by calcPath(), gradCell(), NavFn(), setNavArr(), and setupNavFn().
float * nav2_navfn_planner::NavFn::grady |
gradient arrays, size of potential array
Definition at line 246 of file navfn.hpp.
Referenced by calcPath(), gradCell(), NavFn(), setNavArr(), and setupNavFn().
float nav2_navfn_planner::NavFn::last_path_cost_ |
Holds the cost of the path found the last time A* was called
Definition at line 251 of file navfn.hpp.
Referenced by getLastPathCost(), and propNavFnAstar().
int nav2_navfn_planner::NavFn::nobs |
number of obstacle cells
Definition at line 171 of file navfn.hpp.
Referenced by propNavFnAstar(), propNavFnDijkstra(), and setupNavFn().
int nav2_navfn_planner::NavFn::npath |
number of path points
Definition at line 248 of file navfn.hpp.
Referenced by calcPath(), getPathLen(), and NavFn().
int nav2_navfn_planner::NavFn::npathbuf |
size of pathx, pathy buffers
Definition at line 249 of file navfn.hpp.
Referenced by calcPath(), and NavFn().
int nav2_navfn_planner::NavFn::ns |
size of grid, in pixels
Definition at line 121 of file navfn.hpp.
Referenced by calcPath(), gradCell(), propNavFnAstar(), propNavFnDijkstra(), setNavArr(), and setupNavFn().
int * nav2_navfn_planner::NavFn::overP |
priority buffer block ptrs
Definition at line 175 of file navfn.hpp.
Referenced by propNavFnAstar(), propNavFnDijkstra(), and setupNavFn().
int nav2_navfn_planner::NavFn::overPe |
end points of arrays
Definition at line 176 of file navfn.hpp.
Referenced by propNavFnAstar(), propNavFnDijkstra(), and setupNavFn().
float nav2_navfn_planner::NavFn::pathStep |
step size for following gradient
Definition at line 267 of file navfn.hpp.
Referenced by calcPath(), and NavFn().
float * nav2_navfn_planner::NavFn::pathy |
path points, as subpixel cell coordinates
Definition at line 247 of file navfn.hpp.
Referenced by calcPath(), getPathY(), and NavFn().
int* nav2_navfn_planner::NavFn::pb1 |
block priority buffers
Definition at line 174 of file navfn.hpp.
Referenced by NavFn(), and setupNavFn().
int * nav2_navfn_planner::NavFn::pb3 |
storage buffers for priority blocks
Definition at line 174 of file navfn.hpp.
Referenced by NavFn(), and setupNavFn().
bool* nav2_navfn_planner::NavFn::pending |
pending cells during propagation
Definition at line 170 of file navfn.hpp.
Referenced by NavFn(), propNavFnAstar(), propNavFnDijkstra(), setNavArr(), and setupNavFn().
float* nav2_navfn_planner::NavFn::potarr |
potential array, navigation function potential
Definition at line 169 of file navfn.hpp.
Referenced by calcPath(), gradCell(), initCost(), NavFn(), propNavFnAstar(), propNavFnDijkstra(), setNavArr(), setupNavFn(), updateCell(), and updateCellAstar().
float nav2_navfn_planner::NavFn::priInc |
priority threshold increment
Definition at line 180 of file navfn.hpp.
Referenced by NavFn(), propNavFnAstar(), and propNavFnDijkstra().