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.

原文地址:https://www.cnblogs.com/gary-guo/p/14693500.html