行为树(BT)笔记(三):入门教程

BehaviorTree.CPP是一个C++库,用于轻松集成到分布式中间件如ROS或SmartSoft,也可静态链接到游戏等应用。用户需创建自定义ActionNodes和ConditionNodes,并通过树结构组织,支持回调机制和依赖注入,简化代码模板。树结构可通过XML格式在运行时加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BehaviorTree.CPP是一个C ++库,可以轻松集成到您喜欢的分布式中间件中,例如ROSSmartSoft

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

您需要先了解一些主要概念。

节点VS树

用户必须创建自己的ActionNodes和ConditionNodes(LeafNodes),这个库可以帮助您轻松地将它们组合成树。

将LeafNodes视为构建复杂系统所需的构建块。

根据定义,您的自定义节点是(或应该)高度可重用的。因此,一开始可能需要一些包装接口来调整遗传代码。

tick()回调

任何TreeNode都可以看作是一种调用回调的机制,即 运行一段代码。这个回调的作用取决于你。

在以下大多数示例中,我们的动作仅在休眠屏幕上打印消息一段时间以模拟长时间计算。

继承VS依赖注入

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

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

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

这种方法减少了代码中样板的数量; 作为参考,请查看第一个教程和描述非侵入式与遗传代码集成的教程

NodeParameters

NodeParameters在概念上类似于函数的参数。

它们在实例化树时静态传递。

它们表示为键/值对的列表,其中键和值都是字符串。

这并不奇怪,因为NodeParameters通常是从文件中解析的。

该库提供了一些方法和实用程序函数,可以将值从字符串正确转换为所需的C ++类型。

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

尽管库是用C ++编写的,但树本身可以在运行时组合,从文件中读取树结构。

这里详细描述了XML格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值