Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class BtActionNode : public BT::ActionNodeBase
auto bt_loop_duration =
config().blackboard->template get<std::chrono::milliseconds>("bt_loop_duration");
getInputOrBlackboard("server_timeout", server_timeout_);
getInputOrBlackboard("cancel_timeout", cancel_timeout_);
wait_for_service_timeout_ =
config().blackboard->template get<std::chrono::milliseconds>("wait_for_service_timeout");

Expand Down Expand Up @@ -335,7 +336,7 @@ class BtActionNode : public BT::ActionNodeBase
"Failed to cancel action server for %s", action_name_.c_str());
}

if (callback_group_executor_.spin_until_future_complete(future_result, server_timeout_) !=
if (callback_group_executor_.spin_until_future_complete(future_result, cancel_timeout_) !=
rclcpp::FutureReturnCode::SUCCESS)
{
RCLCPP_ERROR(
Expand Down Expand Up @@ -486,6 +487,9 @@ class BtActionNode : public BT::ActionNodeBase
// new action goal is sent or canceled
std::chrono::milliseconds server_timeout_;

// The timeout value when cancelling actions during halt
std::chrono::milliseconds cancel_timeout_;

// The timeout value for BT loop execution
std::chrono::milliseconds max_timeout_;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,9 @@ class BtActionServer
// Default timeout value while waiting for response from a server
std::chrono::milliseconds default_server_timeout_;

// Default timeout value when cancelling actions during node halt
std::chrono::milliseconds default_cancel_timeout_;

// The timeout value for waiting for a service to response
std::chrono::milliseconds wait_for_service_timeout_;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ BtActionServer<ActionT>::BtActionServer(
if (!node->has_parameter("default_server_timeout")) {
node->declare_parameter("default_server_timeout", 20);
}
if (!node->has_parameter("default_cancel_timeout")) {
node->declare_parameter("default_cancel_timeout", 50);
}
if (!node->has_parameter("always_reload_bt_xml")) {
node->declare_parameter("always_reload_bt_xml", false);
}
Expand Down Expand Up @@ -178,6 +181,9 @@ bool BtActionServer<ActionT>::on_configure()
int default_server_timeout;
node->get_parameter("default_server_timeout", default_server_timeout);
default_server_timeout_ = std::chrono::milliseconds(default_server_timeout);
int default_cancel_timeout;
node->get_parameter("default_cancel_timeout", default_cancel_timeout);
default_cancel_timeout_ = std::chrono::milliseconds(default_cancel_timeout);
int wait_for_service_timeout;
node->get_parameter("wait_for_service_timeout", wait_for_service_timeout);
wait_for_service_timeout_ = std::chrono::milliseconds(wait_for_service_timeout);
Expand All @@ -195,6 +201,7 @@ bool BtActionServer<ActionT>::on_configure()
// Put items on the blackboard
blackboard_->set<rclcpp::Node::SharedPtr>("node", client_node_); // NOLINT
blackboard_->set<std::chrono::milliseconds>("server_timeout", default_server_timeout_); // NOLINT
blackboard_->set<std::chrono::milliseconds>("cancel_timeout", default_cancel_timeout_); // NOLINT
blackboard_->set<std::chrono::milliseconds>("bt_loop_duration", bt_loop_duration_); // NOLINT
blackboard_->set<std::chrono::milliseconds>(
"wait_for_service_timeout",
Expand Down Expand Up @@ -296,6 +303,7 @@ bool BtActionServer<ActionT>::loadBehaviorTree(const std::string & bt_xml_filena
auto & blackboard = subtree->blackboard;
blackboard->set("node", client_node_);
blackboard->set<std::chrono::milliseconds>("server_timeout", default_server_timeout_);
blackboard->set<std::chrono::milliseconds>("cancel_timeout", default_cancel_timeout_);
blackboard->set<std::chrono::milliseconds>("bt_loop_duration", bt_loop_duration_);
blackboard->set<std::chrono::milliseconds>(
"wait_for_service_timeout",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,9 @@ class FibonacciAction : public nav2_behavior_tree::BtActionNode<test_msgs::actio

BT::NodeStatus on_cancelled() override
{
config().blackboard->set("sequence", result_.result->sequence);
if (result_.result) {
config().blackboard->set("sequence", result_.result->sequence);
}
config().blackboard->set("on_cancelled_triggered", true);
return BT::NodeStatus::SUCCESS;
}
Expand Down
Loading