Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | Friends | List of all members
BT::TreeNode Class Referenceabstract

Abstract base class for Behavior Tree Nodes. More...

#include <tree_node.h>

Inheritance diagram for BT::TreeNode:
Inheritance graph
[legend]

Public Types

typedef std::shared_ptr< TreeNodePtr
 
using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 

Public Member Functions

const NodeConfigurationconfig () const
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();. More...
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Optional< T > getInput (const std::string &key) const
 
StringView getRawPortValue (const std::string &key) const
 
virtual void halt ()=0
 
bool isHalted () const
 
const std::string & name () const
 Name of the instance, not the type. More...
 
const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance. More...
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 
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. More...
 
 TreeNode (std::string name, NodeConfiguration config)
 TreeNode main constructor. More...
 
virtual NodeType type () const =0
 
uint16_t UID () const
 
BT::NodeStatus waitValidStatus ()
 
virtual ~TreeNode ()=default
 

Static Public Member Functions

static Optional< StringViewgetRemappedKey (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)
 
void setStatus (NodeStatus new_status)
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user. More...
 

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
 
class ControlNode
 
class DecoratorNode
 
class Tree
 

Detailed Description

Abstract base class for Behavior Tree Nodes.

Definition at line 53 of file tree_node.h.

Member Typedef Documentation

typedef std::shared_ptr<TreeNode> BT::TreeNode::Ptr

Definition at line 56 of file tree_node.h.

Definition at line 94 of file tree_node.h.

Definition at line 92 of file tree_node.h.

Definition at line 93 of file tree_node.h.

Constructor & Destructor Documentation

BT::TreeNode::TreeNode ( std::string  name,
NodeConfiguration  config 
)

TreeNode main constructor.

Parameters
namename of the instance, not the type.
configinformation 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 ( )
virtualdefault

Member Function Documentation

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.

template<typename T >
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.

Parameters
keythe identifier (before remapping) of the port.
Returns
false if an error occurs.

Definition at line 192 of file tree_node.h.

template<typename T >
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 131 of file tree_node.h.

StringView BT::TreeNode::getRawPortValue ( const std::string &  key) const

Definition at line 104 of file tree_node.cpp.

Optional< StringView > BT::TreeNode::getRemappedKey ( StringView  port_name,
StringView  remapping_value 
)
static

Definition at line 147 of file tree_node.cpp.

virtual void BT::TreeNode::halt ( )
pure virtual
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 117 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 160 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.

template<typename T >
Result BT::TreeNode::setOutput ( const std::string &  key,
const T &  value 
)
inline

Definition at line 243 of file tree_node.h.

void BT::TreeNode::setRegistrationID ( StringView  ID)
inlineprotected

Definition at line 163 of file tree_node.h.

void BT::TreeNode::setStatus ( NodeStatus  new_status)
protected

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 132 of file tree_node.cpp.

TreeNode::StatusChangeSubscriber BT::TreeNode::subscribeToStatusChange ( TreeNode::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.

Parameters
callbackThe callback to be execute when status change.
Returns
the subscriber handle.

Definition at line 84 of file tree_node.cpp.

virtual BT::NodeStatus BT::TreeNode::tick ( )
protectedpure virtual
virtual NodeType BT::TreeNode::type ( ) const
pure virtual
uint16_t BT::TreeNode::UID ( ) const

Definition at line 89 of file tree_node.cpp.

NodeStatus BT::TreeNode::waitValidStatus ( )

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.

Friends And Related Function Documentation

friend class BehaviorTreeFactory
friend

Definition at line 157 of file tree_node.h.

friend class ControlNode
friend

Definition at line 159 of file tree_node.h.

friend class DecoratorNode
friend

Definition at line 158 of file tree_node.h.

friend class Tree
friend

Definition at line 160 of file tree_node.h.

Member Data Documentation

NodeConfiguration BT::TreeNode::config_
private

Definition at line 185 of file tree_node.h.

const std::string BT::TreeNode::name_
private

Definition at line 173 of file tree_node.h.

std::string BT::TreeNode::registration_ID_
private

Definition at line 187 of file tree_node.h.

StatusChangeSignal BT::TreeNode::state_change_signal_
private

Definition at line 181 of file tree_node.h.

std::condition_variable BT::TreeNode::state_condition_variable_
private

Definition at line 177 of file tree_node.h.

std::mutex BT::TreeNode::state_mutex_
mutableprivate

Definition at line 179 of file tree_node.h.

NodeStatus BT::TreeNode::status_
private

Definition at line 175 of file tree_node.h.

const uint16_t BT::TreeNode::uid_
private

Definition at line 183 of file tree_node.h.


The documentation for this class was generated from the following files:


behaviotree_cpp_v3
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Tue May 4 2021 02:56:26