Hi @facontidavide
I am a robotics researcher from USA and in a recent internship, we have been extensively using BehaviorTree.CPP v3.8 for orchestrate a variety of autonomy and robot navigation related tasks. This backdrop leads to the following feature request
Feature Proposal
Nav2, a popular open-source project from OpenNavigation is known for adding a number of useful Control, Action and Decorator nodes. Some of the most useful ones are PipelineSequence, RecoveryNode and RateController
Some autonomy related projects may have constraints of not using ROS 2 ecosystem. Without ROS 2 and by extension Nav2, these useful nodes become inaccessible natively from BehaviorTree.CPP.
Proposed Solution
I propose to open a PR for v3.8 branch that backports a number Nav2 nodes as native BehaviorTree.CPP nodes.
From what I have found out so far, the implementation of these nodes may have minimal dependency on the actual Nav2 stack. An example: pipeline_sequence.hpp
In my opinion, the following nodes may be most suitable for application across various domains
Control nodes
- PipelineSequence: reticks preceding child nodes that return
SUCCESS.
- RecoveryNode: Two child node that only returns
SUCCESS if and only if left child is successful.
- NoneblockingSequence: NonblockingSequence ticks all children until one fails, re-ticking running/successful ones, and returns SUCCESS only if all succeed.
Decorator nodes
- Rate Controller: "Controls the ticking of its child node at a constant frequency. The tick rate is an exposed port"
Additional Context
Why v3.8? I have recently worked with a number of robots from notable robotics companies who are still using ROS 2 Humble and the humble branch of Nav2. As far as I know, BehaviorTree.CPP v3.8 is the version supported by Nav2 Humble.
Hi @facontidavide
I am a robotics researcher from USA and in a recent internship, we have been extensively using BehaviorTree.CPP v3.8 for orchestrate a variety of autonomy and robot navigation related tasks. This backdrop leads to the following feature request
Feature Proposal
Nav2, a popular open-source project from OpenNavigation is known for adding a number of useful Control, Action and Decorator nodes. Some of the most useful ones are
PipelineSequence,RecoveryNodeandRateControllerSome autonomy related projects may have constraints of not using ROS 2 ecosystem. Without ROS 2 and by extension Nav2, these useful nodes become inaccessible natively from BehaviorTree.CPP.
Proposed Solution
I propose to open a PR for
v3.8branch that backports a number Nav2 nodes as native BehaviorTree.CPP nodes.From what I have found out so far, the implementation of these nodes may have minimal dependency on the actual Nav2 stack. An example: pipeline_sequence.hpp
In my opinion, the following nodes may be most suitable for application across various domains
Control nodes
SUCCESS.SUCCESSif and only if left child is successful.Decorator nodes
Additional Context
Why
v3.8? I have recently worked with a number of robots from notable robotics companies who are still using ROS 2 Humble and the humble branch of Nav2. As far as I know, BehaviorTree.CPP v3.8 is the version supported by Nav2 Humble.