本文介绍: 黑色样本是非核心对象。从接收点云开始,先对点云标定坐标转换噪点剔除、动静分离,再分别对动态目标静态目标聚类然后根据聚类结果目标特征分析检测等,之后对符合条件聚类结果目标起始关联跟踪处理输出目标结果。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数阈值。有了朝向之后,可以计算聚类点云在朝向方向上投影,从而计算长宽,这样聚类点云就多了朝向、长宽等特征可以通过3.3节的机器学习方法分类,再根据类别得到目标长宽的推理结果。

        4D雷达点云跟踪处理沿用3D毫米波雷达的处理流程,如下图

        从接收到点云开始,先对点云做标定坐标转换噪点剔除、动静分离,再分别对动态目标静态目标聚类然后根据聚类结果做目标特征分析检测等,之后对符合条件的聚类结果做目标起始关联跟踪等处理,输出目标结果。

2.预处理

        预处理主要包括标定坐标转换噪点剔除和动静分离

2.1标定

        将安装雷达车辆停在水平地面上。根据车身确定车辆行进方向,在车辆正前方5~50m确定测试区域直线),与行进方向平行或垂直误差小于2cm);将角反射器调整到与雷达相同高度误差小于1cm),选择多个点(不少于10个)放置反射器并通过雷达读取角度值,根据多个点的数据拟合直线斜率和夹角,最终确定偏航角θ。俯仰角φ的标定同偏航角方法

2.2坐标转换

        雷达点云通常是极坐标下的,表示径向距离r,方位角azi,俯仰角ele需要坐标转到自车后轴中心在地面的投影为原点的坐标系,如下图

        x,y,z方向上偏移分别为OFFSET_X,OFFSET_Y,OFFSET_Z,则最终的坐标

        x = r*cos(ele+φ)*cos(azi+θ)+OFFSET_X

        y = r*cos(ele+φ)*sin(azi+θ)+OFFSET_Y

        z = r*sin(ele+φ)+OFFSET_Z

2.3噪点剔除

        部分雷达点云是不感兴趣的,可以通过设置ROI区域剔除。

        ROI区域通常设置矩形,图中是XOY平面投影,实际处理需考虑Z轴方向范围,应为矩形盒。

        由于多径或环境噪声影响,雷达会检测到各种虚假目标,通常这些目标的RCS很小,可以通过RCS门限剔除。

        而RCS随距离增加而增加,因此设置RCS门限时,也应把距离作为参数

2.4动静分离

        动静分离主要根据径向速度在车辆前进方向的投影为0进行判断如下所示,Vego表示本车车速,VR表示目标的径向速度,α表示目标的方位角,β表示雷达相对于车头正前方的横向偏角(由方向盘转角计算得到),将Vego径向速度方向投影,对于每帧中的每个目标,均可建立各参数间的关系方程如下

        Vego * cos(α- β) + VR = 0

        实际处理时,可通过设定门限判断目标是否静止。由于自车车速存在一定误差,Vego越大,误差越大,设置门限时应考虑这个因素

3.目标检测

