An OTP application


    $ rebar3 compile

## Running a BT
- Run shell `rebar3 shell`
- Start dummy butler navigator and rack location service: `dummy_butler_server_sup:start_link(1, "002.002", <<"1">>, "007.008").`
    - Initializes locations for butler 1 and rack <<"1">>
    - Use `butler_functions:get_butler_status(1)` and `butler_functions:get_rack_location(<<"1">>)` to get their locations
    - Use their teleport functions to place them (see code). Can get pids through gproc.
- Create BT: `{ok, Pid} = bt_engine:start_link("src/samples/trees/rackloop.yml", "rackloop_with_count", [{"BId", 1},{"Count", 2}]).`
    - requires yml file name, root node name, proplist of params.
- Tick BT: `bt_engine:tick(Pid, some_event)`
    - Will have to tick it manually till success is achieved. It will return `running` while running and then `success`. Only if something irrecoverable happens it will (should) return failure.
- Visualize: