19 #include "nav2_behavior_tree/plugins/control/pipeline_sequence.hpp"
21 namespace nav2_behavior_tree
25 : BT::ControlNode(name, {})
30 const std::string & name,
31 const BT::NodeConfiguration & config)
32 : BT::ControlNode(name, config)
38 for (std::size_t i = 0; i < children_nodes_.size(); ++i) {
39 auto status = children_nodes_[i]->executeTick();
41 case BT::NodeStatus::FAILURE:
42 ControlNode::haltChildren();
43 last_child_ticked_ = 0;
45 case BT::NodeStatus::SUCCESS:
49 case BT::NodeStatus::RUNNING:
50 if (i >= last_child_ticked_) {
51 last_child_ticked_ = i;
57 std::stringstream error_msg;
58 error_msg <<
"Invalid node status. Received status " << status <<
59 "from child " << children_nodes_[i]->name();
60 throw std::runtime_error(error_msg.str());
64 ControlNode::haltChildren();
65 last_child_ticked_ = 0;
66 return BT::NodeStatus::SUCCESS;
71 BT::ControlNode::halt();
72 last_child_ticked_ = 0;
77 BT_REGISTER_NODES(factory)
Type of sequence node that re-ticks previous children when a child returns running.
void halt() override
The other (optional) override required by a BT action to reset node state.
BT::NodeStatus tick() override
The main override required by a BT action.
PipelineSequence(const std::string &name)
A constructor for nav2_behavior_tree::PipelineSequence.