无人机集群协同导航构型自适应选择算法

无人机集群协同导航构型自适应选择算法

Evandworld
E-mail:evandworld@foxmail.com

摘要

针对卫星定位系统用于无人机集群时成本高、精度低等问题,本文提出一种基于卡尔曼滤波和概率的无人机集群构型自适应选择算法。在自适应扩展卡尔曼滤波的基础上,基于集群的概念判断适用于卫星定位的领航无人机(主机),剩余的从机(僚机)由相对导航确定与主机之间的位置关系,进而进行绝对定位。仿真实验结果表明:所用的无人机集群构型自适应选择算法可以挑选出适合用于卫星定位的无人机,可以为后续的协同导航提供高精度的位置参考点。

关键词

协同导航; 扩展卡尔曼滤波; 无人机集群; 置信传播

引言

基于全球导航卫星系统(Global Navigation Satellite System, GNSS)的导航方法因为使用成本低、导航精度高而被广泛运用,但是在城市、森林等特殊环境下,卫星的信号极易因为特殊的环境或障碍物遮挡,造成不可提前预测的精度降低乃至定位失败的问题。对于无人机(Unmanned Aerial Vehicle, UAV)集群,可将群体中的无人机划分为主机和僚机,并采用协同导航的方法增强群体的总体导航能力。近年来,关于协同导航的研究日益活跃,特别是在支持军事行动和智能交通系统(Intelligent Transportation Systems, ITS)方面,这是因为此类应用经常面临GNSS挑战(拒止)的环境。例如,在军事情况下,车辆可能会从GNSS随时可用的情况转变为完全被拒绝的情况。在 ITS 背景下,城市峡谷通常会导致极端的多径、GNSS 完全阻塞和/或非视距 (LOS) 信号的接收,这可能导致高达数百米的位置误差。
基于上述分析,协同定位技术目前是UAV集群方面的热门问题,主要的研究内容有:基于加权最小二乘法间接融合自身位置、利用卡尔曼滤波(Kalman Filter, KF)融合观测信息和自身增量导航数据、实现精确定位。然而,上述方法均没有考虑到作为参考无人机的主机位置的不确定性,这也是协同定位不同于简单的绝对定位的地方。基于协同导航最终的定位精度不仅取决于测距传感器的能力,还取决于相邻无人机的位置精度和编队这一实事,文献提出了一种适合无人机群体协同导航的协同精度因子计算方法,并设计了一种基于测距信息的协同组合导航方法,有效分析编队对无人机群定位精度的影响。但是这一方法需要进行多次矩阵求逆的运算,计算复杂度随UAVs的数量增长呈现指数级的上升。文献对处于弱GNSS信号区域的UAV,采用相对定位的方法,提高集群整体的定位与导航的性能。
本文提出一种高效且准确的方法,在卡尔曼滤波的基础上,利用概率模型对潜在的领航主机进行误差分析,选择GNSS精度较高的若干个无人机,方便后续僚机的相对定位。

算法解释

将UAV集群中搭载了GNSS/INS/UWB的无人机称为(潜在)主机,其中GNSS和INS可以进行组合导航以获得实时的绝对位置信息,UWB用于与僚机进行相对定位;僚机仅搭配UWB和INS。

自适应EKF预处理

因为KF只适用于线性的系统,而无人机导航信息的滤波具有一定的非线性特征,现有快照LS方法、扩展卡尔曼滤波器(EKF)、联邦卡尔曼滤波器(FKF)、无迹卡尔曼滤波器(UKF)、粒子滤波器(PF)、因子图(FG)等改进方法可以适用于非线性系统。EKF的优点是其相对较低的复杂性以及提供高质量估计的能力,本文研究重点不在融合方法上,因此采用EKF作为潜在主机的组合导航滤波算法。

具体的推导过程此处不再重复叙述。
在GNSS观测误差较大时,观测误差协方差矩阵的R会有变化,因此上述普通的EKF无法继续对系统进行估计。

基于概率模型的主机选择

在获得各个GNSS的位置后,各潜在主机之间的相对位置关系可以通过两种方法进行计算:

  1. 基于自适应EKF的组合导航获得的绝对位置作差(下称“GNSS距离”);
  2. 基于UWB直接求解的相对位置数据(下称“UWB距离”)。
    因为UWB的精度较高,在正常环境下可以达到分米级[13],且其误差与GNSS的误差非同源,因此对比上述两种方法的误差,监测奇异点即可得到每架潜在主机可以作为参考节点的概率,根据实际情况选择概率最高的若干架即可。流程图如图 1:
    在这里插入图片描述

图 1 判断主机的流程图
图中左侧和右侧表示了两个循环,第一个循环(左侧)列出了求解两两UAVs之间的GNSS距离和UWB距离的方法,第二个循环(右侧)给出了根据误差差异求取潜在主机成为主机的概率,并根据设置的数量输出作为主机的UAV序号。其中,阈值a表示正常的GNSS计算出来的误差最大值,对于高斯误差,一般取平均值上浮两倍标准差的值,即: ;阈值b取理想的主机数量,取潜在主机数量的一半即可。需要注意的是,num是一个非负整数,在正常情况下是一个非负整数,所以在确定b的取值时无需精确到小数部分。

