(十)联合概率数据互联原理及应用(JPDA)

news2024/9/19 10:58:22

目录

前言

一、JPDA原理及算法步骤

(一)算法步骤

1.确认矩阵计算

2.确认矩阵拆分

3.互联概率计算

4.状态及协方差更新

二、仿真验证

(一)模型构建

(二)仿真结果

总结

引用文献


前言

        本文主要针对数据关联算法中的联合概率数据互联算法(JPDA)进行了分析与介绍,介绍了其相应的原理与算法步骤,并且针对两个杂波下的匀速运动目标进行了仿真实验,验证了算法的准确性和有效性。后续会逐步介绍其他数据关联算法,读者可以根据自身需求对代码进行修改。


一、JPDA原理及算法步骤

        数据互联算法主要用于解决航迹起始之后点迹与航迹的正确互联问题,也就是要解决量测的不确定性问题,为各航迹下一时刻滤波提供正确的量测值。量测的不确定性主要来源于虚假航迹、目标虚警以及多目标点迹判断等原因。点击与航迹的数据互联算法主要包括两种,即极大似然类数据互联算法和贝叶斯类数据互联算法,我们主要研究贝叶斯类数据互联算法,包括以下几种算法:

最近邻域算法(NNSF)

概率数据互联算法(PDA)

综合概率数据互联算法(IPDA)

联合概率数据互联算法(JPDA)

全邻模糊聚类数据互联算法(ANFC)

……

        本文主要介绍联合概率数据互联(JPDA)算法,该算法是在联合概率数据互联(PDA)的基础上发展而来的,但是PDA主要用于解决杂波条件下的单雷达单目标问题,JPDA主要用于适用于杂波条件下的多目标数据互联。杂波条件下的多目标数据互联是多目标跟踪中重要但是难以处理的问题,当回波落入多个目标的跟踪波门中时,数据关联过程就要考虑到各个目标航迹对于量测值的竞争问题。

(一)算法步骤

1.确认矩阵计算

确认矩阵定义如下:

\Omega =[w_{jt}]=\begin{bmatrix} w_{10}&\cdots &w_{1T} \\ \vdots & \cdots & \vdots \\ w_{m_{k}0} & \cdots & w_{m_{k}T} \end{bmatrix}

其中,w_{jt}=1表示量测j(j = 1……m_{k})落入目标t(t = 0……T)的跟踪波门中,w_{jt}=0表示量测j未落入目标t的跟踪波门中,当t=0时表示量测为杂波或者虚警,不存在目标,且w_{j0}=1。如下图所示:

        对应部分代码程序为:

m1 = 0;
[~,n_z_total] = size(Z);
Q1 = zeros(10000,n_target+1); %每个时刻所有的量测点的数量不超过10000,预先准备矩阵
index_cal = [];
z_mid = [];
for k = 1:n_z_total
    flag = 0;
    for q = 1:n_target
        d= Z(:,k) - Z_mid_pre(:,q);
        D(k,q) = d'*inv(S_mid_pre{q})*d;
        if  D(k,q)<= g_sigma
            flag = 1;
            Q1(m1+1,1)=1; %杂波虚警那一列,只有回波落入门内,才有可能是虚警
            Q1(m1+1,q+1)=1; %如果落入回波内,就进行对应的滤波
        end
    end
    if flag == 1
        m1 = m1+1;
        z_mid = [z_mid,Z(:,k)];
        index_cal = [index_cal,k];
    end
end
Q2 = Q1(1:m1,1:n_target+1);

2.确认矩阵拆分

        确认矩阵拆分的原则有两个:

基本假设拆分原则
每个量测有唯一的源,不考虑不可分辨的情况确认矩阵每行中仅选出一个1作为互联矩阵在该行的唯一非零元素
对于一个给定目标最多一个量测以其为源在互联矩阵中,除第一列外,其余各列最多只能有一个非零元素

        则上述矩阵可以拆分为以下:

        对应部分代码为:

%计算各个库
for i = 1 : n1
    k = 0;
   for j = 1:n2
       d = zeros(1,n2);      
       if Q2(i,j) == 1 
           k = k+1;
          d(1,j) = 1;
          c_lib{i}{k} = d;
       end
   end
end
%%
A = zeros(n1,n2,100000);
%拼接各个库并进行判断
num = 0;
for i  = 1:n_total
    c_judge = [];
    for j =  1 : n1
     c_judge = [c_judge;c_lib{j}{index(i,j)}];
    end
    f = sum(c_judge(:,2:end));
    if max(f)<= 1
       num = num+1;
       A(:,:,num) = c_judge;
    end   
