BehaviorTree.CPP行为树学习:Getting started

开始Getting started

BehaviorTree.CPP CPP是一个C++库,可以轻松集成到您喜爱的分布式中间件中,如ROS或SmartSoft。

您可以将其静态链接到应用程序中(例如游戏)。

这些是你首先需要理解的主要概念

【原英文链接】Getting started - BehaviorTree.CPP

Nodes vs Trees

用户必须创建自己的ActionNode和ConditionNode(LeafNode);这个库可以帮助您轻松地将它们组合成树。

将LeafNode视为组成复杂系统所需的构建块。

根据定义,您的自定义节点是(或应该是)高度可重用的。但是,在开始时,可能需要一些包装接口来调整旧的代码(指没有用行为树之前的代码)。

The tick() callbacks

任何TreeNode都可以看作是调用回调的机制,什么时候运行代码取决于设置的tick 回调。

在下面的大多数教程中,我们的Actions将简单地在控制台上打印消息或休眠一定时间来模拟长时间的计算。

在生产代码中,特别是在模型驱动开发和基于组件的软件工程中,操作/条件(Action/Condition) 可能会与系统的其他组件或服务通信。

Inheritance vs dependency injection.继承和包装器

要创建自定义TreeNode,您应该从适当的类继承。

例如,要创建自己的同步Action,应该从类SyncActionNode继承。

或者,库提供了一种机制来创建TreeNode,将函数指针传递给包装器(依赖注入)。

这种方法减少了代码中样板文件的数量;

Dataflow, Ports and Blackboard数据流、端口和黑板

端口将在后面中详细解释。

目前,重要的是要知道:

黑板是树的所有节点共享的键/值(key/value)存储。

端口是节点之间可以用来交换信息的机制。

使用黑板上的相同键(key)“连接”端口。

编译时(C++)必须知道节点的端口数、名称和类型;端口之间的连接在部署时完成(XML)。

使用XML格式在运行时加载树

可以使用xml来加载树,在程序刚开始运行的时候

【说明】

BehaviorTree.CPP行为树学习系列是翻译自源英文网站,由于个人知识能力水平有限,如有错误的地方,请在评论区留言,会不断修改和完善的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值