22 #ifndef __NAVGRAPH_CONSTRAINTS_CONSTRAINT_REPO_H_ 23 #define __NAVGRAPH_CONSTRAINTS_CONSTRAINT_REPO_H_ 25 #include <navgraph/constraints/node_constraint.h> 26 #include <navgraph/constraints/edge_constraint.h> 27 #include <navgraph/constraints/edge_cost_constraint.h> 29 #include <navgraph/navgraph_edge.h> 86 std::map<std::string, std::string>
87 blocks(
const std::vector<fawkes::NavGraphNode> &nodes);
89 std::map<std::pair<std::string, std::string>, std::string>
90 blocks(
const std::vector<fawkes::NavGraphEdge> &edges);
92 std::list<std::tuple<std::string, std::string, std::string, float>>
93 cost_factor(
const std::vector<fawkes::NavGraphEdge> &edges);
95 bool modified(
bool reset_modified =
false);
99 NodeConstraintList node_constraints_;
100 EdgeConstraintList edge_constraints_;
101 EdgeCostConstraintList edge_cost_constraints_;
std::vector< fawkes::NavGraphNodeConstraint * > NodeConstraintList
List of navgraph node constraints.
Constraint that can be queried to check if an edge is blocked.
bool compute()
Call compute method on all registered constraints.
fawkes::NavGraphNodeConstraint * get_node_constraint(std::string &name)
Get a node constraint by name.
float cost_factor(const fawkes::NavGraphNode &from, const fawkes::NavGraphNode &to)
Get the highest increasing cost factor for an edge.
Fawkes library namespace.
std::vector< fawkes::NavGraphEdgeConstraint * > EdgeConstraintList
List of navgraph edge constraints.
NavGraphEdgeCostConstraint * increases_cost(const fawkes::NavGraphNode &from, const fawkes::NavGraphNode &to)
Check if any constraint in the repo increases the cost of the edge.
const NodeConstraintList & node_constraints() const
Get a list of registered node constraints.
Constraint that can be queried for an edge cost factor.
fawkes::NavGraphEdgeCostConstraint * get_edge_cost_constraint(std::string &name)
Get an edge cost constraint by name.
Constraint repository to maintain blocks on nodes.
const EdgeCostConstraintList & edge_cost_constraints() const
Get a list of registered edge cost constraints.
const EdgeConstraintList & edge_constraints() const
Get a list of registered edge constraints.
void unregister_constraint(std::string name)
Unregister a constraint by name.
bool has_constraints() const
Check if there are any constraints at all.
bool modified(bool reset_modified=false)
Check if the constraint repo has been modified.
~NavGraphConstraintRepo()
Destructor.
NavGraphConstraintRepo()
Constructor.
void register_constraint(NavGraphNodeConstraint *constraint)
Register a constraint.
bool has_constraint(std::string &name)
Check by name if a constraint has been registered.
Constraint that can be queried to check if a node is blocked.
fawkes::NavGraphEdgeConstraint * get_edge_constraint(std::string &name)
Get an edge constraint by name.
NavGraphNodeConstraint * blocks(const fawkes::NavGraphNode &node)
Check if any constraint in the repo blocks the node.
std::vector< fawkes::NavGraphEdgeCostConstraint * > EdgeCostConstraintList
List of navgraph edge cost constraints.