【Nav2中文网】导航基本概念之BT行为树

本文来自Nav2中文网:https://nav2.fishros.com 导航概念

行为树

行为树 (BT) 在复杂的机器人任务中变得越来越普遍。

它们是待完成任务的树形结构。行为树为定义多步或多状态应用程序创建了一个更具可扩展性和人类可理解性的框架。

这与有限状态机 (FSM) 相反,后者可能有几十个状态和数百个状态过渡。一个例子就是踢足球机器人。将足球比赛的逻辑嵌入FSM将具有挑战性,且容易出错因为有许多可能的状态和规则。此外,像从左侧、右侧或中间射门这样的建模选择尤其不清楚。使用行为树则可以为许多行为创建和重用基本原语,像 “kick” “walk” “go to ball” 。更多信息可以在 这本书(https://arxiv.org/abs/1709.00084)找到。强烈建议阅读第1-3章,以更好地理解术语和工作流程。大约需要30分钟。

Nav2项目使用 BehaviorTree CPP V3 (https://www.behaviortree.dev/)作为行为树库。在 BT Navigator 中,创建了可以构建为行为树的节点插件。将节点插件加载到BT中,并且在解析该行为树的XML文件时,将关联注册的名称。然后,我们就可以通过该行为树进行导航。

使用此库的一个原因是它能够加载子树。这意味着可以将Nav2行为树加载到另一个更高级别的BT中,以将此项目用作节点插件。一个例子是在足球比赛中,使用Nav2行为树作为 “go to ball” 节点,将足球检测作为更大任务的一部分。此外,为BT提供了一个 NavigateToPoseAction 插件,因此可以从客户端应用程序通过通常的动作接口调用Nav2软件堆栈。

猜你喜欢

转载自blog.csdn.net/qq_27865227/article/details/123236707