3.1目标聚类

        DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同类别,就能得到最终的所有聚类类别结果。

        DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数阈值

        假设样本集是D=(x1,x2,…,xm),则DBSCAN具体的密度描述定义如下

  1) ϵ-邻域:对于xj∈D ,其ϵ-邻域包含样本集D中与xj的距离不大于ϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}、 这个子样本集的个数记为|Nϵ(xj)|

  2) 核心对象:对于任一样本xj∈D,如果其ϵ-邻域对应的Nϵ(xj)至少包含MinPts个样本,即如果Nϵ(xj)|≥MinPts,则xj是核心对象。 

  3)密度直达:如果xi位于xj的ϵ-邻域中,且xj是核心对象,则称xi由xj密度直达。注意反之不一定成立,即此时不能说xj由xi密度直达, 除非且xi也是核心对象。

  4)密度可达:对于xi和xj,如果存在样本序列p1,p2,…,pt满足p1=xi,pt=xj, 且pt+1由pt密度直达,则称xj由xi密度可达。也就是说,密度可达满足传递性。此时序列中传递样本p1,p2,…,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性这个可以由密度直达的不对称性得出

  5)密度相连:对于xi和xj,如果存在核心对象样本xk,使xi和xj均由xk密度可达,则称xi和xj密度相连。注意密度相连关系满足对称性的。

        从下图可以很容易看出理解上述定义,图中MinPts=5,红色的点都是核心对象,因为其ϵ-邻域至少有5个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ϵ-邻域内所有的样本相互都是密度相连的。

        DBSCAN聚类算法的流程如下

        输入:样本集D=(x1,x2,…,xm),邻域参数(ϵ,MinPts)。

        输出:类划分C。

  1)初始化核心对象集合Ω=∅,初始化聚类数k=0,初始化未访问样本集合Γ = D,类划分C = ∅。

  2) 对于j=1,2,…m, 按下面的步骤找出所有的核心对象:

  a) 通过距离度量方式找到样本xj的ϵ-邻域子样本集Nϵ(xj)。

  b) 如果子样本集样本个数满足|Nϵ(xj)|≥MinPts, 将样本xj加入核心对象样本集合:Ω=Ω∪{xj}。

  3)如果核心对象集合Ω=∅,则算法结束,否则转入步骤4。

  4)在核心对象集合Ω中,随机选择一个核心对象o初始当前类核心对象队列Ωcur={o}, 初始化类别序号k=k+1,初始化当前类样本集合Ck={o}, 更新访问样本集合Γ=Γ−{o}。

  5)如果当前类核心对象队列Ωcur=∅,则当前类Ck生成完毕, 更新划分{C1,C2,…,Ck}, 更新核心对象集合Ω=Ω−Ck, 转入步骤3。

  6)在当前类核心对象队列Ωcur中取出一个核心对象o′,通过邻域距离阈值ϵ找出所有的ϵ-邻域子样本集Nϵ(o′),令Δ=Nϵ(o′)∩Γ, 更新当前类样本集合Ck=Ck∪Δ 更新访问样本集合Γ=Γ−Δ  更新Ωcur=Ωcur∪(Δ∩Ω)−o′,转入步骤5。

  输出结果为: 类划分C={C1,C2,…,Ck}。

3.2特征提取

        聚类后,可以得到基本信息比如目标位置(x,y,z)、点云数量、长度宽度、高度、体积投影面积、RCS、SNR以及各种统计分布,如位置方差等。根据这些信息可以对目标进行分类,得到目标的分类结果。

3.3目标分类

        毫米波分类可以考虑使用机器学习方法进行分类常见的有决策树模型、最近邻模型支持向量机等。

        使用激光雷达对毫米波点云进行标注,前提是激光雷达本身精度和准确度要足够高,如果存在问题,可考虑人工进行修改

        如图,红色和黄色圆圈代表毫米波点云,黑色方框是未经时间补偿的lidar目标,而蓝色方框是经过时间补偿的lidar目标。通常情况下,补偿后的lidar目标框可以包围实际目标的毫米波点云,这样就能同时得到训练样本(点云类)和标注结果(补偿后的lidar目标)。

        Python导入sklearn工具包可以方便地调用不同模型进行训练,并且可以使用不同参数进行对比实验输出分类准确率错误率或混淆矩阵等。

        另外Pythonm2cgen工具包支持输出sklearn模型的C代码,方便部署到各类平台运行

3.4路沿检测

        对静止点聚类,如果某类中点数明显较多,且位置跨度较大,则认为是路沿,需要对路沿做拟合生成

        由于路沿存在一定宽度,如果直接拟合,则会生成如下图的黑色路沿,和实际结果存在较大误差。因此,这里需要每隔一段距离提取聚类的内侧点,再对内侧点进行拟合,得到下图中红色的路沿结果,与实际值误差较小。

4.目标跟踪

        目标跟踪分为目标起始、目标关联、跟踪滤波生命周期管理等。

