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.