Vision-based ACC with a Single Camera


本文为基于MobliEye的论文理解。文中将路面是平的和相机水平(光轴平行于路面)安装作为假设条件,但可以在文章的基础上,对摄像机角度和道路坡道进行补偿。

测距

单目相机测距的方法通常有两个:
1.车辆在图像中的大小
2.车辆底部在图像中的位置
由于车辆的大小并不是固定的,方案一并不可取。
这里引入方程,其中Z为摄像头与前面车辆底部的水平间距;y为投影到图像上的高;H为相机的高度。
y=fHZ y=\frac{f H}{Z}
详细的示意图可见Fig.1.Vision-based ACC with a Single Camera
相机被安装在了A车上,针孔为P点,焦距为f(单位mm,图中仅方便辨认)
在实际中,车辆与道路的误差在1个像素点内。因此距离的误差ZerrZ_{err}可以被写成:
Zerr=ZnZ=fHy+HnZ=fHfHZ+n=nZ2fH+nZ Z_{e r r}=Z_{n}-Z=\frac{f H}{y+\frac{H}{n}}-Z=\frac{f H}{\frac{f H}{Z}+n}=\frac{n Z^{2}}{f H+n Z}
n代表接触点的位置差,将其设定为1且fH>>nZfH>>nZ,得:
ZerrnZ2fH Z_{e r r} \approx \frac{n Z^{2}}{f H}
误差随着距离的变化呈二次方增长。
Example: In our case a 640x480 image with a horizontal FOV of 47° gives f= 740pixels. The camera height at H= 1.2m. Thus assuming 1 pixel error, a 5% error in depth is expected at a distance of:
带入前式,
Z=ZerrZfH=0.057401.2=44m Z=\frac{Z_{e r r}}{Z} f H=0.05 * 740 * 1.2=44 m
这个例子是表明,在90m左右误差大约10%,44m误差约为5%。

测速

离散系统通过使用离散积分v=ΔZΔtv = \frac{\Delta Z}{\Delta t}来测速。

通过尺度改变计算速度

令w和w’分别为目标车辆在位置Z和Z’的高度,方程可以写为:
w=fWZw=fWZ w =\frac{f W}{Z} \\ w^{\prime} =\frac{f W}{Z^{\prime}}
带入离散积分内,可得:
v=ΔZΔt=ZZΔt=fHWfHWΔt=fHwwwwΔt=ZwwwΔt v=\frac{\Delta Z}{\Delta t}=\frac{Z^{\prime}-Z}{\Delta t}=\frac{\frac{f H}{W^{\prime}}-\frac{f H}{W}}{\Delta t}=\frac{f H \frac{w-w^{\prime}}{w^{\prime} w}}{\Delta t}=\frac{Z \frac{w-w^{\prime}}{w^{\prime}}}{\Delta t}
定义尺度s:
s=www s=\frac{w-w^{\prime}}{w^{\prime}}
得到速度:
v=ZsΔt v=\frac{Z s}{\Delta t}

Vision-based ACC with a Single CameraVision-based ACC with a Single CameraVision-based ACC with a Single Camera

计算速度误差

这里引入了一个对齐误差SerrS_{err}(alignment error)的概念,对齐误差在0.1个像素是可能的(这里存在疑问)。配准误差的影响取决于目标在图像中的大小。定义尺度误差SaccS_{acc}:
sacc=serrw=serrZfWΔt s_{a c c} =\frac{s_{e r r}}{w} =\frac{s_{e r r} Z}{fW\Delta t}
假设测距完全准确,相对速度误差为:
verrc=ZsaccΔt=Z2serrfWΔt v_{e r r}^{c} =\frac{Z s_{a c c}}{\Delta t} =\frac{Z^{2} s_{e r r}}{f W \Delta t}
这里可以知道:

  1. 相对速度误差与相对速度无关
  2. 相对速度误差与距离的平方成正比
  3. 相对速度误差与时间间隔成反比,因此时间越长越好
  4. 有一个窄的FOV(增大f)可以提高精度

此时将测距的误差项添加上,vzerrv_{zerr}速度在距离上的误差:
vzerr=ZerrSΔt=nZ2fHsΔt=nZvfH v_{z e r r}=\frac{Z_{e r r} S}{\Delta t}=\frac{n Z^{2}}{f H} \frac{s}{\Delta t}=\frac{n Z v}{f H}
合并可得:
verr=Z2serrfWΔt+nZvfH v_{e r r}=\frac{{Z^{2} s_{e r r}}}{f W \Delta t}+ \frac{n Z v}{f H}
通过此式,依旧可以知道,误差可以通过延长时间来减小。然而,Δt\Delta t在增大后,速度计算通过有穷积分是不准确的。

Z(Δt)=12aΔt2+vΔt+Z0Z(\Delta t) =\frac{1}{2} a \Delta t^{2}+v \Delta t+Z_{0}
v(Δt)=aΔt+v0v(\Delta t) =a \Delta t+v_{0}
此时a为相对加速度。换种方式,通过使用相对距离差来计算速度:
ΔZ=Z(Δt)Z0=12aΔt2+v0Δt \Delta Z=Z(\Delta t)-Z_{0}=\frac{1}{2} a \Delta t^{2}+v_{0} \Delta t
除以Δt\Delta t,这时候可以发现,除了v0v_0,多了一个误差项:
ΔZΔt=12aΔt+v0 \frac{\Delta Z}{\Delta t}=\frac{1}{2} a \Delta t + v_0
带入verrv_{err}中,误差项为:
verr=Z2SerrfWΔt+nZvfH+12aΔt v_{e r r}=\frac{Z^{2} S_{e r r}}{f W \Delta t}+\frac{n Z v}{f H}+\frac{1}{2} a \Delta t
这时候可以求导取最优解:
Z2serrfWΔt2+12a=0 -\frac{Z^{2} s_{e r r}}{f W \Delta t^{2}}+\frac{1}{2} a=0
得:
Δt=2Z2serrfWa \Delta t=\sqrt{\frac{2 Z^{2} s_{e r r}}{f W a}}
获得最终的速度误差:
verr=Z2aserrfW+nZvfH v_{err} = Z \sqrt{\frac{2as_{err}}{fW}} + \frac{nZv}{fH}
在最优解时,速度误差与距离Z呈线性相关。
当加速度为0时值为无穷大,因此系统要限定在Δt=2s\Delta t = 2s

相关文章:

  • 2021-11-02
  • 2021-06-30
  • 2021-05-26
  • 2021-05-19
  • 2022-12-23
  • 2022-01-29
  • 2021-12-26
  • 2021-06-19
猜你喜欢
  • 2021-10-01
  • 2021-08-19
  • 2021-08-16
  • 2021-10-30
  • 2021-08-13
  • 2021-11-05
相关资源
相似解决方案