end
A1 = A(:,:,1:num);

3.互联概率计算

        联合概率数据互联就是计算每个量测与多个目标互联的概率,假设\theta _{jt}\left ( k \right )表示量测j源自目标t的事件,其中0\leq t\leq T\theta _{j0}\left ( k \right )表示量测来源于虚警或者杂波。

        按照单目标概率数据互联中条件概率的定义为:\beta _{jt}\left ( k \right )=P_{r}\left ( \theta _{jt}\left ( k \right )\mid Z^{k} \right )

        则其满足\sum_{j=0}^{m_{k}}\beta _{jt}\left ( k \right )=1

        假设确认矩阵按照拆分原则最终拆分为n_{k}个矩阵,则表示有n_{k}个联合事件,则第j个量测与目标互联的概率为:

\beta _{jt}\left ( k \right )=P_{r}\left ( \theta _{jt}\left ( k \right )\mid Z^{k} \right )=P_{r}\left ( \bigcup_{i=1}^{n_{k}}\theta _{jt}^{i}\left ( k \right ) \mid Z^{k}\right )=\sum_{i=1}^{m_{k}}\omega _{jt}^{i}\left [ \theta _{k} \right ]P_{r}\left ( \theta _{i}\left ( k \right ) \mid Z^{k}\right )

其中,\theta _{jt}^{i}\left ( k \right )表示量测j在第i个联合事件中源于目标t的事件,\theta _{i}\left ( k \right )表示第i个联合事件。