仿真与结果

仿真条件设置

共设置10架UAVs,其中5架为装在了GNSS接收机、INS、UWB的潜在主机,5架为仅装在了UWB和INS的僚机。
传感器配置和仿真参数如表:
表 1 传感器配置和仿真参数表
传感器 参数 值 单位
陀螺仪 常值漂移 0.1 deg/s
高斯噪声标准差 0.1 deg/s
一阶马尔可夫漂移误差 0.01 deg/s
一阶马尔可夫时间 3600 s
加速度计 一阶马尔可夫漂移误差 0.01 g
一阶马尔可夫时间 1800 S
GNSS 伪距噪声标准差 1.4 m
伪距多普勒噪声标准差 7 Hz
UWB 高斯噪声标准差 0.1 m
UAVs集群的轨迹如图 2:
在这里插入图片描述

图 2 UAVs集群轨迹图
3.2 结果与分析
基于以上仿真条件,对自适应EKF算法进行精度分析。将非滤波的GNSS定位算法、常规的EKF滤波算法和本文的自适应EKF算法的定位结果进行对比。僚机无协同定位结果是发散的,其误差大小无意义,此处仅列出第1个潜在主机的位置最大误差和均方根误差(RMSE),计算结果如表 2:
在这里插入图片描述
表 2 误差统计信息表 单位:m

从表中可以得到如下结论:本文提出的自适应EKF算法不论是误差最大值还是均方根误差,均是最小的,尤其是均方根误差,比非滤波情况降低约91.6%,比常规的EKF滤波算法降低约37.2%。
为了验证算法的主机选择效果,进行100次、2组的蒙特卡洛仿真,统计每次仿真中各个潜在主机被确定为主机的次数,与实际值进行比对。
表 3 主机判定结果统计表
在这里插入图片描述

表 3显示,判断主机数量的准确率可以达到98%及以上,满足UAV集群构型的要求,可以为下一步的协同定位提供准确的基准点位置。

结论

本文提出了一种简单的UAV集群构型中自动分类的方法。在自适应EKF的基础上,所提方法可以根据携带的GNSS、INS和UWB判断GNSS数据的置信度,自动选择绝对位置精度较高的UAV作为主机。仿真实验显示,自适应EKF相较于非滤波情况,误差降低约91.6%,相较于常规的EKF滤波算法降低约37.2%,无人机集群构型自适应选择算法的准确度可以达到98%。
后续研究展望:可在本文所述算法筛选的主机和僚机分类的基础上,完成信息交互和协同导航的研究。

程序链接

https://download.csdn.net/download/callmeup/88811767

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes部署nacos2.3.0

一、nacos简介 nacos官网地址 简单易用 动态配置管理、服务发现和动态的一站式解决方案,20多种开箱即用的以服务为中心的架构特性,基本符合生产要求的轻量级易用控制台。 更适应云架构 无缝支持 Kubernetes 和 Spring Cloud,在主流公共云上…

Qt:QFileDialog

目录 一、介绍 二、功能 三、具体事例 1、将某个界面保存为图片,后缀名可选PNG、JPEG、SVG等 一、介绍 QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录。 QF…

Debezium发布历史111

原文地址: https://debezium.io/blog/2021/10/07/incremental-snapshots/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Incremental Snapshots in Debezium October 7, 2021 by Jiri Pechanec mys…

linux虚拟机升级g++编译器版本

原先的 更新你的软件包列表: sudo apt update 添加Ubuntu Toolchain PPA(Personal Package Archive),这是一个提供较新编译器版本的第三方软件源: sudo add-apt-repository ppa:ubuntu-toolchain-r/test 再次更新软件包…

Tokitsukaze and Short Path (plus minus)

一、Tokitsukaze and Short Path (plus) 解析: 容易知道 对于 u 和 v 两点之间的距离是 2*max(a[u],a[v]),同时这也是这两个点的最短距离,因为如果想要绕路的话,就必须再至少经过一个点,这样的话,就会使得两者的距离变…

RTthread线程间通信(邮箱,消息队列,信号/软件中断)---02代码分析邮箱和消息队列

