PredicateFilter: actually use declared property

This commit is contained in:
v4hn 2020-08-18 17:34:18 +02:00
parent 310ca3ef15
commit 6e0e323a58
2 changed files with 3 additions and 2 deletions

View File

@ -65,6 +65,7 @@ public:
void onNewSolution(const SolutionBase& s) override; void onNewSolution(const SolutionBase& s) override;
void setPredicate(const Predicate& p) { setProperty("predicate", p); } void setPredicate(const Predicate& p) { setProperty("predicate", p); }
void setIgnoreFilter(bool ignore) { setProperty("ignore_filter", ignore); }
}; };
} // namespace stages } // namespace stages
} // namespace task_constructor } // namespace task_constructor

View File

@ -52,7 +52,7 @@ PredicateFilter::PredicateFilter(const std::string& name, Stage::pointer&& child
: WrapperBase(name, std::move(child)) { : WrapperBase(name, std::move(child)) {
auto& p = properties(); auto& p = properties();
p.declare<Predicate>("predicate", "predicate to filter wrapped solutions"); p.declare<Predicate>("predicate", "predicate to filter wrapped solutions");
p.declare<bool>("ignore_filter", false); p.declare<bool>("ignore_filter", false, "ignore predicate and forward all solutions");
} }
void PredicateFilter::init(const moveit::core::RobotModelConstPtr& robot_model) { void PredicateFilter::init(const moveit::core::RobotModelConstPtr& robot_model) {
@ -85,7 +85,7 @@ void PredicateFilter::onNewSolution(const SolutionBase& s) {
std::string comment = s.comment(); std::string comment = s.comment();
double cost = s.cost(); double cost = s.cost();
if (!props.get<Predicate>("predicate")(s, comment)) if (!props.get<bool>("ignore_filter") && !props.get<Predicate>("predicate")(s, comment))
cost = std::numeric_limits<double>::infinity(); cost = std::numeric_limits<double>::infinity();
liftSolution(s, cost, comment); liftSolution(s, cost, comment);