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,
111 void pause()
override;
115 bool isPaused() const noexcept override;
117 void stop() override;
119 bool isStopped() const noexcept override;
128 using GraphPath =
std::vector<
semrel::ShapeID>;
130 void moveToAbsolute(const
std::vector<core::
Pose>& waypoints);
131 void moveTowardsAbsolute(const core::
Direction& direction);
133 void updateAbsolute(const
std::vector<core::
Pose>& waypoints);
137 void updateScene(
bool fullUpdate = false);
139 std::optional<local_planning::LocalPlannerResult> updateLocalPlanner();
140 void updateExecutor(const
std::optional<local_planning::LocalPlannerResult>& localPlan);
141 void updateExecutor(const
std::optional<global_planning::GlobalPlannerResult>& localPlan);
142 void updateIntrospector(const
std::optional<local_planning::LocalPlannerResult>& localPlan);
144 void updateMonitor();
146 safety_guard::SafetyGuardResult updateSafetyGuard();
151 void stopAllThreads();
156 void setGraphEdgeCosts(core::
Graph& graph) const;
157 GraphBuilder convertToGraph(const
std::vector<client::WaypointTarget>& targets) const;
159 core::GlobalTrajectory convertToTrajectory(const GraphPath& shortestPath,
160 const core::
Graph& graph) const;
162 core::
Pose resolveGraphVertex(const core::
Graph::ConstVertex& vertex) const;
164 bool hasLocalPlanner() const noexcept;
165 bool hasSafetyGuard() const;
171 std::atomic_bool executorEnabled = true;
178 std::optional<global_planning::GlobalPlannerResult> globalPlan;
179 std::optional<local_planning::LocalPlannerResult> localPlan;
181 using Waypoints =
std::vector<core::
Pose>;
183 std::mutex globalPlanningRequestMtx;
184 std::optional<Waypoints> globalPlanningRequest;
186 std::mutex updateLocalPlannerMtx;