Conscience Core
CscMrptAutonomousExploration.h
Go to the documentation of this file.
1 //
2 // Created by Louis Grignon on 08/08/2025.
3 //
4 
5 #ifndef CSCMRPTAUTONOMOUSEXPLORATION_H
6 #define CSCMRPTAUTONOMOUSEXPLORATION_H
7 
9 
10 #include <Lidar/CscSlamEngine.h>
12 
13 using namespace conscience_core::lidar;
15 namespace conscience_core::ai {
16 class CscEntityReflexion;
17 
19 public:
21  const ptr<CscEntityReflexion> &entityReflexion,
22  CscSlamEngine *slamEngine,
23  CscEnvironmentSimulator &environmentSimulator,
24  const CscEntityModel *entityModel,
25  double minX, double minY, double maxX, double maxY);
27 
28  void update(double nowSec);
29 
30  bool isStarted() const;
31  void stop();
32  void restart();
33 
34 private:
35  CscEnvironmentSimulator &environmentSimulator;
36  CscSlamEngine *slamEngine = nullptr;
37  const CscEntityModel *entityModel = nullptr;
38 
39  ptr<CscEntityReflexion> entityReflexion = nullptr;
40  bool started = true;
41 
42  bool moveRobotToPosition2d(const TPoint2D &target);
43  vector<TPoint2D> detectFrontiers(const COccupancyGridMap2D &map);
44 
45  // Bounds
46  const double minX, minY, maxX, maxY;
47 
48  // robot bbox
49  const CscSize3d robotDimensionsConscienceRefFrame;
50  const double robotRadiusMeters;
51  const double robotReachedKnownFrontierDistanceMeters;
52  const double mobileDistanceThresholdMeters;
53  const CscPoint2d robotDimensionsMrpt;
54 
55  optional<TPoint2D> adjustedTarget = {};
56  optional<TPoint2D> immobilityCheckRefPosition = {};
57  std::chrono::steady_clock::time_point lastMoveTime = std::chrono::steady_clock::now();
58 
59  // Planner state
60  vector<TPoint2D> frontiers;
61  double lastPlanTime = -1;
62  size_t noFrontiersTickCount = 0;
63  size_t retryOldFrontiersCount = 0;
64  vector<TPose2D> lastPath;
65  vector<TPoint2D> frontiersBeforeMovingToFindNewFrontiers;
66 
67  size_t cannotMoveToFrontiersTickCount = 0;
68 
69  std::thread *moveThread = nullptr;
70  ptr<CommandSmallMoveToBestDirection> currentMoveToRestoreExplorationCommand = nullptr;
71 
72  void startMoveToRestoreExplorationAsync();
73  void stopAllSequences();
74  void stopRobotWheels();
75  void moveRobotWheels(double leftPercent, double rightPercent);
76 
77  void saveExplorationDebugFiles(const ptr<COccupancyGridMap2D> &map, const TPose2D &pose, optional<TPoint2D> selectedTarget, const string &suffix = "");
78 };
79 }
80 
81 #endif // CSCMRPTAUTONOMOUSEXPLORATION_H
conscience_core::axiomes::CscPoint3d
The CscPoint3d class represents a point in three-dimensional space. It is primarily used to denote a ...
Definition: Csc3dTypes.h:24
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:31
conscience_core::ai
Definition: alerts.cpp:12
CscEntityModel
Definition: CscEntityModel.h:54
CscSlamEngine.h
conscience_core::lidar
Definition: CscEntityReflexion.h:42
conscience_core::bridging::commands::environment_entities::stopAllSequences
void stopAllSequences(const ptr< CscEntityReflexion > &entityReflexion, CscEnvironmentSimulator &environmentSimulator)
Definition: environmentEntitiesCommands.cpp:61
conscience_core::ai::CscEntityReflexion
Definition: CscEntityReflexion.h:389
conscience_core::bridging::commands::environment_entities
Definition: CommandEntityToOrientation.cpp:14
environmentEntitiesCommands.h
conscience_core::axiomes::CscPoint2d
Definition: Csc2dTypes.h:21
conscience_core::ai::CscMrptAutonomousExploration
Definition: CscMrptAutonomousExploration.h:18
conscience_core::bridging::commands::environment_entities::stopRobotWheels
void stopRobotWheels(const ptr< CscEntityReflexion > &entityReflexion)
Definition: environmentEntitiesCommands.cpp:1675
conscience_core::lidar::CscSlamEngine
Definition: CscSlamEngine.h:49
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:35
CscEntityModel.h
conscience_core::bridging::commands::environment_entities::moveRobotWheels
void moveRobotWheels(const ptr< CscEntityReflexion > &entityReflexion, double leftPercent, double rightPercent)
Definition: environmentEntitiesCommands.cpp:1670
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29