RT-Thread代码分析 这是源码分析, 实际使用看这个 信号看这个 看这一篇之前最好看一下我的RT-Thread对象管理以及线程管理, 时钟管理 邮箱 实际是实现是一个对环形缓存区的使用 struct rt_mailbox {struct rt_ipc_object parent; /**< inherit from…

python进行批量搜索匹配替换文本文字的matlab操作实例

在进行一些数据处理时&#xff0c;可能需要抓取原文中的一些内容&#xff0c;批量替换原文另外的一些内容&#xff0c;而且事先还需要一步搜索匹配的步骤。 举个例子&#xff0c;如下matlab输出的txt文件&#xff0c;原文件有几万行数据&#xff0c;这里只摘取3行对应的 文件文…

R语言:箱线图绘制(添加平均值趋势线)

箱线图绘制 1. 写在前面2.箱线图绘制2.1 相关R包导入2.2 数据导入及格式转换2.3 ggplot绘图 1. 写在前面 今天有时间把之前使用过的一些代码和大家分享&#xff0c;其中箱线图绘制我认为是非常有用的一个部分。之前我是比较喜欢使用origin进行绘图&#xff0c;但是绘制的图不太…

vite+vue3发布自己的npm组件+工具函数

记录一下个人最近一次发布npm组件的过程&#xff1a; 一、创建组件和工具函数 执行命令创建一个空项目&#xff1a; npm create vite 创建过程稍微有些慢&#xff0c;不知何故&#xff1f;其中选择vue , 个人暂时使用的JS 。在 src 目录下面创建一个文件 package 存放组件和公…

【Java八股面试系列】JVM-垃圾回收

目录 垃圾回收 堆空间的基本结构 内存分配和回收原则 分代收集机制 Minor GC 流程 空间分配担保 老年代 大对象直接进入老年代 长期存活的对象将进入老年代 GC的区域 对象存活判定算法 引用计数法 可达性分析算法 finalize() 字符串常量判活 类判活 垃圾回收算…

1、将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践

将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践 希望将 ChatGPT 集成到您的数据科学工作流程中吗?这是一个利用 ChatGPT 进行数据科学的提示的实践。 ChatGPT、其继任者 GPT-4 及其开源替代品非常成功。开发人员和数据科学家都希望提高工作效率,并使用 ChatGPT 来简…

提示工程实战案例

如果你在 2023 年听说过生成式人工智能&#xff08;Generative AI&#xff09;&#xff0c;你一定也听说过提示工程&#xff08;Prompt Engineering&#xff09;。 通过快速的互联网搜索或质疑 GenAI 本身&#xff0c;人们可以轻松找到相关的定义、提示技术&#xff0c;例如 零…

机器学习---半监督学习简单示例(标签传播算法)

1. 使用半监督学习方法 Label Spreading 在一个生成的二维数据集上进行标签传播 import numpy as np import matplotlib.pyplot as plt from sklearn.semi_supervised import label_propagation from sklearn.datasets import make_circles# generate ring with inner box n_s…

Apache Zeppelin 整合 Spark 和 Hudi

一 环境信息 1.1 组件版本 组件版本Spark3.2.3Hudi0.14.0Zeppelin0.11.0-SNAPSHOT 1.2 环境准备 Zeppelin 整合 Spark 参考&#xff1a;Apache Zeppelin 一文打尽Hudi0.14.0编译参考&#xff1a;Hudi0.14.0 最新编译 二 整合 Spark 和 Hudi 2.1 配置 %spark.confSPARK_H…

tee漏洞学习-翻译-2:探索 Qualcomm TrustZone的实现

原文&#xff1a;http://bits-please.blogspot.com/2015/08/exploring-qualcomms-trustzone.html 获取 TrustZone image 从两个不同的位置提取image 从手机设备本身从google factory image 已经root的Nexus 5设备&#xff0c;image存储在eMMC芯片上&#xff0c;并且eMMC芯片…

分享65个节日PPT,总有一款适合您

分享65个节日PPT&#xff0c;总有一款适合您 65个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1hc1M5gfYK8eDxQVsK8O9xQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知…

SQLite database实现加密

注意&#xff1a;以下操作以VS2022为开发工具&#xff0c;以C#为开发语言。 数据加密原因 软件在使用的各个场景&#xff0c;很多都需要数据具有保密性&#xff0c;于是对于数据库就需要加密。特别是在某些特定领域或存储敏感数据尤其如此。 SQLite加密实现 SQLite加密有两种…

Go语言每日一练——链表篇(五)

传送门 牛客面试笔试必刷101题 ----------------合并k个已排序的链表 题目以及解析 题目 解题代码及解析 解析 这一道题与昨天的合并链表题目类似&#xff0c;但是由于有K个且时间复杂度要求控制在O(nlogn)&#xff0c;这里主要有两种解法&#xff1a;一种是依旧使用归并来…

Arduino 串口绘图仪简单使用

1、工具所在位置 串口绘图仪实际上是从预设的串口获取值并将其绘制在xy轴图每获取到一组数据向左滑动一个单位&#xff0c;读取数据的速度起快&#xff0c;滑动就越快。 Y轴代表来自串口的值&#xff0c;可以是单个也可以是一组 。在读取串口数据时遇到"\n"&#xf…

正点原子-STM32通用定时器学习笔记(1)

1. 通用定时器简介&#xff08;F1为例&#xff09; F1系列通用定时器有4个&#xff0c;TIM2/TIM3/TIM4/TIM5 主要特性&#xff1a; 16位递增、递减、中心对齐计数器&#xff08;计数值&#xff1a;0~65535&#xff09;&#xff1b; 16位预分频器&#xff08;分频系数&#xff…