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 
16 namespace conscience_core::ai {
17 class CscEntityReflexion;
18 
20 public:
22  const ptr<CscEntityReflexion> &entityReflexion,
23  CscSlamEngine *slamEngine,
24  CscEnvironmentSimulator &environmentSimulator,
25  const CscEntityModel *entityModel,
26  double minX, double minY, double maxX, double maxY);
28 
29  void update(double nowSec);
30 
31  bool isStarted() const;
32  void stop();
33  void restart();
34 
35 private:
36  CscEnvironmentSimulator &environmentSimulator;
37  CscSlamEngine *slamEngine = nullptr;
38  const CscEntityModel *entityModel = nullptr;
39 
40  ptr<CscEntityReflexion> entityReflexion = nullptr;
41  bool started = true;
42 
43  bool moveRobotToPosition2d(const TPoint2D &target);
44  vector<TPoint2D> detectFrontiers(const COccupancyGridMap2D &map);
45 
46  // Bounds
47  const double minX, minY, maxX, maxY;
48 
49  // robot bbox
50  const CscSize3d robotDimensionsConscienceRefFrame;
51  const double robotRadiusMeters;
52  const double robotReachedKnownFrontierDistanceMeters;
53  const double mobileDistanceThresholdMeters;
54  const CscPoint2d robotDimensionsMrpt;
55 
56  optional<TPoint2D> adjustedTarget = {};
57  optional<TPoint2D> immobilityCheckRefPosition = {};
58  std::chrono::steady_clock::time_point lastMoveTime = std::chrono::steady_clock::now();
59 
60  // Planner state
61  vector<TPoint2D> frontiers;
62  double lastPlanTime = -1;
63  size_t noFrontiersTickCount = 0;
64  size_t retryOldFrontiersCount = 0;
65  vector<TPose2D> lastPath;
66  vector<TPoint2D> frontiersBeforeMovingToFindNewFrontiers;
67 
68  size_t cannotMoveToFrontiersTickCount = 0;
69 
70  std::thread *moveThread = nullptr;
71  ptr<CommandSmallMoveToBestDirection> currentMoveToRestoreExplorationCommand = nullptr;
72 
73  void startMoveToRestoreExplorationAsync();
74  void stopAllSequences();
75  void stopRobotWheels();
76  void moveRobotWheels(double leftPercent, double rightPercent);
77 
78  void saveExplorationDebugFiles(const ptr<COccupancyGridMap2D> &map, const TPose2D &pose, optional<TPoint2D> selectedTarget, const string &suffix = "");
79 };
80 }
81 
82 #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:34
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:19
conscience_core::bridging::commands::environment_entities::stopRobotWheels
void stopRobotWheels(const ptr< CscEntityReflexion > &entityReflexion)
Definition: environmentEntitiesCommands.cpp:1675
conscience_core::lidar::CscSlamEngine
Definition: CscSlamEngine.h:46
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
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