Conscience Core
pathFinding.h
Go to the documentation of this file.
1 #ifndef Dijkstra_h
2 #define Dijkstra_h
3 
4 #include "CscCommon.h"
5 #include "Axiomes/Csc2dTypes.h"
6 
7 using namespace conscience_core::axiomes;
8 
10 
11 typedef int DijkstraNodeId;
12 typedef double DijkstraCost;
13 
18  : target(target), weight(weight) {}
19 };
20 
21 typedef vector<vector<child>> DijkstraAdjacency;
22 
24 public:
25  Dijkstra(vector<DijkstraNodeId> nodes, DijkstraAdjacency nodesNeighbors); // add time limit parameter ?
26  void computePaths(DijkstraNodeId source);
27  vector<DijkstraNodeId> getPath(DijkstraNodeId target);
28 
29  // set in stactic get instane
30 private:
31  vector<DijkstraNodeId> nodes;
32  DijkstraAdjacency nodesNeighbors;
33  vector<DijkstraCost> minDistance;
34  vector<DijkstraNodeId> previous;
35 };
36 
41  int width{0};
45  int height{0};
46 
50  double xMin{0};
54  double yMin{0};
58  double cellSizeX{0};
62  double cellSizeY{0};
63 
64  string toJson() const;
65 };
66 
83 vector<CscPoint2dOriented *> planHybridAStar(
84  const CscPoint2d &start,
85  double startAngleRads,
86  const CscPoint2d &goal,
87  const vector<bool> &nodesIsAccessible,
88  const Grid &grid,
89  const CscPoint2d &robotDimensions,
90  CscPoint2d **outClosestValidPosition = nullptr,
91  bool smoothingPathResult = true,
92  optional<double> distanceForAddIntermediatePoints = 10,
93  double desiredClearanceToObstacleInCm = 6,
94  bool centerInCorridors = true);
95 
96 void savePathFindingDebugFiles(const fs::path &basePath,
97  const vector<bool> &nodesIsAccessible,
98  const vector<CscPoint2dOriented *> &path,
99  const CscPoint2dOriented &robotPose, const CscPoint2d &targetPose,
100  const Grid &grid, const CscPoint2d &robotDimensions2d);
101 
105 void addLidarScanToGrid(
106  double gridXMin,
107  double gridYMin,
108  double cellSizeX,
109  double cellSizeY,
110  size_t gridWidth,
111  size_t gridHeight,
112  vector<bool> &nodesIsAccessible,
113  const map<double, double> &lidarValues,
114  const CscPoint2dOriented &robotPose);
115 
116 }
117 
118 #endif
conscience_core::ai::algorithms::path_finding::Dijkstra
Definition: pathFinding.h:23
conscience_core::ai::algorithms::path_finding::child::child
child(DijkstraNodeId target, DijkstraCost weight)
Definition: pathFinding.h:17
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:31
conscience_core::ai::algorithms::path_finding::DijkstraAdjacency
vector< vector< child > > DijkstraAdjacency
Definition: pathFinding.h:21
conscience_core::ai::algorithms::path_finding::DijkstraCost
double DijkstraCost
Definition: pathFinding.h:12
conscience_core::ai::algorithms::path_finding::DijkstraNodeId
int DijkstraNodeId
Definition: pathFinding.h:11
conscience_core::axiomes
Definition: Csc2dTypes.cpp:9
conscience_core::ai::algorithms::path_finding::child::weight
DijkstraCost weight
Definition: pathFinding.h:16
conscience_core::ai::algorithms::path_finding::savePathFindingDebugFiles
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)
Definition: HybridAStar.cpp:769
conscience_core::ai::algorithms::path_finding
Definition: Dijkstra.cpp:7
conscience_core::ai::algorithms::path_finding::planHybridAStar
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)
Definition: HybridAStar.cpp:411
conscience_core::ai::algorithms::path_finding::addLidarScanToGrid
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)
Definition: HybridAStar.cpp:868
CscCommon.h
conscience_core::axiomes::CscPoint2d
Definition: Csc2dTypes.h:21
conscience_core::ai::algorithms::path_finding::Grid
Definition: pathFinding.h:37
Csc2dTypes.h
conscience_core::bridging::commands::environment_objects::optional< double >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< double >
Definition: environmentObjectsCommands.h:367
conscience_core::axiomes::CscPoint2dOriented
Definition: Csc2dTypes.h:165
conscience_core::ai::algorithms::path_finding::child
Definition: pathFinding.h:14
conscience_core::ai::algorithms::path_finding::child::target
DijkstraNodeId target
Definition: pathFinding.h:15