基于高分辨率雷达的微多普勒分布的车轮提取
1 前要
本文知识点主要包括:毫米波雷达原理
、多普勒效应
、微多普勒效应
、DBSCAN
、RANSAC
1.1 毫米波雷达原理
偏雷达硬件底层算法
-
多普勒效应
波源和观察对象有相对运动时,观察者接收到波的频率和波源发射的频率并不相同的现象。
靠近时,观察者接收和反射的频率变高;远离时,观察者接收和反射的频率变低。
-
微多普勒效应
非刚体
系统内部组件的微运动使得雷达回波中包含表征这些组件运动的多普勒信息(可以理解为微运动对雷达波的频率调制),称之为微多普勒。例子:人行走过程中,躯干运动所反射的雷达回波包含的就是传统意义上的多普勒信息,而表征腿脚手臂摆动的雷达回波包含微多普勒。不同类型目标之间的微多普勒可能是独一无二的,成为
目标分类
的有力特征。
如上图1,是对行人走动过程仿真并得到的雷达回波数据,经STFT后得到的时频图。幅度最大的类似正弦曲线的部分就是人体行走摆臂特征的体现,这是人体躯干运动(图中橙色最深部分)之外人体运动系统内部最典型的微运动。
-
思考
拿不到雷达硬件底层的原始信号,但是有直接反应多普勒效应的速度信号值,假设一辆目标车成功聚类,就可以提取其中反应微多普勒效应的点作为特征点,即速度值和车身速度差别很大的点
,作用于分类或者其他功能。 -
参考
1.2 DBSCAN
简要带过,参考维基百科https://zh.wikipedia.org/wiki/DBSCAN
在上图中,minPts = 4,点 A 和其他红色点是核心点,因为它们的 ε-邻域(图中红色圆圈)里包含最少 4 个点(包括自己),由于它们之间相互相可达,它们形成了一个聚类。点 B 和点 C 不是核心点,但它们可由 A 经其他核心点可达,所以也属于同一个聚类。点 N 是局外点,它既不是核心点,又不由其他点可达。
- 伪代码
DBSCAN(D, eps, MinPts) {
C = 0
for each point P in dataset D {
if P is visited
continue next point
mark P as visited
NeighborPts = regionQuery(P, eps)
if sizeof(NeighborPts) < MinPts
mark P as NOISE
else {
C = next cluster
expandCluster(P, NeighborPts, C, eps, MinPts)
}
}
}
expandCluster(P, NeighborPts, C, eps, MinPts) {
add P to cluster C
for each point P' in NeighborPts {
if P' is not visited {
mark P' as visited
NeighborPts' = regionQuery(P', eps)
if sizeof(NeighborPts') >= MinPts
NeighborPts = NeighborPts joined with NeighborPts'
}
if P' is not yet member of any cluster
add P' to cluster C
}
}
regionQuery(P, eps)
return all points within P's eps-neighborhood (including P)
- 优化
数据量大时,Kdtree或者栅格来搜索最近邻,减少计算量。 - c++模板代码
https://gitee.com/leox24/dbscan_template
1.3 RANSAC
简要带过
随机抽样一致算法(RANdom SAmple Consensus,RANSAC)。它采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。计算机视觉用的比较多。
-
对比最小二乘法
噪点对最小二乘法的拟合干扰很大,ransac设置了噪声参数,抗噪性和鲁棒性好
-
伪代码
Given:
data – A set of observations.
model – A model to explain observed data points.//直线、曲线、平面
n – Minimum number of data points required to estimate model parameters.//估计一个模型最少的样本点数,直线(2),二次曲线(3)
k – Maximum number of iterations allowed in the algorithm. //最大迭代次数
t – Threshold value to determine data points that are fit well by model. //用于确定模型拟合良好的数据点的阈值,直线(点到直线的距离)
d – Number of close data points required to assert that a model fits well to data.//一个好的模型最少有多少内点
Return:
bestFit – model parameters which best fit the data (or null if no good model is found)
iterations = 0
bestFit = null
bestErr = something really large
while iterations < k do
maybeInliers := n randomly selected values from data
maybeModel := model parameters fitted to maybeInliers
alsoInliers := empty set
for every point in data not in maybeInliers do
if point fits maybeModel with an error smaller than t
add point to alsoInliers
end if
end for
if the number of elements in alsoInliers is > d then
// This implies that we may have found a good model
// now test how good it is.
betterModel := model parameters fitted to all points in maybeInliers and alsoInliers
thisErr := a measure of how well betterModel fits these points
if thisErr < bestErr then
bestFit := betterModel
bestErr := thisErr
end if
end if
increment iterations
end while
return bestFit
-
参数设置
假设模型的随机选择点数为n,迭代重复次数为k,每个点是真正内点群的概率为w(未知),则
w = 真 正 内 点 群 数 / 点 总 数 w = 真正内点群数 / 点总数 w=真正内点群数/点总数
w n w^n wn代表随机选择的n个点都是内点的概率, 1 − w n 1-w^n 1−wn代表所选的n个点至少有一个不是内点的概率, ( 1 − w n ) k (1-w^n)^k (1−wn)k表示迭代k次都没有全部的n个点是内点的概率
假设算法迭代k次成功的概率为P,则:
p = 1 − ( 1 − w n ) k p = 1-(1-w^n)^k p=1−(1−wn)k
要确保成概率很高, p = 0.99 p=0.99 p=0.99。当随机选点数n不变时,迭代次数k越大,p越大;当w不变时,n越大,所需k就越大,通常w未知,所以随机选点数n选小一点比较好
。 -
RANSAC C++示例及源码
RANSAC C++ examples :拟合直线、平面及多直线多平面
-
参考
图像拼接技术步骤归纳
维基百科
2 论文主要内容
Wheel Extraction based on Micro Doppler Distribution using High-Resolution Radar
示例应该是自车右前方驶向的目标车
2.1 理论
- 多普勒雷达只能测量径向速度 v D v^D vD和方位角 θ \theta θ,径向速度是缸体主速度方向的余弦分量
- 车轮产生微多普勒效应,提出最小最大多普勒频移的简化模型,速度分布是0-2 v i D v_i^D viD,如Fig1
2.2 信号处理
-
雷达数据基于坐标空间 ( r , v D , θ ) (r,v^D,\theta) (r,vD,θ)
-
使用Ordered Statistics CFAR (OS CFAR)提取出目标(点),归一化多普勒分布得到 η \eta η,如Fig3.4.
CFAR根据车辆周围环境变化检测阈值,通过实现恒定的虚警率,可以解决虚警问题
-
对目标(点)做DBSCAN聚类,计算聚类面积,小于2m²为行人或者杂物滤除掉
-
RANSAC提取出属于车身速度的点,正交距离回归(ODR)弥补速度和方位角的测量误差,离群点就很有可能是车轮点或者噪点
作者之前论文提出的方法:
Instantaneous lateral velocity estimation of a vehicle using Doppler radar
-
对离群点做第二次DBSCAN聚类(0.5m)
-
由轮胎的位置得到车身底盘的位置
2.3 关于RANSAC提取速度
- 径向速度 V r V_r Vr和方位角 θ \theta θ的关系如下,可由几何关系推导出:
V r = V x ∗ c o s ( θ ) + V y ∗ s i n ( θ ) = V ∗ c o s ( α − θ ) V_r = V_x * cos(\theta) + V_y * sin(\theta) = V * cos(\alpha - \theta) Vr=Vx∗cos(θ)+Vy∗sin(θ)=V∗cos(α−θ)
其中 V V V为目标车辆的实际合速度, V x , V y V_x,V_y Vx,Vy为坐标轴方向上的分量, α \alpha α为目标车辆的实际航向角,即速度的方向。
- 多个点时存在以下关系式,可以使用RANSAC迭代求出 V x , V y V_x,V_y Vx,Vy 或者 ∣ V ∣ , α |V|,\alpha ∣V∣,α
- 上面的公式显然是非线性的,那么为什么2.2中的Fig5中径向速度和方位角成线性关系?
示例中的车辆是相对于自车左前方,驶向自车的,那么目标车的航向角 α \alpha α大致在135°左右,而图中点的方位角 θ \theta θ变化在15°左右,在余弦图中,由公式 V r = V ∗ c o s ( α − θ ) V_r = V * cos(\alpha - \theta) Vr=V∗cos(α−θ)可得近似是在虚线框区域,近似呈现线性关系,和论文中的Fig5基本对应。