18 #include "nav2_behavior_tree/plugins/decorator/rate_controller.hpp"
20 namespace nav2_behavior_tree
24 const std::string & name,
25 const BT::NodeConfiguration & conf)
26 : BT::DecoratorNode(name, conf),
38 BT::NodeStatus RateController::tick()
40 if (!BT::isStatusActive(status())) {
44 start_ = std::chrono::high_resolution_clock::now();
48 setStatus(BT::NodeStatus::RUNNING);
51 auto now = std::chrono::high_resolution_clock::now();
52 auto elapsed = now - start_;
55 typedef std::chrono::duration<float> float_seconds;
56 auto seconds = std::chrono::duration_cast<float_seconds>(elapsed);
61 if (first_time_ || (child_node_->status() == BT::NodeStatus::RUNNING) ||
62 seconds.count() >= period_)
65 const BT::NodeStatus child_state = child_node_->executeTick();
67 switch (child_state) {
68 case BT::NodeStatus::SKIPPED:
69 case BT::NodeStatus::RUNNING:
70 case BT::NodeStatus::FAILURE:
73 case BT::NodeStatus::SUCCESS:
74 start_ = std::chrono::high_resolution_clock::now();
75 return BT::NodeStatus::SUCCESS;
78 return BT::NodeStatus::FAILURE;
87 #include "behaviortree_cpp/bt_factory.h"
88 BT_REGISTER_NODES(factory)
A BT::DecoratorNode that ticks its child at a specified rate.
void initialize()
Function to read parameters and initialize class variables.
RateController(const std::string &name, const BT::NodeConfiguration &conf)
A constructor for nav2_behavior_tree::RateController.