Classes | |
| struct | child |
| class | Dijkstra |
| struct | Grid |
Typedefs | |
| using | State = tuple< int, int, int > |
| using | QElem = std::pair< double, State > |
| typedef int | DijkstraNodeId |
| typedef double | DijkstraCost |
| typedef vector< vector< child > > | DijkstraAdjacency |
Functions | |
| vector< CscPoint2dOriented * > | planHybridAStar (const CscPoint2d &start, double startAngleRads, const CscPoint2d &goal, const vector< bool > &nodesIsAccessible, const Grid &grid, const CscPoint2d &robotDimensions, CscPoint2d **outClosestValidPosition, bool smoothingPathResult, optional< double > distanceForAddIntermediatePoints, double desiredClearanceToObstacleInCm, bool centerInCorridors) |
| void | savePathFindingDebugFiles (const fs::path &basePath, const vector< bool > &nodesIsAccessible, const vector< CscPoint2dOriented * > &path, const CscPoint2dOriented &robotPose, const CscPoint2d &targetPose, const Grid &grid, const CscPoint2d &robotDimensions2d) |
| void | addLidarScanToGrid (double gridXMin, double gridYMin, double cellSizeX, double cellSizeY, size_t gridWidth, size_t gridHeight, vector< bool > &nodesIsAccessible, const map< double, double > &lidarValues, const CscPoint2dOriented &robotPose) |
Variables | |
| std::unique_ptr< CscLogger > | logger = CscLogger::getForCategory("Dijkstra Algorithm") |
| const DijkstraCost | MAX_WEIGHT = numeric_limits<double>::infinity() |
| typedef vector<vector<child> > conscience_core::ai::algorithms::path_finding::DijkstraAdjacency |
| typedef double conscience_core::ai::algorithms::path_finding::DijkstraCost |
| using conscience_core::ai::algorithms::path_finding::QElem = typedef std::pair<double, State> |
| using conscience_core::ai::algorithms::path_finding::State = typedef tuple<int, int, int> |
| void conscience_core::ai::algorithms::path_finding::addLidarScanToGrid | ( | double | gridXMin, |
| double | gridYMin, | ||
| double | cellSizeX, | ||
| double | cellSizeY, | ||
| size_t | gridWidth, | ||
| size_t | gridHeight, | ||
| vector< bool > & | nodesIsAccessible, | ||
| const map< double, double > & | lidarValues, | ||
| const CscPoint2dOriented & | robotPose | ||
| ) |
| lidarValues | Distance (in centimeters) by angle from robot center, by angles in degrees from 0 in front of the robot to 360 rotating to the right |
| vector< CscPoint2dOriented * > conscience_core::ai::algorithms::path_finding::planHybridAStar | ( | const CscPoint2d & | start, |
| double | startAngleRads, | ||
| const CscPoint2d & | goal, | ||
| const vector< bool > & | nodesIsAccessible, | ||
| const Grid & | grid, | ||
| const CscPoint2d & | robotDimensions, | ||
| CscPoint2d ** | outClosestValidPosition, | ||
| bool | smoothingPathResult, | ||
| optional< double > | distanceForAddIntermediatePoints, | ||
| double | desiredClearanceToObstacleInCm, | ||
| bool | centerInCorridors | ||
| ) |
Planner with adaptive stop and empty-path on failure.
Computes Hybrid A* algorithm based on following parameters.
| start | start position in 2D reference frame |
| startAngleRads | start angle - yaw from pi (left) to -pi (right) |
| goal | target position in 2D reference frame |
| nodesIsAccessible | occupandy values -> each value is a cell of the grid (see grid param). index = i + j * gridColumnCount, true if accessible, false is not accessible |
| grid | grid characteristics, such as width & height in 2D referential, position in 2D referential (xMin, yMin |
| robotDimensions | robot dimensions in 2D reference frame |
| outClosestValidPosition | if not nullptr, pointer will be set to the closest valid position |
| smoothingPathResult | If true, enables path smoothing to reduce small turns and generate a straighter path while avoiding collisions with obstacles. |
| distanceForAddIntermediatePoints | insert Intermediate points evry X cm. If empty optional, no add intermediate points. |
| void conscience_core::ai::algorithms::path_finding::savePathFindingDebugFiles | ( | const fs::path & | basePath, |
| const vector< bool > & | nodesIsAccessible, | ||
| const vector< CscPoint2dOriented * > & | path, | ||
| const CscPoint2dOriented & | robotPose, | ||
| const CscPoint2d & | targetPose, | ||
| const Grid & | grid, | ||
| const CscPoint2d & | robotDimensions2d | ||
| ) |
| static auto conscience_core::bridging::commands::logger = CscLogger::getForCategory("Dijkstra Algorithm") |
| const DijkstraCost conscience_core::ai::algorithms::path_finding::MAX_WEIGHT = numeric_limits<double>::infinity() |