集群行为是一种常见于自然界中鱼群、鸟群、蜂群等低等群居生物的集体行为,受此启发形成了无人机集群的概念。无人机集群不是多无人机间的简单编队,而是通过必要的控制策略使之产生集群协同效应,从而具备执行复杂多变、危险任务的能力。目前无人机集群主要分为集中式和分布式,其在目标搜索、定位和跟踪等方面具有巨大的应用潜力。
集中式软件架构和分布式软件架构
-
集中式软件架构
传统的集中式软件架构工作方式是将集群控制系统的所有任务计算及任务分配工作全部运行在一个主节点的计算单元上,由该主计算单元通过算法计算出任务执行方案,再将该执行方案分发到其它从节点,从节点则按照主节点发布的执行方案执行任务即可。
此种软件架构存在一定的弊端,由于所有计算任务都由主节点来完成,当集群控制系统所运行的算法较为复杂、计算任务较为庞大时,对主节点运算单元的性能有极大要求。同时,从节点计算单元只执行分配的任务而不参与计算,又会造成从节点运算资源的浪费。
-
分布式软件架构
分布式软件架构则是由集群控制系统给所有计算单元下达主任务,各计算单元独自计算自己所要完成的子任务。即各计算单元通过执行算法将主任务拆分成多个子任务,各自并发执行自己所拆分的子任务,从而最终完成主任务。
相对于集中式软件架构,分布式软件架构的这种方式不仅能最大限度地运用计算资源、提升执行效率,也更能体现集群中协同这一概念。下图为Prometheus集群子模块控制系统框架:
Prometheus分布式软件架构算法
视频中所有集群使用的均是Prometheus集群子模块控制系统,采用分布式软件架构,结合socket网络通信编程以实现多机通信及机间感知。另外,通过在控制系统中添加诸多异常检测机制,可以更大程度减少由于误操作导致的炸机风险,为研究集群相关功能的开发者提供一个安全高效的二次开发平台。
上述集群系统由任务生成及任务选择两部分组成。任务生成算法根据当前无人机的数量以及选择的集群队形,生成满足集群队形的无人机数量的任务目标点位。任务目标点位生成后,选择算法会创建一个代价成本矩阵,并依次遍历当前各无人机到各任务目标点位的代价成本(即距离),并填入矩阵当中。最后遍历代价成本矩阵,确认最小代价值对应的目标点位以及无人机编号,将此目标点位分配给此无人机编号对应的无人机。
循环执行以上步骤,最终分别计算出各无人机对应的任务目标点位。但是此算法主要保证局部最优解而非全局最优解,即最少有一台无人机飞行的飞行代价最小。如果大家想实现全局最优解,可参考以下架构进行二次开发。
Prometheus项目相关资源:
1、项目Github网址:https://github.com/amov-lab/Prometheus
2、项目Gitee网址:https://gitee.com/amovlab/Prometheus
3、使用手册:https://wiki.amovlab.com/public/prometheus-wiki/