Abstract base class for Behavior Tree Nodes. More...
#include <tree_node.h>
Public Types | |
typedef std::shared_ptr< TreeNode > | Ptr |
Public Member Functions | |
const NodeConfiguration & | config () const |
virtual BT::NodeStatus | executeTick () |
The method that should be used to invoke tick() and setStatus();. | |
template<typename T > | |
Result | getInput (const std::string &key, T &destination) const |
template<typename T > | |
Optional< T > | getInput (const std::string &key) const |
virtual void | halt ()=0 |
bool | isHalted () const |
const std::string & | name () const |
Name of the instance, not the type. | |
const std::string & | registrationName () const |
registrationName is the ID used by BehaviorTreeFactory to create an instance. | |
template<typename T > | |
Result | setOutput (const std::string &key, const T &value) |
void | setStatus (NodeStatus new_status) |
NodeStatus | status () const |
StatusChangeSubscriber | subscribeToStatusChange (StatusChangeCallback callback) |
subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically. | |
TreeNode (std::string name, NodeConfiguration config) | |
TreeNode main constructor. | |
virtual NodeType | type () const =0 |
uint16_t | UID () const |
BT::NodeStatus | waitValidStatus () |
virtual | ~TreeNode () |
Static Public Member Functions | |
static Optional< StringView > | getRemappedKey (StringView port_name, StringView remapping_value) |
static bool | isBlackboardPointer (StringView str) |
static StringView | stripBlackboardPointer (StringView str) |
Protected Member Functions | |
void | modifyPortsRemapping (const PortsRemapping &new_remapping) |
void | setRegistrationID (StringView ID) |
virtual BT::NodeStatus | tick ()=0 |
Method to be implemented by the user. | |
Private Attributes | |
NodeConfiguration | config_ |
const std::string | name_ |
std::string | registration_ID_ |
StatusChangeSignal | state_change_signal_ |
std::condition_variable | state_condition_variable_ |
std::mutex | state_mutex_ |
NodeStatus | status_ |
const uint16_t | uid_ |
Friends | |
class | BehaviorTreeFactory |
Abstract base class for Behavior Tree Nodes.
Definition at line 53 of file tree_node.h.
typedef std::shared_ptr<TreeNode> BT::TreeNode::Ptr |
Definition at line 56 of file tree_node.h.
BT::TreeNode::TreeNode | ( | std::string | name, |
NodeConfiguration | config | ||
) |
TreeNode main constructor.
name | name of the instance, not the type. |
config | information about input/output ports. See NodeConfiguration |
Note: If your custom node has ports, the derived class must implement:
static PortsList providedPorts();
Definition at line 25 of file tree_node.cpp.
virtual BT::TreeNode::~TreeNode | ( | ) | [virtual] |
const NodeConfiguration & BT::TreeNode::config | ( | ) | const |
Configuration passed at construction time. Can never change after the creation of the TreeNode instance.
Definition at line 99 of file tree_node.cpp.
NodeStatus BT::TreeNode::executeTick | ( | ) | [virtual] |
The method that should be used to invoke tick() and setStatus();.
Reimplemented in BT::CoroActionNode, BT::AsyncActionNode, BT::SyncActionNode, and BT::DecoratorNode.
Definition at line 33 of file tree_node.cpp.
Result BT::TreeNode::getInput | ( | const std::string & | key, |
T & | destination | ||
) | const [inline] |
Read an input port, which, in practice, is an entry in the blackboard. If the blackboard contains a std::string and T is not a string, convertFromString<T>() is used automatically to parse the text.
key | the identifier (before remapping) of the port. |
Definition at line 185 of file tree_node.h.
Optional<T> BT::TreeNode::getInput | ( | const std::string & | key | ) | const [inline] |
Same as bool getInput(const std::string& key, T& destination) but using optional.
Definition at line 133 of file tree_node.h.
Optional< StringView > BT::TreeNode::getRemappedKey | ( | StringView | port_name, |
StringView | remapping_value | ||
) | [static] |
Definition at line 134 of file tree_node.cpp.
virtual void BT::TreeNode::halt | ( | ) | [pure virtual] |
The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.
Implemented in BT::CoroActionNode, FollowPath, MoveBaseAction, BT::SyncActionNode, BT::RepeatNode, BT::RetryNode, BT::AsyncActionTest, BT::ControlNode, BT::SequenceStarNode, BT::SequenceNode, BT::FallbackNode, BT::ParallelNode, BT::ConditionNode, BT::DecoratorNode, and SimpleCoroAction.
bool BT::TreeNode::isBlackboardPointer | ( | StringView | str | ) | [static] |
Check a string and return true if it matches either one of these two patterns: {...} or ${...}
Definition at line 104 of file tree_node.cpp.
bool BT::TreeNode::isHalted | ( | ) | const |
Definition at line 78 of file tree_node.cpp.
void BT::TreeNode::modifyPortsRemapping | ( | const PortsRemapping & | new_remapping | ) | [protected] |
Definition at line 147 of file tree_node.cpp.
const std::string & BT::TreeNode::name | ( | ) | const |
Name of the instance, not the type.
Definition at line 73 of file tree_node.cpp.
const std::string & BT::TreeNode::registrationName | ( | ) | const |
registrationName is the ID used by BehaviorTreeFactory to create an instance.
Definition at line 94 of file tree_node.cpp.
Result BT::TreeNode::setOutput | ( | const std::string & | key, |
const T & | value | ||
) | [inline] |
Definition at line 236 of file tree_node.h.
void BT::TreeNode::setRegistrationID | ( | StringView | ID | ) | [inline, protected] |
Definition at line 158 of file tree_node.h.
void BT::TreeNode::setStatus | ( | NodeStatus | new_status | ) |
Definition at line 40 of file tree_node.cpp.
NodeStatus BT::TreeNode::status | ( | ) | const |
Definition at line 56 of file tree_node.cpp.
StringView BT::TreeNode::stripBlackboardPointer | ( | StringView | str | ) | [static] |
Definition at line 119 of file tree_node.cpp.
TreeNode::StatusChangeSubscriber BT::TreeNode::subscribeToStatusChange | ( | StatusChangeCallback | callback | ) |
subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
callback | The callback to be execute when status change. |
Definition at line 84 of file tree_node.cpp.
virtual BT::NodeStatus BT::TreeNode::tick | ( | ) | [protected, pure virtual] |
Method to be implemented by the user.
Implemented in FollowPath, ComputePathToPose, BackUpAndSpin, BT::SimpleActionNode, IsStuck, PrintTarget, BT::SimpleConditionNode, MoveBaseAction, BT::RetryNode, BB_TypedTestNode, BT::SimpleDecoratorNode, BT::RepeatNode, ThinkWhatToSay, Action_B, BT::BlackboardPreconditionNode< T >, DummyNodes::SaySomething, BT::ParallelNode, BT::SequenceStarNode, BT::SetBlackboard, BT::SequenceNode, CalculateGoal, BT::FallbackNode, BT::TimeoutNode, SimpleCoroAction, BT::AsyncActionTest, BT::InverterNode, BB_TestNode, Action_A, BT::DecoratorSubtreeNode, BT::ConditionTestNode, and BT::SyncActionTest.
virtual NodeType BT::TreeNode::type | ( | ) | const [pure virtual] |
Implemented in BT::ControlNode, BT::ActionNodeBase, BT::ConditionNode, BT::DecoratorNode, and BT::DecoratorSubtreeNode.
uint16_t BT::TreeNode::UID | ( | ) | const |
Definition at line 89 of file tree_node.cpp.
Blocking function that will sleep until the setStatus() is called with either RUNNING, FAILURE or SUCCESS.
Definition at line 62 of file tree_node.cpp.
friend class BehaviorTreeFactory [friend] |
Definition at line 155 of file tree_node.h.
NodeConfiguration BT::TreeNode::config_ [private] |
Definition at line 178 of file tree_node.h.
const std::string BT::TreeNode::name_ [private] |
Definition at line 166 of file tree_node.h.
std::string BT::TreeNode::registration_ID_ [private] |
Definition at line 180 of file tree_node.h.
StatusChangeSignal BT::TreeNode::state_change_signal_ [private] |
Definition at line 174 of file tree_node.h.
std::condition_variable BT::TreeNode::state_condition_variable_ [private] |
Definition at line 170 of file tree_node.h.
std::mutex BT::TreeNode::state_mutex_ [mutable, private] |
Definition at line 172 of file tree_node.h.
NodeStatus BT::TreeNode::status_ [private] |
Definition at line 168 of file tree_node.h.
const uint16_t BT::TreeNode::uid_ [private] |
Definition at line 176 of file tree_node.h.