15 #include "nav2_behavior_tree/plugins/condition/is_path_valid_condition.hpp"
20 namespace nav2_behavior_tree
23 IsPathValidCondition::IsPathValidCondition(
24 const std::string & condition_name,
25 const BT::NodeConfiguration & conf)
26 : BT::ConditionNode(condition_name, conf)
28 node_ = config().blackboard->get<rclcpp::Node::SharedPtr>(
"node");
29 client_ = node_->create_client<nav2_msgs::srv::IsPathValid>(
"is_path_valid");
31 server_timeout_ = config().blackboard->template get<std::chrono::milliseconds>(
"server_timeout");
36 getInput<std::chrono::milliseconds>(
"server_timeout", server_timeout_);
41 if (!BT::isStatusActive(status())) {
45 nav_msgs::msg::Path path;
46 getInput(
"path", path);
48 auto request = std::make_shared<nav2_msgs::srv::IsPathValid::Request>();
51 auto result = client_->async_send_request(request);
53 if (rclcpp::spin_until_future_complete(node_, result, server_timeout_) ==
54 rclcpp::FutureReturnCode::SUCCESS)
56 if (result.get()->is_valid) {
57 return BT::NodeStatus::SUCCESS;
60 return BT::NodeStatus::FAILURE;
65 #include "behaviortree_cpp/bt_factory.h"
66 BT_REGISTER_NODES(factory)
A BT::ConditionNode that returns SUCCESS when the IsPathValid service returns true and FAILURE otherw...
void initialize()
Function to read parameters and initialize class variables.
BT::NodeStatus tick() override
The main override required by a BT action.