Nav2之行为树(BT)

2022-06-29  本文已影响0人  WilsonGuo
ROS2

      行为树,即Behavior Tree,简称BT,是Nav2中新引入的流程控制机制,该机制的加入使其在上层业务流程控制上更加灵活,对开发者来说更加友好,所覆盖的范围如下图所示,主要涵盖了条件插件、动作插件、控制插件、装饰器插件等四大类别,具体每个插件的作用可以参照Navigation2-BT官方网站,  BehaviorTree.CPP官网

行为树的样例介绍

重点了解一下控制插件,该插件决定了所有action的执行流程和顺序

PipelineSequence插件

勾选第一个子节点直到它成功,然后勾选第一个和第二个子节点直到第二个成功。

再然后勾选第一个、第二个和第三个子节点,直到第三个成功,依此类推。

如果在任何时候子节点返回RUNNING,那就不会改变行为。

而如果在任何时候一个子节点返回FAILURE,这会停止所有子节点并返回FAILURE。

示例:

  <PipelineSequence>

      <!--Add tree components here--->

  </PipelineSequence>

RoundRobin插件

用于为BT子节点创建循环行为的自定义控制流节点。

示例:

  <RoundRobin>

     <!--Add tree components here--->

   </RoundRobin>

RecoveryNode

RecoveryNode流程

RecoveryNode

RecoveryNode是一个有两个子节点的控制流节点。

当且仅当第一个子节点返回SUCCESS时,它才会返回SUCCESS。只有当第一个子节点返回FAILURE时,才会执行第二个子节点。如果第二个子节点返回SUCCESS,则会再次执行第一个子节点。

用户可以指定在返回FAILURE之前应该执行多少次恢复动作。在nav2中,RecoveryNode包含在行为树中,用于在发生故障时执行恢复动作。

具体流程如上图,该节点流程比较复杂,不过也是最常用的,需要搞明白流程走向。

输入端口:

number_of_retries端口:数据类型为int,默认值为1。端口描述—用于设置执行恢复动作的次数。

示例:

     <RecoveryNode number_of_retries="1">

           <!--Add tree components here--->

     </RecoveryNode>

Nav2中所涉及的行为、条件、控制、装饰
上一篇 下一篇

猜你喜欢

热点阅读