激光雷达(Lidar, Light Detection And Ranging)是Google系自动驾驶技术路线广泛应用的硬件传感器。
1、激光雷达(Lidar)的工作原理
通过持续不断的发射激光束,激光束遇到障碍物会产生反射,部分反射会被激光雷达(Lidar)传感器再次接收到,通过测量激光束发送和返回传感器的耗时(Round Trip Time)可以或者周围物体距离激光雷达的距离。
$r = \frac{1}{2} C * t$,其中r是激光雷达到障碍物的距离,C是光速,t是Round Trip Time,由于时间是从激光发送到接收的总耗时(往返总耗时),所以要再除以2。这个公式是基于光的测量设备的基本原理。
除了距离(Distance)之外,激光雷达(Lidar)还返回反射值强度(Intensity),不同的障碍物材质反射的激光束的强度(Intensity)不同,可以用这些激光束的反射值强度制作2D图像地图,并用这些地图进行自动驾驶模型的训练。
通过每秒发射数以百万的激光束,实现对真实3D世界的三维测量。我们可以获得无人车周围任意物体的精确测量结果(根据不同的Sensor,有效距离可能不同,比如Velodyne 64线有效距离大约60m)
2、激光雷达(Lidar)的测量模型(Sensor Model)
如下图所示,激光雷达(Lidar)的测量模型为距离-方位角-俯仰角模型(Range-Azimuth-Elevation, RAE)。其中P是激光雷达(Lidar)的观测点,r是P点距离激光雷达(Lidar)传感器的距离,它通过激光脉冲传播的时间乘以光速除以2获得;$\alpha$是方位角(Azimuth),$\epsilon$是俯仰角(Elevation),$\alpha$和$\epsilon$是激光束的发射角度。
点P在激光雷达(Lidar)坐标系$F_s$下的坐标为: (x, y, z),坐标值与测量值之间的关系为:
$$ \begin{bmatrix} x \\ y \\ z \\ \end{bmatrix} = \begin{bmatrix} rcos(\alpha)cos(\epsilon) \\ rsin(\alpha)cos(\epsilon) \\ rsin(\epsilon) \end{bmatrix} $$
其实这就是常用的球面坐标表达方式。已知(x,y,z)如何求解(r, $\alpha$, $epsilon$)呢,对应的计算公式如下:
$$ \begin{bmatrix} r \\ \alpha \\ \epsilon \\ \end{bmatrix} =\begin{bmatrix} \sqrt{x^2 + y^2 + z^2} \\ tan^{-1}(y/x) \\ sin^{-1}(z/\sqrt{x^2 + y^2 + z^2}) \end{bmatrix} $$
简化到二维平面,即当P在xy平面时,z = 0,$\epsilon$=0,此时RAE模型可以简化为距离-方位角模型。
$$ \begin{bmatrix} r \\ \alpha \\ \end{bmatrix} =\begin{bmatrix} \sqrt{x^2 + y^2} \\ tan^{-1}(y/x) \end{bmatrix} $$
3、激光雷达(Lidar)传感器的误差源
1)激光雷达(Lidar)发送和接收激光束的精确耗时误差。受限于激光雷达(Lidar)配备的计时设备的精度,耗时统计存在精度上限。
2)激光雷达(Lidar)激光束的朝向误差。受限于激光雷达朝向测量设备的测量精度,朝向测量存在精度上限。
3)目标材质的反射值特性。比如全黑的材料吸收了光的大部分能量,使得反射量极低;或者像镜子一样的材料会将大部分光反射到其它地方,从而使得激光雷达无法测量到这些物体的位置。
4)运动形变(Motion Distortion)。由于激光雷达在跟随自动驾驶车辆前进的同时,对周围环境进行扫描建模,也就是说车辆相对于周围的环境是运动的,导致对环境测量的实际位置与真实位置存在偏差。
参考链接
1、https://en.wikipedia.org/wiki/Lidar
2、Chapter 6, Section 4.3 of Timothy D. Barfoot, State Estimation for Robotics (2017)
文章首发于公众号:[半杯茶的小酒杯],未经许可,禁止转载!