天天看點

Getting started

BehaviorTree.CPP可以很容易整合進一些分布式的中間件當中,如ROS,SmartSoft;

可以靜态連結到你的應用當中;

一些概念的了解:

節點和樹

使用者必須建立自己的行為節點和條件節點;這個庫可以很容易将使用者建立的節點組織到樹當中;

把葉子節點當做積木(組成部分),可以用于建構複雜的系統;

自定義的節點應該可以高度複用,但是,開始的時候,一些包裝接口需要與你的代碼相适配。

The tick()回調函數

任何TreeNode可以被認為一種喚醒一個回調函數的機制,如,運作一小段代碼。

在實際代碼中,尤其是在Model Driven Developmen 和 Component Based Software Engineering中,一個行為和條件很可能與其他系統元件和服務通信。

繼承和依賴注入模式

為了建立一個自定義的TreeNode,需要繼承适當的類。

例如,為了建立你的同步行為,你應當從類SyncActionNode中進行繼承。

另外,這個庫提供了一種機制來建立一個TreeNode(通過一個函數指針指向一個包裝器-依賴的注入)。

這種方法減少了你代碼中樣闆範例的數量;as a reference please look at the ​​first tutorial​​ and the one describing ​​non intrusive integration with legacy code​​.

資料流,接口和黑闆

接口在後面進行解釋Ports are explained in detail in the ​​second​​ and ​​third​​ tutorials.

目前需要知道的是:

一個黑闆是一個鍵/值容器,這個容器可以由一個樹的所有節點共享。

接口是一種機制,節點之間可以用該機制進行資訊交換。

接口通過使用黑闆上同樣的key進行互相連接配接。

數量,名字以及一個節點的端口的種類必須在c++編譯階段知道;端口之間的連接配接在部署時間(XML)中完成。

在運作時使用XML格式來加載樹

盡管庫是使用C++來寫的,樹本身是可以在運作時建構,更具體的是,在部署時,因為在執行個體化樹的開始一次性完成。

An XML format is described in details ​​here​​.