selfdriving
Planner.h
Go to the documentation of this file.
1 /* -------------------------------------------------------------------------
2  * SelfDriving C++ library based on PTGs and mrpt-nav
3  * Copyright (C) 2019-2022 Jose Luis Blanco, University of Almeria
4  * See LICENSE for license information.
5  * ------------------------------------------------------------------------- */
6 
7 #pragma once
8 
10 #include <mpp/data/PlannerInput.h>
11 #include <mpp/data/PlannerOutput.h>
13 #include <mrpt/rtti/CObject.h>
14 #include <mrpt/system/COutputLogger.h>
15 #include <mrpt/system/CTimeLogger.h>
16 
17 #include <optional>
18 #include <vector>
19 
20 namespace mpp
21 {
22 class Planner : public mrpt::rtti::CObject,
23  virtual public mrpt::system::COutputLogger
24 {
25  DEFINE_VIRTUAL_MRPT_OBJECT(Planner)
26 
27  public:
28  Planner() = default;
29  ~Planner();
30 
31  virtual PlannerOutput plan(const PlannerInput& in) = 0;
32  std::vector<CostEvaluator::Ptr> costEvaluators_;
33 
34  virtual mrpt::containers::yaml params_as_yaml() = 0;
35  virtual void params_from_yaml(const mrpt::containers::yaml& c) = 0;
36 
37  mrpt::system::CTimeLogger& profiler_()
38  {
40  }
41 
42  void attachExternalProfiler_(mrpt::system::CTimeLogger& p)
43  {
44  customProfiler_ = &p;
45  }
46 
47  cost_t cost_path_segment(const MoveEdgeSE2_TPS& edge) const;
48 
49  /** optional progress callback */
52 
53  private:
54  /** Time profiler (Default: enabled)*/
55  mrpt::system::CTimeLogger defaultProfiler_{true, "Planner"};
56  mrpt::system::CTimeLogger* customProfiler_ = nullptr;
57 };
58 
59 } // namespace mpp
mrpt::system::CTimeLogger & profiler_()
Definition: Planner.h:37
duration_seconds_t progressCallbackCallPeriod_
Definition: Planner.h:51
double cost_t
Definition: basic_types.h:25
virtual mrpt::containers::yaml params_as_yaml()=0
planner_progress_callback_t progressCallback_
Definition: Planner.h:50
Definition: bestTrajectory.h:15
cost_t cost_path_segment(const MoveEdgeSE2_TPS &edge) const
double duration_seconds_t
Definition: basic_types.h:36
Definition: PlannerInput.h:18
Planner()=default
void attachExternalProfiler_(mrpt::system::CTimeLogger &p)
Definition: Planner.h:42
std::function< void(const ProgressCallbackData &)> planner_progress_callback_t
Definition: ProgressCallbackData.h:34
Definition: PlannerOutput.h:19
Definition: Planner.h:22
virtual void params_from_yaml(const mrpt::containers::yaml &c)=0
mrpt::system::CTimeLogger defaultProfiler_
Definition: Planner.h:55
mrpt::system::CTimeLogger * customProfiler_
Definition: Planner.h:56
Definition: MoveEdgeSE2_TPS.h:19
virtual PlannerOutput plan(const PlannerInput &in)=0
std::vector< CostEvaluator::Ptr > costEvaluators_
Definition: Planner.h:32