\omega _{jt}^{i}\left ( \theta _{i}\left ( k \right ) \right )=\left\{\begin{matrix} 1,\theta _{jt}^{i}\left ( k \right )\subset \theta _{i}\left ( k \right )\\0, other \end{matrix}\right.

        公式表示在第i个联合事件中,如果量测j源于目标q,则为1,否则为0。

\theta _{i}\left ( k \right )=\bigcap_{j=1}^{m_{k}}\theta _{jt}^{i}\left ( k \right )

        公式表示计算联合事件i的发生概率。

        该部分的核心思想为:先计算每个联合事件发生的概率(即将联合事件中为1的时间概率相乘,取交集);之后进行归一化(即使得所有联合事件概率相加为1);之后计算量测j源于目标t的概率(即将各个联合事件中涉及到量测j源于目标q的概率相加,取并集)。

        量测互联指示:

\tau _{j}\left [ \theta _{i}\left ( k \right ) \right ]=\sum_{i=1}^{T}\omega _{jt}^{i}\left ( \theta _{i}\left ( k \right ) \right )=\left\{\begin{matrix} 1\\ 0 \end{matrix}\right.

        公式表示量测j在\theta _{i}\left ( k \right )中是否与一个真实目标相联。

        目标检测指示:

\sigma _{j}\left [ \theta _{i}\left ( k \right ) \right ]=\sum_{i=1}^{m_{k}}\omega _{jt}^{i}\left ( \theta _{i}\left ( k \right ) \right )=\left\{\begin{matrix} 1\\ 0 \end{matrix}\right.

        公式表示任意量测在联合事件\theta _{i}\left ( k \right )中是否与目标t互联,亦是否被检测到。

        假量测数量:

\phi _{j}\left [ \theta _{i}\left ( k \right ) \right ]=\sum_{j=1}^{m_{k}}\left ( 1- \tau _{j}\left [ \theta _{i}\left ( k \right ) \right ]\right )

         \phi _{j}\left [ \theta _{i}\left ( k \right ) \right ]表示在联合事件\theta _{i}\left ( k \right )中假量测的数量。

        互联概率计算:

        JPDA联合概率数据计算具有两种形式,根据假量测数量\phi _{j}\left [ \theta _{i}\left ( k \right ) \right ]的概率质量函数不同而不同(即杂波的分布方式不同而不同)[1]:

        泊松分布:

P_{r}\left ( \theta _{i}\left ( k \right ) \mid Z^{k}\right )=\frac{\lambda^{\phi _{j}\left [ \theta _{i}\left ( k \right ) \right ]} }{c}\prod_{j=1}^{m_{k}}N_{tj}\left [ z_{j}\left ( k \right ) \right ]^{\tau _{j}\left [ \theta _{i}\left ( k \right ) \right ]}\prod_{t=1}^{T}\left ( P_{D}^{t}\right )^{\sigma _{j}\left [ \theta _{i}\left ( k \right ) \right ]}\left ( 1-P_{D}^{t}\right )^{1-\sigma _{j}\left [ \theta _{i}\left ( k \right ) \right ]}

        其中,\lambda 为泊松分布参数,c为归一化常数   

        均匀分布:

P_{r}\left ( \theta _{i}\left ( k \right ) \mid Z^{k}\right )=\frac{\phi _{j}\left [ \theta _{i}\left ( k \right ) \right ]\textsc{!}}{V^{\phi _{j}\left [ \theta _{i}\left ( k \right ) \right ] }c}\prod_{j=1}^{m_{k}}N_{tj}\left [ z_{j}\left ( k \right ) \right ]^{\tau _{j}\left [ \theta _{i}\left ( k \right ) \right ]}\prod_{t=1}^{T}\left ( P_{D}^{t}\right )^{\sigma _{j}\left [ \theta _{i}\left ( k \right ) \right ]}\left ( 1-P_{D}^{t}\right )^{1-\sigma _{j}\left [ \theta _{i}\left ( k \right ) \right ]}

        其中,c为归一化常数  ,V为确认区域的体积

        其中,n_{z}为量测向量的维数,N[z_{j}(k)]的具体形式为:

f(z_{j}(k))=\frac{1}{\left ( 2\pi \right )^{n_{z}}\left | S\left (k \right ) \right |^{1/2}}exp\left \{ -\frac{1}{2} \left ( z_{j}(k)-z_{j}(k\mid k-1) \right ){}'S^{-1}\left ( k \right )\left ( z_{j}(k)-z_{j}(k\mid k-1) \right )\right \}

        对应部分代码为:

% target_indicator =  %目标指示器
Pr = zeros(1,num);
for i1 = 1:num %对每个关联矩阵的概率进行计算
    False_num = m1;
    N=1;
    for j = 1:m1
        mea_indicator =  sum(A_matrix(j,2:end,i1));%观测指示器
        if mea_indicator ==1
            False_num = False_num-1;
            m0 = find(A_matrix(j,2:end,i1));
            b=(z_mid(:,j)-Z_mid_pre(:,m0))'*inv(S_mid_pre{m0})*(z_mid(:,j)-Z_mid_pre(:,m0));
            N=N/sqrt(det((2*pi)^(nz/2)*S_mid_pre{m0}))*exp(-1/2*b);
        end
    end
    if Pd==1
        a=1;
    else
        a=1;
        for j=1:c
            target_indicator=sum(A_matrix(:,j+1,i));                               %参考文献中式4-49
            a=a*Pd^target_indicator*(1-Pd)^(1-target_indicator);                   %计算检测概率
        end
    end
    %       V = sum(ellipse_Volume)*clutter_density;                                         %表示整个空域的体积

    Pr(i1)=N*a*(0.00000000000000000000000001)^False_num;
end
Pr=Pr/sum(Pr);

4.状态及协方差更新

        在得到最终互联概率矩阵之后,利用卡尔曼滤波对目标的状态进行更新,公式如下:

状态向量更新:

x^{t}\left ( k\mid k \right )=x^{t}\left ( k\mid k-1 \right )+K^{t}\left ( k \right ) V^{t}\left ( k \right )

其中,V^{t}(k)=\sum_{j=0}^{m_{k}}\beta _{jt}\left ( k \right )V_{j}^{t}(k)为k时刻对目标t用j个量测组合而成的新息向量。

协方差更新:

P^{t}\left ( k\mid k \right )=P^{t}\left ( k\mid k-1 \right )-(1-\beta _{0t})K^{t}\left ( k \right )S^{t}\left ( k \right )\left [ K^{t}\left ( k \right ) \right ]^{\top }+K^{t}\left ( k \right )\left [ \sum_{j=0}^{m_{k}}\beta _{jt}(k)V_{j}^{t}\left ( k \right )\left (V_{j}^{t}\left ( k \right )\right )^{\top } -V^{t}\left ( k \right )\left (V^{t}\left ( k \right )\right )^{\top } \right ]\left ( K^{t}\left ( k \right ) \right )^{\top }

二、仿真验证

(一)模型构建

        建立两个匀速目标的CV模型,模型具体构建方法见之前的博客:

(四)交互式多模型(IMM)中二维平面CV/CA/CT模型构建icon-default.png?t=N7T8https://blog.csdn.net/h320130/article/details/135141783        设置杂波密度,跟踪门限等参数,具体代码如下:


sim_time=150;        %仿真时间
T=1;                %T为采样间隔
n_sim = sim_time/T; %仿真次数
MC_number=5;        %Monte Carlo仿真次数
n_target=2;         %目标个数
initial_v=[1500 30 500 40; 
           500 40 1500 30];%初始目标状态
nf = 0.1; %过程噪声强度
P0 = 1*eye(4);     %各目标的初始跟踪误差
clutter_density = 0.000001; %杂波密度
R = 1*eye(2); %目标量测误差
%生成目标的运动
X_location = cell(1,n_target);
X_location(:) = {zeros(4,n_sim)};
for q = 1:n_target
    [X_location{q},F,Q] = track(initial_v(q,:)',n_sim,T,nf,P0);
end

(二)仿真结果

        从仿真结果中可以看出,JPDA能够实现杂波中点迹与航迹的良好互联,解决了目标跟踪过程中量测的不确定性问题,但是联合概率数据互联不能实现航迹的管理,需要配合航迹管理算法进行使用,之后的一篇文章将详细介绍航迹管理算法的原理及使用。


总结

        本文针对JPDA算法的原理以及算法步骤进行了介绍,同时针对其核心思想进行了总结。并且结合算法步骤进行了仿真实验,结果验证了算法的有效性和实用性。


引用文献

[1]雷达数据处理及应用,何友……, p160

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

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

相关文章

世界上速度最快的超级计算机推导出超级BC8钻石配方

BC8 超级钻石比任何已知材料都要坚硬&#xff0c;但它们很可能只存在于巨型系外行星的内核中。现在&#xff0c;世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密&#xff0c;这一发现可能会导致在地球上生产它们。 钻石不仅是夺人眼球的珠宝&#xff0c;而且在…

致敬万物的解释者:丹尼尔・丹尼特(1942~2024)

2024 年 4 月 19 日&#xff0c;全世界最受欢迎的哲学家之一丹尼尔・丹尼特在缅因州波特兰去世。他被无数人称作是自己的哲学英雄&#xff0c;他的观点像一把利刃&#xff0c;在心智和意识领域无出其右。 巨星陨落&#xff0c;思想长存。让我们一起回顾他的生平&#xff0c;聆…

AGI|如何用Open WebUI和Ollama在本地运行大型语言模型?

在某AI产品发布会上&#xff0c;我们需要演示在个人PC上运行大模型的能力。为了实现这一目标&#xff0c;我们进行了深入的市场调研和技术评估&#xff0c;最终选择了Open WebUI和Ollama作为演示的核心工具。 目录 一、介绍 二、部署 三、代码展示 一、介绍 什么是Ollama …

前端代码混淆加密(使用Terser、WebpackObfuscator)

零、相关技术及版本号 "vue": "2.6.12", "vue/cli-service": "4.4.6", "javascript-obfuscator": "^4.1.1", "terser-webpack-plugin": "^4.2.3", "vue-template-compiler": &quo…

JAVA后端拉取gitee仓库代码项目并将该工程打包成jar包

公司当前有一个系统用于导出项目&#xff0c;而每次导出的项目并不可以直接使用&#xff0c;需要手动从gitee代码仓库中获取一个模板代码然后将他们整合到一起它才是一个完整的项目&#xff0c;所以目前我的任务就是编写一个java程序可以自动地从gitee仓库拉取下来那个模板代码…

纯前端实现导出pdf文件(服务端不参与)

大致查阅了现阶段使用较多的几种方案,&#xff0c;大概有以下几种方式&#xff1a; 一、原生window.print()方法导出pdf 二、jspdf 三、jspdf html2canvas 四、pdfmake 方案优点缺点window.print()1、兼容性最好 2、可以将任意内容导出成 pdf 文档, 甚至是非改页面上的内容1…

⑦【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 系列文章&#xff1a; ①【从0制作自己的ros导航小车&#xff1a;介绍及准备】 ②【从0制作自己的ros导航小车&#xff1a;下位机篇】01、工程准备_标准库移植freertos ③【从0制作自己的ros导航小车&a…

Sobel Operator

什么是图像边缘&#xff1f; 边缘是指图像中灰度或颜色强度发生显著变化的区域。 什么是Sobel operator Sobel算子是一种用于图像处理的边缘检测算子。它通过计算图像灰度值的梯度来检测图像中的边缘。 什么情况产生梯度&#xff1f; 黑与白交界处。 Sobel 算子原理 计算P…

MLP多层感知机与Pytorch实现

参考文章&#xff1a; 1.动手学深度学习——多层感知机&#xff08;原理解释代码详解&#xff09;_多层感知机 代码-CSDN博客 2.4.1. 多层感知机 — 动手学深度学习 2.0.0 documentation 3.深度理解多层感知机&#xff08;MLP&#xff09; | 米奇妙妙屋 1. 神经网络由来 神经网…

ChatGPT指导如何完整写出研究论文的摘要

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术写作中&#xff0c;学习如何为研究论文撰写简短且内容丰富的摘要非常重要。摘要可以让读者了解你的研究成果&#xff0c;快速浏览并决定是否要阅读更多内容。 但研究论文中的摘要…

Python面试宝典第23题:分发糖果

题目 n 个孩子站成一排&#xff0c;给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求&#xff0c;给这些孩子分发糖果。 &#xff08;1&#xff09;每个孩子至少分配到 1 个糖果。 &#xff08;2&#xff09;相邻两个孩子评分更高的孩子会获得更多的糖果。 请…

AI绘画SD万能模型 ControlNet Union (也称ControlNet++ 或 ControlNetPlus)!10余种控制效果一键生成!

大家好&#xff0c;我是画画的小强 Controlnet 可以说是目前最重要的一款 AI 绘画控制插件&#xff0c;可以帮我们实现轮廓、深度、动作姿势、颜色等多种控制效果。由于每种控制条件都需要调用不同的控制模型&#xff0c;加上 SD1.5 和 SDXL 的生态并不互通&#xff0c;大家肯…

【ROS 最简单教程 006/300】使用 launch 启动多个 ROS 节点

使用 launch 文件&#xff0c;可以一次性启动多个 ROS 节点 launch 文件编写的语法规则参见 &#x1f449; launch 文件编写 &#x1f49c; &#x1f49c; &#x1f49c; &#x1f49c; &#x1f49c; 简单示例如下 不使用 launch 需要启动三个命令行终端窗口&#xff0c;分别…

电商电子面单API对接方法

电商业务管理过程中&#xff0c;商家想要高效发货&#xff0c;使用电子面单是必不可少的&#xff0c;因为电子面单成本低、效率高&#xff0c;所以电商ERP、打单软件等这类应用对接电商电子面单API的需求量非常大。当应用通过电商电子面单API与电商平台、快递公司系统打通后&am…

Reranker技术

文章目录 Reranker技术0. 什么是RAG1. 什么是Reranker&#xff1f;2. Reranker在RAG技术中的应用3.使用 Reranker 的优缺点4.总结参考&#xff1a;知乎 Reranker技术 0. 什么是RAG 基础 RAG 的操作流程大致如下&#xff1a;首先&#xff0c;你需要将文本切分成小段&#xff0…

《深度RAG系列》 LLM 为什么选择了RAG

2023年是AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;元年&#xff0c;这一年见证了人工智能生成内容领域的巨大飞跃&#xff0c;特别是大模型的爆发&#xff0c;它们在自然语言处理、图像生成、音频处理等多个领域展现出了惊人的能力。 这些预训练…

UVC驱动分析(一)

UVC驱动分析 UVC驱动简介Linux video框架分层UVC驱动注册UVC驱动注册入口函数UVC设备探测初始化UVC描述符解析V4L2设备注册UVC控制参数初始化UVC video驱动注册UVC 状态初始化 UVC驱动简介 UVC全称为USB Video Class&#xff0c;即&#xff1a;USB视频类&#xff0c;是一种为U…

Vue组件库移动端预览实现原理

引言 大家如果使用过移动端组件库&#xff08;比如&#xff1a;Vant&#xff09;&#xff0c;会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的&#xff0c;切换组件的时候&#xff0c;移动端预览的内容也会发生相应的变化。 …

基于python的百度迁徙迁入、迁出数据分析(四)

这篇文章是对上篇文章的可获取数据的时间区间的修正&#xff0c;依然通过开发者模式找寻相关数据源&#xff0c;我直接把数据url贴在这里&#xff0c;可以发现里面包含了相对明面上看不到的数据包括&#xff0c;行政区id、春运迁徙数据等&#xff1a;qianxi.cdn.bcebos.com/app…

LYT-Net——轻量级网络低光照条件图像修复模型推理部署(C++/Python)

1.环境安装 conda create -n LYT_Torch python3.9 -y conda activate LYT_Torchconda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidiapip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm tensor…