53 #include <SemanticObjectRelations/Shapes/Shape.h>
58 namespace scene_provider
96 void moveTo(
const std::vector<core::Pose>& waypoints,
99 void update(
const std::vector<core::Pose>& waypoints,
103 void moveTo(
const std::vector<client::WaypointTarget>&
targets,
113 void pause()
override;
117 bool isPaused() const noexcept override;
119 void stop() override;
121 bool isStopped() const noexcept override;
130 using GraphPath =
std::vector<
semrel::ShapeID>;
132 void moveToAbsolute(const
std::vector<core::
Pose>& waypoints);
133 void moveTowardsAbsolute(const core::
Direction& direction);
135 void updateAbsolute(const
std::vector<core::
Pose>& waypoints);
139 void updateScene(
bool fullUpdate = false);
141 std::optional<local_planning::LocalPlannerResult> updateLocalPlanner();
142 void updateExecutor(const
std::optional<local_planning::LocalPlannerResult>& localPlan);
143 void updateExecutor(const
std::optional<global_planning::GlobalPlannerResult>& localPlan);
144 void updateIntrospector(const
std::optional<local_planning::LocalPlannerResult>& localPlan);
146 void updateMonitor();
148 safety_guard::SafetyGuardResult updateSafetyGuard();
153 void stopAllThreads();
158 void setGraphEdgeCosts(core::
Graph& graph) const;
161 core::GlobalTrajectory convertToTrajectory(const GraphPath& shortestPath,
162 const core::
Graph& graph) const;
164 core::
Pose resolveGraphVertex(const core::
Graph::ConstVertex& vertex) const;
166 bool hasLocalPlanner() const noexcept;
167 bool hasSafetyGuard() const;
173 std::atomic_bool executorEnabled = true;
180 std::optional<global_planning::GlobalPlannerResult> globalPlan;
181 std::optional<local_planning::LocalPlannerResult> localPlan;
183 using Waypoints =
std::vector<core::
Pose>;
185 std::mutex globalPlanningRequestMtx;
186 std::optional<Waypoints> globalPlanningRequest;
188 std::atomic<
float> velocityFactor = 1.F;
190 std::mutex updateLocalPlannerMtx;