Skip to content

2. 架构

Kehan.Xue edited this page Aug 27, 2020 · 1 revision

架构

策略模块分为策略策略选择两个子模块。策略负责和底层交互,将底层的跑定点等动作封装为一系列的抽象动作。而策略选择负责评估场面态势,在策略当中选择执行最合适的动作。

top-infra-Page-1.svg
图 2.1 模块架构示意图


整体的数据流图如下所示:

top-infra-第 2 页.svg
图 2.2 数据流图

目录结构

代码文档

策略子模块

策略包含三个层级,分别在不同的抽象层次上执行策略操作。

底层执行(executor)

底层执行是策略中最底层的模块,它分为两个部分:底盘(chassis_exe)和云台,两者均设定了多种状态模式并实时更新,便于上层函数操作。其中底盘负责机器人的运动任务,通过全局规和局部规划器、PID控制实现速度发布、到定点等基础任务。而云台控制炮台,可实现炮台角度调整、子弹发射等相关任务。

机器人动作(robot_action)

机器人动作基于底层执行模块,封装了我方机器人的运动组合。其中对我方机器人有:底盘运动(旋转、前进、静止)、云台动作(调整枪口朝向、射击)、与我方其他机器人进行通信等基础功能并对敌方机器人的状态和信息进行预判和评估,为我方机器人的进攻和防守提供判断条件。

策略(strategy)

这一部分基于机器人动作和底层执行,为最上层的策略算法。策略分为移动策略(move_strategy)和射击策略(shoot_strategy)两大部分。移动策略中实现了机器人进入buff区、进攻防守等行为。射击策略可分别对状态不同的敌方机器人进行进攻或停止射击。

top-infra-第 3 页.svg
图 2.3 策略流程示意图

move_strategy

序号 策略类名 解释
3 CaptureBulletsMoveStrategy 移动至弹丸补给区获取子弹补给
4 CaptureEnemyBloodMoveStrategy 移动至敌方回血区(在敌方血量充足的情况下敌方回血区可通行,但不会有回血效果)
5 CaptureOurBloodStrategy 移动至我方回血区获得血量
6 KeepDirectionAttackMoveStrategy 以某种姿态跑到适合进攻的位置
7 KeepDirectionDefenseMoveStrategy 以某种姿态跑到适合防御的位置
8 StopMove 停止移动


shoot_strategy

序号 策略类名 解释
0 StopShootStrategy 停止射击行为
1 ToBetterOppShootStrategy 攻击状态较好的敌方机器人(根据机器人动作中对敌方状态进行评估的函数)
2 ToWorseOppShootStrategy 攻击状态较差的敌方机器人

策略选择子模块

我们选择了深度强化学习算法进行策略选择。作为对照,我们同时还开发了基于行为树的策略选择。其详细实现方式在下面算法一节描述。