4.1目标起始

        点云检测结果符合一定条件就可以起始目标,一般需要满足以下条件

  1. 未被成熟航迹或临时航迹跟踪;
  2. 检测结果至少有三个毫米波点云;
  3. 检测结果高度大于0.5m
  4. 检测结果的最大RCS大于-2.5;

        目标起始没有统一标准,需要根据实际情况调整参数,上述几个条件是较为常见的,根据实际场景可以微调或增加其他条件。

4.2目标关联

        目标关联分为临时航迹的关联稳定航迹的关联

        临时航迹使用检测结果中心点和径向速度关联,也即:

        |center_xi – center_xj| < x_threshold

        |center_yicenter_yj| < y_threshold

        |vrivrj| < vr_threshold

        稳定航迹使用毫米波点云和目标包围框进行关联,判断点位置径向速度是否关联门限内,类似于激光目标给毫米波点云做标注,可参考3.3节。

4.3目标属性更新

        航迹成功和点云关联,则更新目标属性。如果累计帧数未达到生成航迹要求,则只保存历史数据,只有达到帧数要求或者稳定航迹成功关联点云,才做属性更新

        目标属性包括位置、速度、类别、朝向、长宽等。

4.3.1朝向估计

        首先将历史点云做坐标转换统一转换到当前坐标系下,可以通过最小面积、最小距离等遍历方法拟合朝向,具体方法参考论文《Efficient L-Shape Fitting for Vehicle Detection Using Laser Scanners》。

        实际数据仿真验证表明,速度较快时用最小二乘就能得到很好的结果。速度较慢时,使用更多历史点云可以得到更准确的朝向估计

        上图左是朝向估计的结果,绿色是激光雷达估计的目标框,蓝色和灰色使用距离方差准则和最近距离准则估计的朝向。上图右是目标不同姿态下的统计结果,可以看到,随着点数的增加,朝向估计误差在减小

        有了朝向之后,可以计算聚类点云在朝向方向上投影,从而计算长宽,这样聚类点云就多了朝向、长宽等特征,可以通过3.3节的机器学习方法做分类,再根据类别得到目标长宽的推理结果。

4.3.2速度估计

        得到准确的目标朝向之后,可以通过径向速度、目标朝向、点云角度计算得到目标的速度。

        如下图,Vt是目标速度,α是朝向角,Vego是自车速度,θ是点云方位角,β是自车速度和车体坐标系偏角。

        首先计算补偿车速后的绝对径向速度comp_Vr = Vr + Vego*cos(θ+β)

        由于Vt_abs*cos(θα)comp_Vr

        根据绝对径向速度和角度关系计算目标绝对速度

        Vt_abs = comp_Vr /cosα)

        然后根据朝向分解得到绝对横纵向速度

        Vt_abs_x = Vt_abs*cos)

        Vt_abs_y = Vt_abs*sin)

        最后减去自车的横纵向速度得到相对横纵向速度

        Vt_x = Vt_abs_x – Vego*cos(θ+β)

        Vt_y = Vt_abs_y – Vego*sin(θ+β)

4.3.3跟踪滤波

        使用卡尔曼滤波对检测得到的位置和速度等做跟踪滤波处理,一般由下面5个公式组成。

        

        分别表示k时刻和k-1时刻的后验状态估计值,是滤波的结果,这里使用匀加速直线CA)运动模型=[x,y,vx,vy,ax,ay]

        k时刻的先验状态估计值,是滤波的中间计算结果,即根据k-1时刻的最优估计预测k时刻的结果,是预测方程的结果。

        F是状态转移矩阵,实际上是对目标状态转换的一种猜想模型。状态转移矩阵常用来对目标的运动建模,其模型可能为匀速直线运动或者匀加速运动。

        Pk和Pk-1分别表示k时刻和k-1时刻的后验估计协方差

        Pprek时刻的先验估计协方差的协方差)。

        H是状态变量测量(观测)的转换矩阵,表示将状态和观测连接起来的关系,卡尔曼滤波里为线性关系,它负责m维的测量值转换到n维,使之符合状态变量数学形式,是滤波的前提条件之一。

        测量值(观测值),是滤波的输入

        Kk是滤波增益矩阵,是滤波的中间计算结果。

        Q代表过程噪声方差,该参数用来表示状态转换矩阵与实际过程之间的误差。因为无法直接观测到过程信号,所以Q的取值是很难确定的,可以参考何友《雷达数据处理应用》给出初始值

        R是测量噪声方差。滤波器实际实现时,测量噪声方差R一般可以观测或统计分析得到。

        将点云检测结果放到滤波器,通过调整参数Q和R,可以得到不同场景下的状态最优估计结果。

