Public Member Functions | Private Member Functions | Static Private Member Functions | List of all members
BT::SubtreePlusNode Class Reference

The SubtreePlus is a new kind of subtree that gives you much more control over remapping: More...

#include <subtree_node.h>

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

Public Member Functions

 SubtreePlusNode (const std::string &name)
 
virtual ~SubtreePlusNode () override=default
 
- Public Member Functions inherited from BT::DecoratorNode
const TreeNodechild () const
 
TreeNodechild ()
 
 DecoratorNode (const std::string &name, const NodeConfiguration &config)
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();. More...
 
virtual void halt () override
 The method used to interrupt the execution of this node. More...
 
void haltChild ()
 Halt() the child node. More...
 
void setChild (TreeNode *child)
 
virtual ~DecoratorNode () override=default
 
- Public Member Functions inherited from BT::TreeNode
const NodeConfigurationconfig () const
 
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
 
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...
 
uint16_t UID () const
 
BT::NodeStatus waitValidStatus ()
 
virtual ~TreeNode ()=default
 

Private Member Functions

virtual BT::NodeStatus tick () override
 Method to be implemented by the user. More...
 
virtual NodeType type () const overridefinal
 

Static Private Member Functions

static PortsList providedPorts ()
 

Additional Inherited Members

- Public Types inherited from BT::TreeNode
typedef std::shared_ptr< TreeNodePtr
 
using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
- Static Public Member Functions inherited from BT::TreeNode
static Optional< StringViewgetRemappedKey (StringView port_name, StringView remapping_value)
 
static bool isBlackboardPointer (StringView str)
 
static StringView stripBlackboardPointer (StringView str)
 
- Protected Member Functions inherited from BT::TreeNode
void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
void setRegistrationID (StringView ID)
 
void setStatus (NodeStatus new_status)
 
- Protected Attributes inherited from BT::DecoratorNode
TreeNodechild_node_
 

Detailed Description

The SubtreePlus is a new kind of subtree that gives you much more control over remapping:

Consider this example:

<root main_tree_to_execute="MainTree">

<BehaviorTree ID="MainTree">
    <Sequence>

    <SetBlackboard value="Hello" output_key="myParam" />
    <SubTreePlus ID="Talk" param="{myParam}" />

    <SubTreePlus ID="Talk" param="World" />

    <SetBlackboard value="Auto remapped" output_key="param" />
    <SubTreePlus ID="Talk" __autoremap="1"  />

    </Sequence>
</BehaviorTree>

<BehaviorTree ID="Talk">
    <SaySomething message="{param}" />
</BehaviorTree>

</root>

You may notice three different approaches to remapping:

1) Subtree: "{param}" -> Parent: "{myParam}" -> Value: "Hello" Classical remapping from one port to another, but you need to use the syntax {myParam} to say that you are remapping the another port.

2) Subtree: "{param}" -> Value: "World" syntax without {}, in this case param directly point to the string "World".

3) Subtree: "{param}" -> Parent: "{parent}" Setting to true (or 1) the attribute "__autoremap", we are automatically remapping each port. Usefull to avoid some boilerplate.

Definition at line 80 of file subtree_node.h.

Constructor & Destructor Documentation

BT::SubtreePlusNode::SubtreePlusNode ( const std::string &  name)

Definition at line 22 of file subtree_node.cpp.

virtual BT::SubtreePlusNode::~SubtreePlusNode ( )
overridevirtualdefault

Member Function Documentation

static PortsList BT::SubtreePlusNode::providedPorts ( )
inlinestaticprivate

Definition at line 90 of file subtree_node.h.

BT::NodeStatus BT::SubtreePlusNode::tick ( )
overrideprivatevirtual

Method to be implemented by the user.

Implements BT::TreeNode.

Definition at line 28 of file subtree_node.cpp.

virtual NodeType BT::SubtreePlusNode::type ( ) const
inlinefinaloverrideprivatevirtual

Reimplemented from BT::DecoratorNode.

Definition at line 96 of file subtree_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