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.

 

posted on   gary_123  阅读(268)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2017-04-23 3.空域图像处理的洪荒之力

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示