数字信号处理8——多目标跟踪原理

目录

一、前言

二、多目标跟踪框架

三、目标跟踪流程图

四、常速度模型

五、扩展卡尔曼滤波

六、噪音处理

七、航迹关联

八、航迹管理


一、前言

        雷达检测到目标可以是行人,车辆、护栏等,为保证目标能够稳定的输出,在雷达数据信号处理检测到目标之后必须使用目标跟踪算法。如果要想软件输出的效果比较好,就要设计的细致,在设计跟踪算法时必须考虑目标的属性,也就是特征。总结归类目标出现的场景,基于这些特征和场景来设计不同关联门和运动模型,然后一步步实现就okay了。

二、多目标跟踪框架

多目标跟踪将聚类输出的目标大小、测量值和测量误差协方差作为输入,输出目标的位置,速度和大小等。

Step1:预处理,移除处于极端角度,较差的角度SNR的目标及x/y所定义的最大距离之外的目标。

Step2:状态预测,根据常速度模型进行一步时间预测并计算出状态误差协方差,量测预测

Step3:航迹关联,对每一个真实量测数据计算其与量测预测的残差观察是否在定义的波门范围来决定是否关联第i个跟踪器,紧接着对波门内的量测打分(距离成本函数)

Step4:未关联量测重分配,创建新的跟踪器跟踪器

Step5:关联的量测做进一步的跟踪滤波

 

三、目标跟踪流程图

四、常速度模型

这里暂时先不考虑安装角度,但是实际情况下安装在车辆或者轮船上是需要考虑安装角度的,最后得出的目标是在本车坐标系下的目标方位角。并且这里不考虑目标高度,没有垂向的FOV。有没有俯仰角其实是设计天线应该考虑到的,如果发射天线和接收天线布局不在同一直线上,即有高度的间隔就可以测高。

状态方程:

上式中:

注:w(n)是过程噪音向量,其协方差为Q(n)4x4。

量测方程:

上式中:

注:V(n)是测量噪音向量,协方差为R(n)3x3

上述为非线性方程,使用标准的EKF,采用泰勒展开式保留1阶项将其线性化:

五、扩展卡尔曼滤波

为什么使用EKF呢?

其实就是建立的模型和雷达测量得到的数据(r,r',theta)具有非线性的关系,因此使用一阶泰勒展开转化为线性关系即可。

关于EKF的实施其实就是分为预测和更新两个步骤,包括下面五个方程,在代码中直接使用就行了。

噪音如何选取?

Q表征了系统模bai型的统计特性du,增加Q中元素的值,等zhi价于增加系统噪声或dao增加系统参数版的不确定性,从而使权得增益矩阵Gf增大,加大了系统校正权值,提高了系统动态性能和稳态值。
矩阵 R 表征了测量噪声, 增加 R 中元素的值, 意味加大测量噪声的影响, 同时使 Gf 减小, 减弱系统校正权值, 降低了系统瞬态响应和稳态值。 所以矩阵 Q 和 R 的选取具有矛盾性, 二者进行选取时, 应视具体情况权衡而定。

六、噪音处理

由于测量噪音R是由传感器本身决定的,因此这里仅需对模型过程噪音Q进行设计即可。虽然不涉及Rn,但是我仍然会给出Rn是怎么计算的,Q的话一般有两种模型,一是分段白噪音,另一种是连续白噪音,这里不讨论区别了,它们其实都是根据经验调参值,这里直接使用分段白噪音模型。

分段白噪音模型如下:

它的矩阵形式为:

注: 加速度方差是一个经验值

初始Q选取:根据跟踪滤波器的激活时间来选择,工程中假设新的跟踪器的“过程噪声”高,允许最快收敛,选择最高噪音;较近的目标有较大的SNR以此补偿较大的噪音测量,假设有较高过程噪音;

七、航迹关联

航迹关联的目的是减少计算量,对所有的量测点进行过滤,将可能是下一时刻真实量测点作为候选点(关联上了tracker),其实工程中这里是改动最多的地方以便适应不同的场景(远近距离,新旧tracker等)。另外关联的波门形式也是五花八门,需要关联的变量也是需要考究的,但总归跟量测值有莫大关系。

关联波门的设定:

采用椭球作为波门的形状,上述图表示在纵向距离60米处目标不同速度、方位角测量残差产生的门限形状。

上式中a,b, c分别表示目标的距离大小(m),角度大小(rad),速度(m/s)。

在本工程中引入可扩展的波门,即对于新的或者较远的跟踪器,假设过程噪声稍大,可以扩大关联的范围。(此处的参数可以调节波门大小及波门的阈值,影响测量值的关联)

八、航迹管理

航迹管理是用于管理tracker的,什么时候创建、删除、激活等

航迹管理的流程图如下:

首先检测当前的跟踪器是否有效,如果是的话检测量测点是否能够进入波门并对进入波门的进行打分,得分最高者可以将其标记为associated,更新当前跟踪器的状态age=0,跟踪次数tick++。在assocMeasIndx列表中的标出其关联的tracker。

       如果跟踪器无效,将其直接加入freeTrackerIndxArray列表中。如果没通过波门,或者量测误差(新息)协方差矩阵不可逆,将其标记为not_associated,如果跟踪器已存在,则age++,tick--。当丢失关联的次数age超过一定阈值,将其加入freeTrackerIndxArray列表。

       对于未关联的点,根据allocate重分配算法(2.1.4)判断是否再关联并建立新的跟踪器,如果可以则将该量测点索引加入selectIndxArray列表中,并将对应在assocMeasIndx列表的量测点置为associated。

PS:

assocMeasIndx:表示量测点与哪一个tracker相关联,初始化为not_associated。

freeTrackerIndxArray:表示要释放哪一个已存在的tracker,初始化为not_associated。

SelectIndxArray:表示要将未关联的量测点与哪一个已释放的tracker关联起来

关于它的状态机描述如下:

猜你喜欢

转载自blog.csdn.net/qinze5857/article/details/109668188