Skip to content

Latest commit

 

History

History
59 lines (41 loc) · 1.91 KB

simple_ratecontrol.rst

File metadata and controls

59 lines (41 loc) · 1.91 KB

Writing a RateControlNode

Overview

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 the SimpleRateControl node

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 code explained

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


Run the example

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.