行为树 (Behavior Tree, BT) 基本概念

行为树 (Behavior Tree, BT)

refer:《机器人学和人工智能中的行为树》& chatgpt

行为树介绍

  • 构建一个自主智能体在不同任务之间切换的方法。实现机器人在不同行为之间的切换,同时满足“反应性”和“模块化“

  • 相比FSM(有限状态机),由于FSM采用单向传输进行任务跳转,这意味着FSM需要在“反应性”和“模块化”之间进行权衡

    类似“GoTo”语句带来的不便,这主要反映在实现机器人“反应性”过程中,为了使系统具有反应性,需要在组件之间进行多次转换,而FSM组件之间的转化是单向的,这将使程序混乱,从而破坏程序的模块化。

    BT使用由树的内部节点控制的双向传输机制,使得BT可以同时实现机器人的模块化和适应性。

运行原理

1、BT的经典阐述

一、四类控制流节点

  • 序列

  • 回退

  • 并行

  • 装饰器

1.序列节点

伪代码:

将时钟信号从左侧还是发送到其子节点,直到找到返回“失败”或者“执行”的子节点,全部节点返回成功父节点才返回成功。

attention:

只有子结点返回“成功”父节点才会把时钟信号传递给下一个子节点,子节点返回“失败”或者“执行”时父节点将不会将时钟信号传递给下一个子节点。

2.回退节点

回退节点常用于实现一种备选策略:如果某个任务无法完成,就尝试执行另一个任务,直到找到一个可行的解决方案为止。这种方式可以增加系统的鲁棒性和适应性,使其能够在面对不同情况时做出合适的反应。

伪代码:

和序列节点类似,父节点将时钟信号从左开始发送到子节点,直到找到一个“成功”或者“执行”的节点,如果“失败”将时钟信号继续向后传递,如果最后全都“失败”,父节点才返回“失败”。

3.并行节点

伪代码:

父节点将时钟信号发送到所有子节点(N个),设立一个阈值M(M≤N),如果M个子节返回“成功”,则父节点返回成功,如果N-M+1个节点返回“失败”,则父节点返回“失败”,否则返回“执行”。伪代码中“N“为上述描述中的M,”0“为上述描述中的N-M,即为与上述描述中当M=N是时的实现效果相同。

4.装饰器

装饰器节点是带有一个子节点的控制流节点,该节点根据用户定义的规则操纵其子节点的返回状态。并根据预定于的规则有选择性地触发子节点。

例如:

  • 反转装饰器节点:

    • 反转子节点的“成功”和“失败”状态

  • 最多尝试N次的装饰器节点:

    • 只允许节点失败N次,并且总是返回“失败”而不执行该节点。

  • 最大时间执行T秒的装饰器节点:

    • 只允许节点执行T秒,如果T秒后节点还在执行,装饰器将返回“失败”并不再触发该节点。

二、两类执行节点

  • 动作

  • 条件

1.动作节点

伪代码:

当动作节点接收到时钟信号时将该执行命令。

attention:

动作执行的频率可能比BT执行的频率更高,BT的时钟信号用于决策,而动作执行的时钟信号往往来自传感器或其他组件,BT信号只是让动作运行起来,直到他们成功或失败。

但BT库可以通过特定的机制来安全的中止动作。

2.条件节点

伪代码:

当条件节点接收到时钟信号时,它就会检查一个命题,返回“成功”或“失败”,条件节点无法返回“执行”状态。

  • 53
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值