This tutorial demonstrates the careBT RateControlNode
. Therefore the SimpleRateControl
node
is implemented which has one child, the AddTwoNumbersMultiTickAction
. The SimpleRateControl
node
throttles the tick rate of the AddTwoNumbersMultiTickAction
node to 1000 ms.
Create a file named ratecontrol.py
with following content.
Or use the provided file: :download:`ratecontrol.py <../../carebt/examples/ratecontrol.py>`
.. literalinclude:: ../../carebt/examples/ratecontrol.py :language: python :lines: 15- :linenos:
The constructor (__init__
) of the SimpleRateControl
node needs to call the constructor (super().__init__
)
of the RateControlNode
and passes the bt_runner, the throttling rate in ms and the signature as arguments.
.. literalinclude:: ../../carebt/examples/ratecontrol.py :language: python :lines: 39-40
In the on_init
function the child node is added.
.. literalinclude:: ../../carebt/examples/ratecontrol.py :language: python :lines: 42-43
Start the Python interpreter and run the SimpleRateControl
node:
>>> import carebt
>>> from carebt.examples.ratecontrol import SimpleRateControl
>>> bt_runner = carebt.BehaviorTreeRunner()
>>> bt_runner.run(SimpleRateControl, '5 2 3 => ?result')
AddTwoNumbersMultiTickAction: (tick_count = 1/5)
AddTwoNumbersMultiTickAction: (tick_count = 2/5)
AddTwoNumbersMultiTickAction: (tick_count = 3/5)
AddTwoNumbersMultiTickAction: (tick_count = 4/5)
AddTwoNumbersMultiTickAction: DONE 2 + 3 = 5
The AddTwoNumbersMultiTickAction
node is executed until the fifth tick completes
the execution of the node. The time between the ticks is 1000 ms.