4.4生命周期管理

        生命周期管理主要对目标生成和消亡做处理。航迹生成时,满足关联条件,且n个观测周期存在至少m次,则符合航迹生成要求,生成新航迹,赋予新ID。

        如果n个观测周期存在次数小于m次,则不符合航迹生成要求,航迹不会生成,直接删除

        如果航迹稳定跟踪,单帧未关联点云,则用外推值更新;如果关联点云,则用卡尔曼滤波得到的新状态更新。

        如果航迹稳定一段时间,连续t个观测周期中k次无法成功关联,则删除这条航迹。

5.特殊处理

5.1直线拟合估计目标速度和朝向

        点云聚类后,通过径向速度和方位角也可以估计目标朝向。

        假设目标朝向角为α,目标点云在速度方向的投影即是点云的径向速度Vr,则有:

        V(i)*cos(θ(i)-α) = Vr(i)

        V(i) = Vr(i) / cos(θ(i)-α)

        由于车辆是刚体,车身每个点速度相等,则有V(1) = V(2) = … = V(n)

        V(i) = V(j) = V

        Vr(i) / cos(θ(i)-α) = Vr(j) / cos(θ(j)-α)

        可以计算得到点云的朝向角α,进而得到目标的真实速度和横纵向速度。

        由于雷达对速度的测量可能存在模糊出现错误,因此任意两个点的结果有较高错误概率,但多个点拟合得到的结果有较高的可行度,可以准确估计目标朝向和横纵向速度。

        上文已经推导Vr(i) = V* cos(θ(i)-α) = V*(cos(θ(i))cos(α) + sin(θ(i))sin(α))

        两边同时除以V*Vr(i)* cos(α),则有

        cos(θ(i))/Vr(i) = 1 / V cos(α) – tan(α) * sin(θ(i))* /Vr(i)

        令y(i) = cos(θ(i))/Vr(i), x(i) = sin(θ(i))* /Vr(i),b = 1 / V cos(α), k = – tan(α)则有

        y(i) = k * x(i) + b

        根据最小二乘拟合公式,可以得到V和α的估计值。

        对于行人,由于不是刚体运动,并不适用上述方法。

5.2二分迭代估计目标速度和朝向

        由于单个目标聚类后速度和角度离散性不足,使用最小二乘拟合往往不能得到最优解,此时可以考虑使用二分迭代法

        仍旧是角度和速度的关系表达式

        V(i)*cos(θ(i)-α) = Vr(i)

        通过预设的角度α,计算目标速度V(i) = Vr(i) / cos(θ(i)-α)

        再计算不同角度α的V(i)离散程度,离散程度越小,则α是实际角度的概率越高。V(i)的离散程度可以用方差表示。

5.3自车轨迹路径静止点处理

        通常目标起始跟踪不对静态点做处理,但考虑碰撞风险,在自车运动轨迹上的静态点需要跟踪处理,做碰撞预警。

        自车运动可以用圆周运动建模,通常直线行驶时认为圆周半径非常大,比如10000m。如果转弯时,则可以用下图示意的方法计算。

        下图中,自车后轴中心为O,在以C为圆心的原点做圆周运动,半径为R,红色曲线代表自车运动方向。

        则有Vego*t = R*α = R*yawrate*t  –> R = V/yawrate

        这里Vego是自车速度,yawrate是横摆角速度。

        然后可以计算自车轨迹的方程

        

        在自车轨迹附近的静态加入到目标起始、跟踪流程中,生成一般障碍物过滤虚假目标,起到预警作用

原文地址:https://blog.csdn.net/weixin_41691854/article/details/134658925

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45476.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注