5 #ifndef CSCMRPTAUTONOMOUSEXPLORATION_H
6 #define CSCMRPTAUTONOMOUSEXPLORATION_H
26 double minX,
double minY,
double maxX,
double maxY);
29 void update(
double nowSec);
31 bool isStarted()
const;
43 bool moveRobotToPosition2d(
const TPoint2D &target);
44 vector<TPoint2D> detectFrontiers(
const COccupancyGridMap2D &map);
47 const double minX, minY, maxX, maxY;
50 const CscSize3d robotDimensionsConscienceRefFrame;
51 const double robotRadiusMeters;
52 const double robotReachedKnownFrontierDistanceMeters;
53 const double mobileDistanceThresholdMeters;
56 optional<TPoint2D> adjustedTarget = {};
57 optional<TPoint2D> immobilityCheckRefPosition = {};
58 std::chrono::steady_clock::time_point lastMoveTime = std::chrono::steady_clock::now();
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;
68 size_t cannotMoveToFrontiersTickCount = 0;
70 std::thread *moveThread =
nullptr;
73 void startMoveToRestoreExplorationAsync();
78 void saveExplorationDebugFiles(
const ptr<COccupancyGridMap2D> &map,
const TPose2D &pose, optional<TPoint2D> selectedTarget,
const string &suffix =
"");
82 #endif // CSCMRPTAUTONOMOUSEXPLORATION_H