当前位置: 首页 > news >正文

【ROS】Nav2源码之nav2_behavior_tree详解

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等。

(待续……)

http://www.lryc.cn/news/216024.html

相关文章:

  • SpringBoot---myBatis数据库操作
  • 力扣541.反转字符串II
  • 撕掉Hadoop标签,Cloudera未来可期吗?
  • 排序算法(1)
  • Top 5 Cutting-edge technology examples 2023
  • 【算法|滑动窗口No.3】leetcode3. 无重复字符的最长子串
  • 元素的水平居中和垂直几种方案
  • JS和JQuery的区别
  • 延时摄影视频制作工具 LRTimelapse mac中文版特点介绍
  • Mac电脑怎么运行 Office 办公软件
  • FPGA 如何 固化程序到 FLASH中
  • 电源管理(PMIC)MAX20428ATIA/VY、MAX20428ATIC/VY、MAX20428ATIE/VY适合汽车ADAS应用的开关稳压器
  • 十年JAVA搬砖路——Linux搭建Ldap服务器。
  • 论文 辅助笔记:t2vec train.py
  • 同时标注分割、检测、多分类属性的工具
  • LeetCode75——Day24
  • B端企业形象设计的正确姿势,你学会了吗?
  • 我在Vscode学OpenCV 基本的加法运算
  • 数据结构与算法解析(C语言版)--线性表
  • pthread 名字设置及线程标识符获取
  • 17、Flink 之Table API: Table API 支持的操作(1)
  • Ubuntu:解决PyCharm中不能输入中文或者输入一个中文解决方法
  • Vue3.0 reactive与ref :VCA模式
  • 项目实战 | 使用Linux宝塔面板搭建商城公众号小程序基础框架
  • IDEA远程调试代码
  • 目标检测 图像处理 计算机视觉 工业视觉
  • 【1day】宏景OA get_org_tree.jsp接口SQL注入漏洞学习
  • 设计模式-迭代子模式
  • 绿色通道 快速理赔,渤海财险用实干书写服务品牌
  • 微信小程序怎么制作?【小程序开发平台教学】