政府门户网站建设招标文件/国家职业技能培训学校
1、简介
nav2_bt_navigator实现ROS2节点以行为树的方式来处理。
nav2_behavior_tree模块提供如下功能:
- 一个c++模板类,可以轻松地将ROS2 动作(actions)和服务(services)集成到行为树(Behavior Trees)中。
- 特定于导航的行为树节点。
- 通用的BehaviorTreeEngine类,简化了将BT处理集成到ROS2节点中。
2、什么是行为树?
行为树,即Behavior Tree,简称BT,是Nav2中新引入的流程控制机制,该机制的加入使其在上层业务流程控制上更加灵活。
行为树的决策方式基于他的树形数据结构,在需要进行决策时,从树的根节点出发,按照一定顺序遍历子节点,遍历的过程中进行一系列的条件判断,决策得到最后的行为节点并执行。
- 行为树是树:执行时从根节点开始按照指定的顺序遍历,直到到达终结状态。
- 叶子节点都是可执行的行为:叶子节点会进行具体的操作,可以是一个简单的检测操作,也可以是一个更复杂的操作,节点会返回状态信息(成功,失败,运行中)。
- 内部节点控制树的遍历:内部节点会根据孩子结点返回的状态信息,按照特定的规则确定下一个执行的节点。
关于行为树的详细解释参见:
https://www.behaviortree.dev/
https://navigation.ros.org/behavior_trees/index.html
3、BehaviorTree
nav2依赖libbehaviortree_cpp_v3.so库,源码地址:https://github.com/BehaviorTree/BehaviorTree.CPP
BehaviorTree库的名字空间为BT,即nav2源码中,见到BT名字空间的就是使用的该库,如:BT::Tree、BT::Blackboard等。
(待续……)