水下运载器(Underwater Vehicle)是一种潜航式运载工具,具有灵活性、隐蔽性、突然性等特点,可执行输送侦查人员登陆执行侦查任务,还可以输送潜水员执行水下救援、勘探和设备维修等任务[1]。乘员乘坐运载器在水下结束工作任务后,不能立即上浮,否则会有减压病发生的可能[2]。正确操作应是乘员根据随身潜水电脑所提供的安全减压方案进行逐级停留减压[3]。但潜水电脑仅是警示提醒功能,无控制功能,与人装结合度较松散。此外,由于水下环境特殊,乘员长时间在低温水下工作会导致乘员环境感知力降低,反应变迟钝,因此乘员在手动控制运载器上浮减压过程中,可能会出现在停留层没有停留足够时间或越过某一停留站直接上浮等一系列问题。为了解决上述问题,对运载器提出自动上浮减压需求,运载器在水下特殊环境中的上浮减压行为决策成为了一个关键问题。
有限状态机(Finite State Machine,FSM)作为一种经典的行为决策模型,可描述系统不同状态之间的相互转换,使用状态对系统进行建模,状态之间的过渡通过事件的触发来形成,即状态只对事件做出响应,执行动作或发生跳转。有限状态机可用图形化编辑器来创建和更新修改,可清晰看出系统内部所有可能的状态转换,逻辑直观易懂。但使用有限状态机对复杂系统进行建模后,状态跳转太多,有限状态机就难以维护,此外,增加状态将会使状态机的复杂度呈指数化增长。为了降低状态机的复杂度,增加状态机的易维护程度,Harel[4]提出了分层有限状态机(Hierarchical Finite State Machine,HFSM),分层有限状态机是对有限状态机的改进,可将状态机分为不同层级,每个层级可以包含子状态机或者状态,这样可减少状态之间的连接,提高状态机的可读性和可扩展性,从某种程度上限制了状态的跳转,实现了无关状态间的隔离。相比有限状态机,分层有限状态机有效提高了系统的模块化水平。但不同状态机之间的状态很难做到重用,为了复用状态需要做大量冗余的工作。此外,分层有限状态机虽然可以将任务划分成子任务,但子任务仍然通过依赖于状态的转换而相互依赖。
为了解决上述问题,行为树(Behavior Tree,BT)作为一种新的行为决策模型被研究人员提出,行为树由分层有限状态机演变而来,早期重要思想被程序员发布在博客和论坛上[5],其表现为一个有向根树,树中结点被分为控制流程节点和执行结点。行为树中的每个子树都是看作一个模块,每一个模块都可被应用、测试、重用[6],模块间的耦合度很低。此外,行为树支持代码重用,行为树中的子树可移植到行为树的多个位置,有效解决了有限状态机和分层有限状态机在复用状态时工作量大且复杂的问题。伴随着行为树技术的发展,越来越多的研究人员开始使用行为树在智能体行为决策方面进行研究。胡能浩等[7]提出了一种基于行为树的机器人能源自维持行为决策方法,有效解决了机器人的能源自我补给问题。Markowitz等[8]基于行为树技术设计了智能摄像机系统,该智能摄像机依据电影拍摄原理进行行为决策,可根据游戏场景的变化改变拍摄技巧,为游戏提供了更强大的视觉体验。
国内外目前针对运载器上浮减压行为决策的研究较少,行为树技术也主要被用于游戏领域和机器人控制领域。本文将分析运载器上浮减压的一系列过程,通过行为树技术对运载器的行为决策进行建模,利用运载器主控软件模拟水下工作时间和下潜深度,基于运载器六自由度运动方程仿真得出运载器上浮减压各项数据。仿真结果验证了该上浮减压行为决策模型的可行性,加强了乘员操作运载器在水下工作的安全性,提高了运载器控制系统的模块化和智能化。
1 行为树技术 1.1 行为树的组成行为树一个包含逻辑节点和行为节点的树状结构,执行机构周期深度遍历行为树节点,并执行各个节点所定义的动作。其中,逻辑节点决定了执行其子节点的逻辑,并将执行结果反馈给父节点。行为节点定义了需执行的具体动作,并将执行结果反馈给父节点。一棵行为树可以有很多个子节点或行为子树,执行子树或子节点会得到不同的返回状态:Success为执行成功、Failure为执行失败、Running为正在执行。
行为树执行的特点为:
1)任何子树根节点的执行返回值只依赖于其子节点的执行结果和树的其他部分无关;
2)行为树的执行顺序是固定的,每次都是对整个树的遍历,即使由于逻辑需跳过某些子树但不会改变节点之间的执行顺序。
行为树节点从结构上可分为叶节点和组合节点。叶节点可分为Condition节点和Action节点,其中Condition节点用来测试当前是否满足某些性质或条件,Action用来完成实际动作。组合节点用来控制树的遍历方式,最常用的组合节点有Fallback节点、Sequence节点、Parallel节点、Decorator节点等。各个节点类型及其特性如表1所示。
1)Fallback节点。该节点类按照既定顺序遍历执行子节点行为,直到某一子节点行为处于运行或执行成功,则停止遍历返回“运行”或“成功”,如果全部子节点行为执行失败,则返回“失败”。
2)Sequence节点。该节点类按照既定顺序遍历执行子节点行为,直到某一子节点行为处于运行或执行失败,则停止遍历返回“运行”或“失败”,如果全部子节点行为执行成功,则返回“成功”。
3)Parallel节点。该节点按照顺序遍历执行子节点行为,并在全部子节点执行结束后,统计执行成功的子节点是否满足预设值或失败的子节点数是否满足预设值,判断该节点动作是否成功。
4)Decorator节点。该节点仅包含一个用户自定义行为的子节点,子节点执行完毕后,返回用户自定义规则的运行结果。
1.3 叶子节点1)Action节点。该节点执行既定行为,执行中返回“运行”,执行成功返回“成功”,执行失败返回“失败”。
2)Condition节点。该节点检查既定条件状态,条件状态满足返回“成功”,条件状态不满足返回“失败”,该节点类不返回“运行”状态。
2 运载器自动上浮减压智能控制架构运载器智能化的核心目标是运载器可在无人干预情况下完成预设工作。在执行工作任务过程中,面对突发情况(呼吸系统供气不足,乘员产生生理不适等),要求具备一定自主决策及行动能力。运载器自动上浮减压智能控制架构从任务输入到动作执行可分为3层:
1)任务层。任务层来源于明确的减压上浮工作任务输入,要求清晰准确的表达任务。任务可通过配置文件的方式动态加载到运载器中,任务最终将转换为行为树的顶层动作输入。任务配置文件可通过专用领域描述语言进行描述,或直接编写成行为树描述文件。
2)行为决策层。行为决策层提供智能化自主决策功能。运载器上浮减压策略由行为树建模,该层包含大量行为树执行的单元动作模块和逻辑模块,通过对逻辑模块和动作模块进行组合,行为树可表达运载器上浮减压过程中的动态行为和逻辑规则。
3)动作执行层。动作执行层包含最终控制运载器动作的模块,对应于行为树叶子节点。行为树叶子节点通过向动作模块发送命令事件控制模块动作。
2.1 运载器上浮减压任务分析为了构建行为树的功能,现描述一个运载器减压上浮的执行。假设运载器已在水下工作结束,现在需要上浮减压,减压上浮模块根据水下工作时间和下潜深度基于空气潜水减压技术要求(GB/T 12521-2008)[3]中的空气潜水减压表计算减压方案,运载器依据减压方案自动在每一个停留层停留规定时间,最后到达水面,完成上浮减压任务。如果上浮减压过程中出现意外情况,系统会立即请求乘员手动介入控制运载器。
2.2 行为树构建运载器在2.1节中描述的上浮减压任务根据运载器下潜深度和水下工作时间分为无需上浮减压和需上浮减压2部分,本文将根据这2部分行为分别来构建行为树。单独将这些行为分别作为一个模块来构建行为树的原因是为根据这些行为构建的行为树模块,在需要时可快速移植到其他型号的运载器中,移植过程中不需要做任何复杂改动。因为行为树中代码重用主要体现在节点重用上,一个节点和外界的接口只体现在需要访问和操作的环境变量和节点返回值上。行为树节点返回值只包含3个固定值,和所在节点、所在位置等信息无关,具有很高的移植性。
2.2.1 无需减压直接上浮行为子树依据空气潜水减压技术要求(GB/T 12521-2008),当工作深度≤12 m且工作时间≤360 min时,无需减压停留,可直接上浮至水面。当乘员启动上浮减压程序后,系统会读取运载器水下工作时间和工作期间最大深度,如果符合无需减压的条件,Action节点会向运载器发出寻深0 m的寻深指令,直接上浮至水面。构建该行为的行为树包括1个Sequence节点,1个Condition节点,1个Action节点,如图1所示。
依据空气潜水减压技术要求(GB/T 12521-2008),如果运载器下潜深度大于12 m且工作时间大于10 min,需计算减压方案,减压方案会基于保守性原则[9]生成每一个停留层及停留时间,上浮减压程序根据减压方案动态生成行为子树,生成的行为子树数量取决于减压方案中停留层的层数,该行为子树会判断运载器是否已到达停留层停留减压,如果未到达,Action节点依据计算好的停留层深度向运载器发出前往规定停留深度的寻深指令,前往该停留层停留减压,完成停留减压后继续前往下一停留层,直到完成所有停留层的停留减压。运载器在结束上浮减压停留后上升至水面,完成上浮减压任务,如图2所示。
根据上述两部分模块所构建的行为子树,通过Fallback节点将2个子树串联在一起,并根据优先级对2个子树从前到后进行排序。此外,为了保障乘员的生命安全,在自动上浮减压过程中出现运载器不受控等意外状况,系统会立即请求乘员手动介入控制运载器。构建出的自动上浮减压行为树,如图3所示。
行为树不断生成时钟信号(Tick)并对树进行闭环遍历,动作的执行和终止是由时钟信号的遍历决定的,而时钟信号的遍历又取决于叶节点的返回状态[7]。当运载器在水下工作深度小于等于12 m且工作时间小于等于360 min时,第一个行为子树中的Condition节点返回状态“成功”,时钟信号继续传递给该行为子树的Action节点,运载器无需减压直接上浮至水面,完成后返回状态“成功”,则Sequence节点返回状态“成功”,根节点Fallback返回状态“成功”,任务结束。当运载器在水下工作深度大于12 m且工作时间大于10 min时,第一个子树中的Sequence节点返回“失败”,此时时钟信号传递到计算减压方案行为子树中的Condition节点,该节点返回状态“成功”,时钟信号传递给Action节点,计算减压方案,完成后返回状态“成功”,则Sequence节点返回状态“成功”。此时,时钟信号继续传递给停留减压行为子树中的Condition节点,如果运载器已到达规定停留层并完成停留,该节点返回状态“成功”,则Fallback节点返回状态“成功”,时钟信号继续传递给上升至水面行为子树中的Condition节点;如果已到达水面,该节点返回状态“成功”,则Fallback节点返回状态“成功”,上一级的Sequence节点返回“成功”,根节点Fallback返回状态“成功”,上浮减压任务完成。
3 运载器上浮减压行为树仿真实验本文选择BehaviorTree.CPP行为树库作为实现该模型的框架。BehaviorTree.CPP基于C++14,常用来做任务或状态管理,实现行为树的控制逻辑,该行为树库通过内置XML解析器可解析以XML格式描述的运载器自动上浮减压行为树,并且实现了经典行为树模型中的Sequence节点、Fallback节点、Condition节点等,因此可用来模拟或执行用户任意定义的行为树[10]。
为了验证行为树模型的有效性和正确性,通过模拟乘员操纵运载器在不同深度和水下工作时间的情况下,分析运载器在上浮减压过程中的航迹,并且检查运载器是否按照减压方案上浮减压停留。
3.1 水下10 m工作60 min工况模拟乘员操纵运载器下潜10 m并工作60 min,仿真得到运载器上浮减压航迹如图4~图6所示。
根据仿真得到的运载器航迹图和深度曲线图可分析得出:乘员操纵运载器下潜至10 m并在水下工作60 min后,启动自动上浮减压程序,运载器自动上浮至水面,任务结束。依据空气潜水减压技术要求中的空气潜水减压表,该情况下的减压方案为无需减压直接上浮,仿真结果显示运载器按照减压方案要求成功上浮至水面。
3.2 水下30 m工作70 min工况模拟乘员操纵运载器下潜30 m并工作70 min,仿真得到运载器上浮减压航迹如图7~图9所示。
依据空气潜水减压技术要求中的空气潜水减压表,在运载器下潜至30 m并在水下工作70 min后准备上浮减压,该情况下的减压方案如表2所示。
根据仿真得到的运载器航迹图和深度曲线图可分析得出,乘员操纵运载器下潜至30 m并在水下工作70 min,运载器首先前往第一停留层15 m停留2 min接着前往12 m停留19 min,然后前往9 m、6 m、3m 分别停留14 min、22 min、28 min,完成上浮减压任务,接着前往水面。仿真结果显示,运载器按照表2中的减压方案正确上浮并在规定停留层停留减压直到上浮至水面。
4 结 语本文提出一种基于行为树技术和减压方案的运载器自动上浮减压行为决策模型,利用BehaviorTree.CPP框架实现该行为决策模型的功能,使用Matlab/Simulink软件基于运载器六自由度运动方程进行了仿真,仿真结果表明运载器在规定停留层停留了一定时间均符合减压方案要求,验证了该行为决策模型的可行性,为运载器上浮减压控制模型的构建提出了新的方法和思路。
[1] |
曾林. 我国水下运载器发展探讨[J]. 中国新技术新产品, 2016(24): 148-149. DOI:10.13612/j.cnki.cntp.2016.24.114 |
[2] |
陶恒沂. 潜水医学[M]. 上海: 第二军医大学出版社, 2001.
|
[3] |
GB/T 12521-2008. 空气潜水减压技术要求[S]. 2008.
|
[4] |
HAREL D. Statecharts: a visual formalism for complex systems[J]. Science of Computer Programming, 1987, 8(3): 231-274. DOI:10.1016/0167-6423(87)90035-9 |
[5] |
IOVINO M , SCUKINS E , STYRUD J , et al. A survey of behavior trees in robotics and AI[J]. Robotics and Autonomous Systems, 2022: 154.
|
[6] |
COLLEDANCHISE M , GREN P . Behavior trees in robotics and AI: an introduction[M]. CRC Press, 2018.
|
[7] |
胡能浩, 李泰博, 刘红卫. 基于行为树的机器人能源自维持行为决策方法研究[C]//中国自动化学会. 2022中国自动化大会论文集, 2022.
|
[8] |
MARKOWITZ D , KIDER J T , SHOULSON A , et al. Intelligent camera control using behavior trees[J]. Springer, Berlin, Heidelberg, 2011.
|
[9] |
谢正君, 李汪, 凌子腾. 工程潜水空气潜水减压表的正确选择与使用[J]. 珠江水运, 2004(11): 52-54. DOI:10.14125/j.cnki.zjsy.2004.11.027 |
[10] |
谢赛东. 扫地机器人行为决策开发平台设计与实现[D]. 广州: 华南理工大学, 2023.
|