5 #ifndef CSCMRPTAUTONOMOUSEXPLORATION_H
6 #define CSCMRPTAUTONOMOUSEXPLORATION_H
25 double minX,
double minY,
double maxX,
double maxY);
28 void update(
double nowSec);
30 bool isStarted()
const;
42 bool moveRobotToPosition2d(
const TPoint2D &target);
43 vector<TPoint2D> detectFrontiers(
const COccupancyGridMap2D &map);
46 const double minX, minY, maxX, maxY;
49 const CscSize3d robotDimensionsConscienceRefFrame;
50 const double robotRadiusMeters;
51 const double robotReachedKnownFrontierDistanceMeters;
52 const double mobileDistanceThresholdMeters;
55 optional<TPoint2D> adjustedTarget = {};
56 optional<TPoint2D> immobilityCheckRefPosition = {};
57 std::chrono::steady_clock::time_point lastMoveTime = std::chrono::steady_clock::now();
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;
67 size_t cannotMoveToFrontiersTickCount = 0;
69 std::thread *moveThread =
nullptr;
72 void startMoveToRestoreExplorationAsync();
77 void saveExplorationDebugFiles(
const ptr<COccupancyGridMap2D> &map,
const TPose2D &pose, optional<TPoint2D> selectedTarget,
const string &suffix =
"");
81 #endif // CSCMRPTAUTONOMOUSEXPLORATION_H