Abstract base class for Behavior Tree Nodes. More...
#include <tree_node.h>
Public Types | |
using | PostTickOverrideCallback = std::function< Optional< NodeStatus >(TreeNode &, NodeStatus, NodeStatus)> |
using | PreTickOverrideCallback = std::function< Optional< NodeStatus >(TreeNode &, NodeStatus)> |
typedef std::shared_ptr< TreeNode > | Ptr |
using | StatusChangeCallback = StatusChangeSignal::CallableFunction |
using | StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus > |
using | StatusChangeSubscriber = StatusChangeSignal::Subscriber |
Public Member Functions | |
const NodeConfiguration & | config () const |
void | emitStateChanged () |
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) |
void | setPostTickOverrideFunction (PostTickOverrideCallback callback) |
void | setPreTickOverrideFunction (PreTickOverrideCallback callback) |
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< 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 | resetStatus () |
Equivalent to setStatus(NodeStatus::IDLE) More... | |
void | setRegistrationID (StringView ID) |
void | setStatus (NodeStatus new_status) |
void | setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance) |
virtual BT::NodeStatus | tick ()=0 |
Method to be implemented by the user. More... | |
Private Attributes | |
NodeConfiguration | config_ |
const std::string | name_ |
PostTickOverrideCallback | post_condition_callback_ |
PreTickOverrideCallback | pre_condition_callback_ |
std::string | registration_ID_ |
StatusChangeSignal | state_change_signal_ |
std::condition_variable | state_condition_variable_ |
std::mutex | state_mutex_ |
NodeStatus | status_ |
const uint16_t | uid_ |
std::shared_ptr< WakeUpSignal > | wake_up_ |
Friends | |
class | BehaviorTreeFactory |
class | ControlNode |
class | DecoratorNode |
class | Tree |
Abstract base class for Behavior Tree Nodes.
Definition at line 55 of file tree_node.h.
using BT::TreeNode::PostTickOverrideCallback = std::function<Optional<NodeStatus>(TreeNode&, NodeStatus, NodeStatus)> |
Definition at line 101 of file tree_node.h.
using BT::TreeNode::PreTickOverrideCallback = std::function<Optional<NodeStatus>(TreeNode&, NodeStatus)> |
Definition at line 99 of file tree_node.h.
typedef std::shared_ptr<TreeNode> BT::TreeNode::Ptr |
Definition at line 58 of file tree_node.h.
Definition at line 96 of file tree_node.h.
using BT::TreeNode::StatusChangeSignal = Signal<TimePoint, const TreeNode&, NodeStatus, NodeStatus> |
Definition at line 94 of file tree_node.h.
Definition at line 95 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.
|
virtualdefault |
const NodeConfiguration & BT::TreeNode::config | ( | ) | const |
Configuration passed at construction time. Can never change after the creation of the TreeNode instance.
Definition at line 127 of file tree_node.cpp.
void BT::TreeNode::emitStateChanged | ( | ) |
Definition at line 193 of file tree_node.cpp.
|
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 32 of file tree_node.cpp.
|
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 232 of file tree_node.h.
|
inline |
Same as bool getInput(const std::string& key, T& destination) but using optional.
Definition at line 159 of file tree_node.h.
StringView BT::TreeNode::getRawPortValue | ( | const std::string & | key | ) | const |
Definition at line 132 of file tree_node.cpp.
|
static |
Definition at line 179 of file tree_node.cpp.
|
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, BT::StatefulActionNode, FollowPath, BT::AsyncActionNode, MyAsyncAction, BT::SyncActionNode, MoveBaseAction, BT::RepeatNode, BT::ParallelNode, BT::SwitchNode< NUM_CASES >, BT::RetryNode, BT::AsyncActionTest, BT::ControlNode, BT::IfThenElseNode, BT::SequenceStarNode, BT::SequenceNode, BT::WhileDoElseNode, BT::FallbackNode, BT::DelayNode, BT::ConditionNode, BT::ManualSelectorNode, BT::DecoratorNode, and SimpleCoroAction.
|
static |
Check a string and return true if it matches either one of these two patterns: {...} or ${...}
Definition at line 145 of file tree_node.cpp.
bool BT::TreeNode::isHalted | ( | ) | const |
Definition at line 106 of file tree_node.cpp.
|
protected |
Definition at line 211 of file tree_node.cpp.
const std::string & BT::TreeNode::name | ( | ) | const |
Name of the instance, not the type.
Definition at line 101 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 122 of file tree_node.cpp.
|
protected |
Equivalent to setStatus(NodeStatus::IDLE)
Definition at line 79 of file tree_node.cpp.
|
inline |
Definition at line 293 of file tree_node.h.
void BT::TreeNode::setPostTickOverrideFunction | ( | PostTickOverrideCallback | callback | ) |
This method attaches to the TreeNode a callback with signature:
Optional<NodeStatus> myCallback(TreeNode& node, NodeStatus prev_status, NodeStatus tick_status)
This callback is executed AFTER the tick() and, if it returns a valid Optional<NodeStatus>, the value returned by the actual tick() is overriden with this one.
void BT::TreeNode::setPreTickOverrideFunction | ( | PreTickOverrideCallback | callback | ) |
This method attaches to the TreeNode a callback with signature:
Optional<NodeStatus> myCallback(TreeNode& node, NodeStatus current_status)
This callback is executed BEFORE the tick() and, if it returns a valid Optional<NodeStatus>, the actual tick() will NOT be executed and this result will be returned instead.
This is useful to inject a "dummy" implementation of the TreeNode at run-time
|
protected |
Definition at line 201 of file tree_node.cpp.
|
protected |
Definition at line 63 of file tree_node.cpp.
|
protected |
Definition at line 206 of file tree_node.cpp.
NodeStatus BT::TreeNode::status | ( | ) | const |
Definition at line 84 of file tree_node.cpp.
|
static |
Definition at line 162 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.
callback | The callback to be execute when status change. |
Definition at line 112 of file tree_node.cpp.
|
protectedpure virtual |
Method to be implemented by the user.
Implemented in NaughtyNav2Node, ReadInConstructor, BT::StatefulActionNode, IllegalPorts, FollowPath, BT::QueueSize< T >, NodeOutPorts, ComputePathToPose, UseWaypoint, BackUpAndSpin, NodeInPorts, BT::SimpleActionNode, IsStuck, BT::SubtreePlusNode, BT::ParallelNode, BT::SwitchNode< NUM_CASES >, PrintTarget, BT::PopFromQueue< T >, BT::SimpleDecoratorNode, BT::RetryNode, BT::SimpleConditionNode, BT::TimeoutNode< _Clock, _Duration >, BT::BlackboardPreconditionNode< T >, DummyNodes::SaySomething, BB_TypedTestNode, MoveBaseAction, BT::RepeatNode, Action_B, UseWaypointQueue, ThinkWhatToSay, CopyPorts, BT::SetBlackboard, BT::DelayNode, CalculateGoal, BT::IfThenElseNode, BT::SequenceStarNode, BT::SequenceNode, DummyNodes::ApproachObject, BT::FallbackNode, BT::AsyncActionTest, BT::WhileDoElseNode, BT::ManualSelectorNode, SimpleCoroAction, BT::ReactiveFallback, BT::ReactiveSequence, SayRuntimePort, BT::ConsumeQueue< T >, BT::InverterNode, BT::KeepRunningUntilFailureNode, GenerateWaypoints, BT::AlwaysFailureNode, BT::AlwaysSuccessNode, BT::ForceFailureNode, BT::ForceSuccessNode, BB_TestNode, MyAsyncAction, ThinkRuntimePort, Action_A, BT::SubtreeNode, FastAction, BT::ConditionTestNode, NodeWithPorts, and BT::SyncActionTest.
|
pure virtual |
Implemented in BT::SubtreePlusNode, BT::ControlNode, BT::ActionNodeBase, BT::ConditionNode, BT::SubtreeNode, and BT::DecoratorNode.
uint16_t BT::TreeNode::UID | ( | ) | const |
Definition at line 117 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 90 of file tree_node.cpp.
|
friend |
Definition at line 189 of file tree_node.h.
|
friend |
Definition at line 191 of file tree_node.h.
|
friend |
Definition at line 190 of file tree_node.h.
|
friend |
Definition at line 192 of file tree_node.h.
|
private |
Definition at line 219 of file tree_node.h.
|
private |
Definition at line 207 of file tree_node.h.
|
private |
Definition at line 225 of file tree_node.h.
|
private |
Definition at line 223 of file tree_node.h.
|
private |
Definition at line 221 of file tree_node.h.
|
private |
Definition at line 215 of file tree_node.h.
|
private |
Definition at line 211 of file tree_node.h.
|
mutableprivate |
Definition at line 213 of file tree_node.h.
|
private |
Definition at line 209 of file tree_node.h.
|
private |
Definition at line 217 of file tree_node.h.
|
private |
Definition at line 227 of file tree_node.h.