The RetryNode is used to execute a child several times if it fails. More...
#include <retry_node.h>
Public Member Functions | |
virtual void | halt () override |
The method used to interrupt the execution of this node. More... | |
RetryNode (const std::string &name, const NodeConfig &config) | |
RetryNode (const std::string &name, int NTries) | |
virtual | ~RetryNode () override=default |
![]() | |
TreeNode * | child () |
const TreeNode * | child () const |
DecoratorNode (const std::string &name, const NodeConfig &config) | |
NodeStatus | executeTick () override |
The method that should be used to invoke tick() and setStatus();. More... | |
void | haltChild () |
Same as resetChild() More... | |
void | resetChild () |
void | setChild (TreeNode *child) |
virtual NodeType | type () const override |
virtual | ~DecoratorNode () override=default |
![]() | |
const NodeConfig & | config () const |
void | emitWakeUpSignal () |
Notify that the tree should be ticked again() More... | |
const std::string & | fullPath () const |
template<typename T > | |
Expected< T > | getInput (const std::string &key) const |
template<typename T > | |
Result | getInput (const std::string &key, T &destination) const |
template<typename T > | |
Expected< StampedValue< T > > | getInputStamped (const std::string &key) const |
template<typename T > | |
Expected< Timestamp > | getInputStamped (const std::string &key, T &destination) const |
getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when. More... | |
AnyPtrLocked | getLockedPortContent (const std::string &key) |
getLockedPortContent should be used when: More... | |
StringView | getRawPortValue (const std::string &key) const |
void | haltNode () |
bool | isHalted () const |
const std::string & | name () const |
Name of the instance, not the type. More... | |
TreeNode & | operator= (const TreeNode &other)=delete |
TreeNode & | operator= (TreeNode &&other) noexcept |
const std::string & | registrationName () const |
registrationName is the ID used by BehaviorTreeFactory to create an instance. More... | |
bool | requiresWakeUp () const |
template<typename T > | |
Result | setOutput (const std::string &key, const T &value) |
setOutput modifies the content of an Output port More... | |
void | setPostTickFunction (PostTickCallback callback) |
void | setPreTickFunction (PreTickCallback callback) |
void | setTickMonitorCallback (TickMonitorCallback 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 (const TreeNode &other)=delete | |
TreeNode (std::string name, NodeConfig config) | |
TreeNode main constructor. More... | |
TreeNode (TreeNode &&other) noexcept | |
uint16_t | UID () const |
BT::NodeStatus | waitValidStatus () |
virtual | ~TreeNode () |
Static Public Member Functions | |
static PortsList | providedPorts () |
![]() | |
static Expected< StringView > | getRemappedKey (StringView port_name, StringView remapped_port) |
template<class DerivedT , typename... ExtraArgs> | |
static std::unique_ptr< TreeNode > | Instantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args) |
static bool | isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr) |
Check a string and return true if it matches the pattern: {...}. More... | |
static StringView | stripBlackboardPointer (StringView str) |
Private Member Functions | |
virtual BT::NodeStatus | tick () override |
Method to be implemented by the user. More... | |
Private Attributes | |
int | max_attempts_ |
bool | read_parameter_from_ports_ |
int | try_count_ |
Static Private Attributes | |
static constexpr const char * | NUM_ATTEMPTS = "num_attempts" |
Additional Inherited Members | |
![]() | |
using | PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)> |
using | PreTickCallback = std::function< NodeStatus(TreeNode &)> |
typedef std::shared_ptr< TreeNode > | Ptr |
using | StatusChangeCallback = StatusChangeSignal::CallableFunction |
using | StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus > |
using | StatusChangeSubscriber = StatusChangeSignal::Subscriber |
using | TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)> |
![]() | |
using | PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)> |
using | PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)> |
![]() | |
NodeConfig & | config () |
void | modifyPortsRemapping (const PortsRemapping &new_remapping) |
template<typename T > | |
T | parseString (const std::string &str) const |
PostScripts & | postConditionsScripts () |
PreScripts & | preConditionsScripts () |
void | resetStatus () |
Set the status to IDLE. More... | |
void | setRegistrationID (StringView ID) |
void | setStatus (NodeStatus new_status) |
setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user! More... | |
void | setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance) |
![]() | |
TreeNode * | child_node_ |
The RetryNode is used to execute a child several times if it fails.
If the child returns SUCCESS, the loop is stopped and this node returns SUCCESS.
If the child returns FAILURE, this node will try again up to N times (N is read from port "num_attempts").
Example:
<RetryUntilSuccessful num_attempts="3"> <OpenDoor> </RetryUntilSuccessful>
Note: RetryNodeTypo is only included to support the deprecated typo "RetryUntilSuccesful" (note the single 's' in Succesful)
Definition at line 39 of file retry_node.h.
BT::RetryNode::RetryNode | ( | const std::string & | name, |
int | NTries | ||
) |
Definition at line 20 of file retry_node.cpp.
BT::RetryNode::RetryNode | ( | const std::string & | name, |
const NodeConfig & | config | ||
) |
Definition at line 29 of file retry_node.cpp.
|
overridevirtualdefault |
|
overridevirtual |
The method used to interrupt the execution of this node.
Reimplemented from BT::DecoratorNode.
Definition at line 36 of file retry_node.cpp.
|
inlinestatic |
Definition at line 48 of file retry_node.h.
|
overrideprivatevirtual |
Method to be implemented by the user.
Implements BT::TreeNode.
Definition at line 42 of file retry_node.cpp.
|
private |
Definition at line 57 of file retry_node.h.
|
staticconstexprprivate |
Definition at line 61 of file retry_node.h.
|
private |
Definition at line 60 of file retry_node.h.
|
private |
Definition at line 58 of file retry_node.h.