机器之心转载
作者:王方浩
如何构建一辆无人驾驶车呢?先从无人驾驶车的硬件开始介绍。
简介
无人驾驶车由车、线控系统、传感器、计算单元等组成,如图 2.1 所示。车作为无人驾驶的载体,是无人驾驶车最基础的组成部分。
除了车本身之外,还需要车上安装有线控系统。有别于传统汽车通过机械传动的方式控制汽车,线控系统通过电信号来控制汽车,这种方式显然更适合电脑控制。
无人驾驶车还配备了数目众多的传感器,包括激光雷达、摄像机、毫米波雷达、超声波雷达、GPS、IMU 等。传感器是无人驾驶车的眼睛,负责感受外部环境。计算单元则是无人驾驶车的大脑,传感器获取的信息经过计算单元的计算之后,输出一条可以供汽车安全行驶的轨迹,控制汽车行驶。
图 2.1 无人驾驶车硬件组成
硬件首先需要考虑的就是安全。汽车关系到人的生命安全,因此需要有严格的安全规范。无人驾驶车同样要求如此,需要尽可能地保障乘客的安全,不仅要使用满足车规要求的硬件,还要使汽车能够覆盖足够的视野范围。
其次需要考虑的是成本,目前无人驾驶车的成本居高不下,主要原因是传感器的成本太高,甚至比一辆车的成本还高,这是阻碍无人驾驶车普及的重要原因之一。
下面我们分别从车和线控系统、传感器、计算单元、辅助单元等方面介绍无人驾驶车的硬件组成。
2.2 车和线控系统
2.2.1 车
传统汽车由发动机、汽车底盘、中控系统和车身等组成,如图 2.2 所示。实际上,无人驾驶车的车身部分和传统汽车几乎没有区别,只是在传统汽车的基础上,安装了汽车线控系统。
目前主要有以下 4 种形式的无人驾驶车。
无人驾驶的士。通过小车改装而成,常见的型号有林肯 MKZ。
无人驾驶小巴、摆渡车。通过巴士改装而成,有些甚至没有方向盘。
无人驾驶货车。由卡车改装而成,主要厂家有比亚迪、东风等。
无人驾驶清洁车。通过特种车辆改装而成。
图 2.2 汽车构造
目前还没有真正量产的无人驾驶车,无人驾驶车大部分都是根据现有车型改装而成,计算单元还都是放在汽车后备箱中,需要将空调风道引入后备箱以供计算单元散热。同时,车上要增加按钮,实现将所有子系统从自动驾驶状态紧急切换到人工驾驶状态,在发生整车故障时,能完全退出至人工驾驶模式,保障安全。
为什么电动车比燃油车更加适合做自动驾驶呢?主要有以下 3 个原因。
电动车比燃油车的反应时间更短。普通燃油车通过机械控制的方式,普遍的延迟在 200ms 左右,而电动车的控制响应时间不到 20ms。对比燃油车来说,电动车更容易控制,响应时间也更短。
电动车能够直接提供无人驾驶车所需要的电源。燃油车则需要通过发动机发电,效率转换比较低,同时也提供不了大功率的电源输出。除此之外,燃油车还要额外提供 UPS 设备保障电源供应,而电动车不存在这些问题。
电动车比燃油车具有先天优势。由于电动车目前还在发展阶段,可以进行全新的设计,而燃油车已经非常成熟,设计和改造有着诸多限制。
综上所述,电动车比燃油车更适合用来做自动驾驶。
2.2.2 线控系统
汽车需要具备线控系统才能改装成无人驾驶车,那么什么是线控系统呢?
传统汽车是通过机械传动的方式对汽车进行转向、油门和刹车等的控制,而线控系统是通过电信号对汽车进行转向、油门和刹车等的控制。电脑能够更好地控制电信号,这就是为什么无人驾驶车采用线控系统来控制汽车的重要原因。
线控系统省去了机械传动的延迟,通过电脑可以更加快速地控制汽车,并且一些辅助驾驶任务也需要线控系统来完成,例如定速巡航、自动避障、车道保持等。线控系统最大的问题在于安全性,线控系统如果被破解,黑客甚至可以控制汽车的行驶,成为很大的安全隐患。
线控系统从功能上可以分为以下 4 个部分。
线控油门,通过电信号控制汽车油门大校
线控刹车,通过电信号控制汽车制动。
线控转向,通过电信号控制汽车转向角度。
线控档位,通过电信号控制汽车档位。
线控系统一方面需要接收无人驾驶车发出的控制指令,另一方面要把指令执行的结果和车辆的状态反馈给无人驾驶车。无人驾驶车输出给线控系统的信息如下。
油门、刹车、转向等的控制信号。
档位信号。
车灯、雨刷器等的控制信号。
线控系统反馈给无人驾驶车的信息如下。
命令执行的结果。
底盘状态。
底盘详细信息。
除此之外,线控系统需要能够及时响应控制命令。响应时间是指从无人驾驶车发出控制命令到汽车执行完成的时间,如果响应时间太长或者响应时间不稳定,会影响无人驾驶车的控制。
线控系统发送的数据帧不能丢失或者出现错误,如果数据帧丢失或者数据帧出错,可能会造成控制失效,这也是不能接受的。
在控制命令出错的情况下,线控系统要提供一系列错误码来通知控制系统,以便控制系统根据错误码获取出错的原因。
控制命令越界处理,当控制信号越界的时候线控系统应当拒绝执行,并且进入人工接管模式。
当安全员主动控制方向盘、油门或者刹车脚踏板的时候,线控系统能够主动退出无人驾驶模式。
下面是百度 Apollo 线控认证平台的部分性能指标。
最大驱动加速度。最大驱动加速度指的是车可以达到的最大加速度值。
驱动响应延迟时间。驱动响应延迟时间是发送命令到开始执行的时间。
最大超调。最大超调是指油门调节的过程中,目标值与实际值之间的最大误差。
对应执行时间。对应执行时间是驱动开始响应到响应到目标加速度的值。
2.3 传感器
为了方便感知周围的环境,无人驾驶车用到了各种各样的传感器,这些传感器从功能上划分为 2 类:环境感知和状态感知。
环境感知主要是获取车当前所处的环境信息,包括:周围的车辆、行人、交通标志、红绿灯、所处的场景(路口交汇处、停车尝高速公路)等。
状态感知主要是获取车自身的状态,包括当前车辆的位置、航向角、速度、俯仰角等信息。
无人驾驶车所用到的传感器如图 2.3 所示,包括激光雷达、毫米波雷达、超声波雷达、相机、GPS、IMU 等。下面开始分别介绍这几种传感器。
图 2.3 无人驾驶车传感器示意
2.3.1 激光雷达
激光雷达是无人驾驶车中最重要的传感器之一,目前大部分的无人驾驶公司都选择配备激光雷达。虽然特斯拉的 CEO 伊隆 马斯克曾经一语惊人的说“只有傻瓜才用激光雷达。”,但出于安全性的考虑,激光雷达仍然是无人驾驶车的首眩
1. 原理
激光雷达( Light Detection and Ranging,LIDAR)是光检测和测距的缩写,通过对外发射激光脉冲来进行物体检测和测距。激光雷达采用飞行时间(Time of Flight,TOF)测距,包括激光器和接收器。激光器先发送一束激光,遇到障碍物后反射回来,由接收器接收,最后激光雷达通过计算激光发送和接收的时间差,得到目标和自己的相对距离。
如果采用多束激光并且 360 度旋转扫描,就可以得到整个环境的三维信息。激光雷达扫描出来的是一系列的点,因此激光雷达扫描出来的结果也叫“激光点云”,如图 2.4 所示。
图 2.4 激光雷达扫描效果图
应用
激光雷达能够准确输出障碍物的大小和距离,同时还具有较高的分辨率,可以记录周围环境的三维信息,对无人驾驶进行规划轨迹,避开障碍物非常有用。除了上述优点外,激光雷达还是主动发射型设备,对光照的变化不敏感,在有光照变化和夜晚等场景基本不会受到影响。此外激光雷达能够提供水平 360 度的视野范围,保证整个无人驾驶车基本上没有视野盲区。
但是激光雷达惧怕雾霾天气,因为雾霾颗粒的大小非常接近激光的波长,激光照射到雾霾颗粒上会产生干扰,导致效果下降。另外激光雷达还比较昂贵,以 64 线的激光雷达为例,售价约 8 万美元,可以抵得上一辆车的价格了,这也是推广激光雷达的障碍之一。
除了障碍物感知,激光雷达还可以用来制作高精度地图。地图采集过程中,激光雷达每隔一小段时间输出一帧点云数据,这些点云数据包含环境的准确 3 维信息,通过把这些点云数据做拼接,就可以得到该区域的高精度地图。
最后,激光雷达还可以用来做定位,无人车在行驶过程中利用当前激光雷达采集的点云数据帧和高精度地图做匹配,可以获取无人车的位置。
2. 分类
激光雷达从工作方式上可以分为:旋转式激光雷达和固态激光雷达。
旋转式激光雷达内部有一个马达,通过马达带动激光束 360° 旋转扫描,每扫描一圈得到一帧激光点云数据,扫描一圈的时间称为一个扫描周期。
固态激光雷达采用相控门阵列技术,通过调整信号的相对相位来改变激光束的发射方向,实现扫描整个平面,固态雷达的扫描范围有限,一般水平视角为 60° 左右。虽然固态雷达的角度范围小,但是扫描精度和指向精度高、可控性好、成本也相对较低,是激光雷达未来的主要发展方向。图 2.5 所示分别是 Velodyne 公司生产的旋转式激光雷达和固态激光雷达。
图 2.5 旋转式激光雷达(左)和固态激光雷达(右)
3. 参数指标
(1)视场角。视场角决定了激光雷达能够看到的视野范围,分为水平视场角和垂直视场角,视场角越大,代表视野范围越大,反之则代表视野范围越校以图 2.5 中的激光雷达为例,旋转式激光雷达的水平视场角为 360°,垂直视场角为 26.9°,固态激光雷达的水平视场角为 60°,垂直视场角为 20°。
(2)线数。线数越高,代表单位时间内采样的点就越多,分辨率也就越高,目前无人驾驶车一般采用 32 线或 64 线的激光雷达。
(3)分辨率。分辨率和激光光束之间的夹角有关,夹角越小,分辨率越高。固态激光雷达的垂直分辨率和水平分辨率大概相当,约为 0.1°,旋转式激光雷达的水平角分辨率为 0.08°,垂直角分辨率约为 0.4°。
(4)探测距离。激光雷达标称的最远探测距离一般为 150-200m,实际上距离过远的时候,采样的点数会显著变少,测量距离和激光雷达的分辨率有着很大的关系。以激光雷达的垂直分辨率为 0.4° 最远探测距离为 200m 举例,在经过 200m 后激光光束 2 个点之间的距离为,也就是说只能检测到高于 1.4m 的障碍物。如图 2.6 所示。
图 2.6 激光雷达探测距离
如果要分辨具体的障碍物类型,那么需要采样点的数量更多,因此激光雷达有效的探测距离可能只有 60-70m。增加激光雷达的探测距离有 2 种方法,一是增加物体的反射率,二是增加激光的功率。物体的反射率是固定的,无法改变,那么就只能增加激光的功率了。但是增加激光的功率会损伤人眼,只能想办法增加激光的波长,以避开人眼可见光的范围,这样可以适当增大激光的功率。探测距离是制约激光雷达的另一个障碍,汽车在高速行驶的过程中越早发现障碍物,就越能预留越多的反应时间,从而避免交通事故。
(5)反射率。反射率是指物体反射的辐射能量占总辐射能量的百分比,比如说某物体的反射率是 20%,表示物体接收的激光辐射中有 20% 被反射出去了。不同物体的反射率不同,这主要取决于物体本身的性质(表面状况),如果反射率太低,那么激光雷达收不到反射回来的激光,导致检测不到障碍物。激光雷达一般要求物体表面的反射率在 10% 以上,用激光雷达采集高精度地图的时候,如果车道线的反射率太低,生成的高精度地图的车道线会不太清晰。
4. 扩展阅读
在无人驾驶普及之后,大量的激光雷达都是相同波段,相邻的激光雷达之间会产生干扰,采用连续波调频技术可以解决这个问题。
此外,目前市场上大部分激光雷达的波长是 905nm,非常接近可见光的波长,而激光会损害人眼,烧坏视网膜上的光敏探测细胞,因此 905nm 激光雷达的功率受到严格限制。
2.3.2 毫米波雷达
毫米波雷达(RADAR)和激光雷达的原理类似,毫米波雷达通过发射和接收电磁波来检测物体的距离和速度。目前已经上市的高级驾驶辅助系统(Advanced Driver Assistance Systems,ADAS)大部分都带有毫米波雷达。
1. 原理
毫米波雷达的原理是通过发射电磁波,然后接收反射回来的信号,通过电磁波返回的时间差计算目标的相对距离,通过多普勒效应产生的频率偏移来计算目标的相对速度。
2. 应用
毫米波雷达的体积小,安装之后对汽车外观的影响不大;毫米波雷达能够同时检测多个物体的距离、角度和相对速度,特别是高速移动的物体;毫米波雷达测量距离也比较大,最大探测距离可达 250m,并且能够穿透雾和粉尘,还能够适应各种不同的天气。
毫米波雷达的缺点是测量角度受限,特别是垂直角度;毫米波雷达采样的点比较稀疏,分辨率比较低,很难识别体积比较小的物体。
3. 分类
雷达按照测量的距离划分为短距离雷达和长距离雷达。
短距离雷达:探测的范围比较大,但是探测的距离比较短。
长距离雷达:探测的范围比较窄,但是探测的距离比较长。
4. 参数指标
毫米波雷达主要有以下 4 个参数指标。
最大探测距离:能够探测到障碍物的最大相对距离,一般为 250m。
最大探测速度:能够探测到障碍物的最大相对速度,一般为 240km/h。
探测视角:能够探测到的视野范围,水平范围一般为 ±60°,垂直视角一般为 ±15°。
最大探测目标数:最大能够探测的目标数量,一般为 24-32 个。
2.3.3 超声波雷达
超声波雷达(Ultrasonic radar)通过发射超声波计算障碍物的距离,对温度敏感,测量精度大概是 1-3cm。同时超声波雷达探测的距离非常短,最远探测距离不到 3m,只能在短距离测距的时候使用。
目前超声波雷达主要应用在自动泊车中,宝马和大众的自动泊车系统都搭载了数枚超声波雷达来检测停车库位。
超声波雷达有 2 种应用方式:一种称为 UPA,用来探测汽车前后的障碍物;另一种称为 APA,安装在汽车侧方,用于探测汽车侧方的障碍物。
2.3.4 相机
相机(Camera)是目前无人驾驶中应用和研究最广泛的传感器。基于图像的物体检测和识别技术已经相当成熟,近几年,基于深度学习的视觉感知算法甚至已经超过了人类的水平。无人驾驶车上一般会安装多个相机,兼顾不同的视角和任务。
1. 原理
相机利用了光学成像原理,光线透过相机镜头后,被感光元器件捕获,最后形成图像,如图 2.7 所示。
图 2.7 相机成像原理
2. 应用
相机的成本低、成像像素高、刷新频率快,因此相机被大量应用于车辆,行人和车道线检测;相机还可以获取颜色信息,用来做红绿灯检测和交通标志识别;相机拍摄的图片经过场景分割用来做场景理解和路面识别。可以说相机应用在无人驾驶环境感知的方方面面。
在天气良好的情况下,相机最远可以看到 1000m 左右的距离,比激光雷达能够更早的发现远处的交通状况。
相机是被动型感光设备,对光照的变化十分敏感,在有强光直射和阴影变化的时候拍摄质量会严重下降,在夜晚的时候相机的表现也不太好。另外相机在拍摄快速移动的物体的时候会出现运动模糊,拍摄的照片有重影或者模糊不清。通常在下雨天气,无人驾驶车会使用车内的相机做环境感知,暴露在车外的相机镜头会被雨水模糊。最新有报道利用激光做雨刷的新闻,对以后相机暴露在雨天工作可能有帮助。为了获取足够的视野无人驾驶车一般会配备多个相机。这就引入了一个问题,多个相机的拍摄时间可能不一致。那么如何保证多个相机的拍摄时间一致呢?相机有一个触发器(Trigger),用于触发相机拍照,通过控制信号同时触发多个相机的触发器来拍照,就可以保证所有照片都是同一时间拍摄的了。
3. 分类
按照使用到的相机个数,分为单目相机和双目相机。
单目相机。单目相机由 1 个相机组成,结构简单,成本低,但是无法测量准确的距离。
双目相机。双目相机由 2 个相机组成,由于 2 个相机之间的距离已知,可以估算出空间距离,但是标定和计算量比单目相机大。
按照相机的焦距,分为长焦相机和短焦相机。
长焦相机。长焦相机看的距离远,在拍摄远处的景象的时候更加清晰。在无人驾驶车中,长焦相机用来发现远处的交通状况和红绿灯识别。
短焦相机。短焦相机主要用来发现近处的物体,视野范围比长焦宽。障碍物识别、车道线检测和场景分割等多个任务都需要用到短焦相机,往往车上会集成多个短焦相机,覆盖整个车的视野范围。
按照类型划分,除了最常见的相机之外,还有事件相机、全景相机、深度相机和红外相机 4 种新型相机。
(1)事件相机(Event Camera)。事件相机中的每个像素独立响应亮度的变化,通过捕捉亮度变化成像,因此对运动物体捕捉效果非常好,并且不受曝光时间限制,成像速度非常快。普通相机在高速运动状态下会出现运动模糊,而事件相机则很好的解决了这个问题。目前事件相机的主要限制是像素大小和图像分辨率,例如 DAVIS240 型号的事件相机像素大小只有 18.5x18.5 m,分辨率为 240x180。如图 2.8 所示,分别是普通相机和事件相机拍摄到晚上有行人在汽车前奔跑的画面,可以看到普通相机出现了明显的曝光不足和运动模糊,而事件相机则很清晰。
图 2.8 普通相机和事件相机效果对比
(2)全景相机(Omnidirectional Camera)全景相机有 360° 的采集视野,解决了单个相机视野范围不足的问题。全景相机通过 2 枚或者 4 枚鱼眼镜头进行拍摄,然后把拍摄好的照片拼接起来,组成全景照片。全景照片技术已经非常成熟,已经应用在 VR 看房等场景,对导航,定位和地图制图都很有帮助。如图 2.9 所示全景照片的边缘畸变非常严重,需要算法处理之后才能正常显示。
图 2.9 全景照片示例
(3)深度相机(Range Camera)。深度相机能够获取环境的深度和颜色信息,目前有 3 种深度测距方法:结构光测距、飞行时间法和双目视觉测距。深度相机能够探测的距离非常有限,因此主要还是应用在室内场景的三维重建,如图 2.10 所示。
图 2.10 深度相机效果图
(4)红外相机(Infrared Camera)。红外相机通过热成像原理对行人进行检测,目前在无人驾驶中还没有大规模应用。
4. 参数指标
相机主要有以下 5 个参数指标。
像素:相机的像素越高,分辨率也越高,图像也就越清晰。
焦距:焦距足够大,在拍摄比较远的物体时才足够清晰。
视场角:视场角决定了摄像头能够看到的视野范围,广角的镜头所拍摄的视野范围更大。
帧率:帧率越高,表示单位时间内拍摄的照片越多,拍摄速度越快。
信噪比:信噪比越高表明产生的杂波信号越少,图像信号质量越好,单位为 DB。
2.3.5 GPS/IMU
GPS(Global Positioning System)是全球卫星定位系统的简称,终端通过接收至少 4 颗卫星信号,就能迅速确定自己的经纬度和海拔高度,精度可以达到 10 米左右,是目前使用最广泛的定位手段。IMU(Inertial Measurement Unit)是惯性测量单元的简称,IMU 安装有三轴的陀螺仪和三个方向的加速度计,用来测量物体三轴姿态角以及加速度,一般而言要安装在无人驾驶车的重心上。GPS 和 IMU 通常结合起来,用来获取无人驾驶车的位置和姿态。
1. 应用
GPS 通常用于室外定位,在使用 RTK 技术之后,往往精度能够达到厘米级别。GPS 定位非常方便,但在高楼、隧道和停车场等场所会出现多径效应和信号衰减,导致测量精度下降。GPS 的更新频率也比较低,一般为 1s 刷新一次。
为了解决上述问题,IMU 通常用来辅助 GPS 进行定位,IMU 不需要接收信号,不受信号质量影响,而且更新频率快,工作频率通常可达 100Hz 以上,可以弥补短期 GPS 刷新频率不足的问题。但是 IMU 有累计误差,在一段时间后需要校准,所以目前无人车主要通过 GPS 和 IMU 融合定位。
2. 参数指标
陀螺仪:角度偏差为 0.1°/s - 0.001°/h。
加速度计:加速度偏差为 100mg - 10 g。
由距离计算公式可以得出,100mg 和 10 g 偏差的加速度计在 60s 之后的测量误差分别是 3528m 和 0.35m,差距非常大。
3. 小结
GPS 和 IMU 融合定位是目前无人驾驶中主要的定位手段。由于 GPS 的时间源比较精准,也用来当做整个无人驾驶车的基准时间。
2.3.6 总结和展望
1. 总结
上面介绍了不同类型的传感器,表 2.1 所示为传感器的各项性能指标对比。
2. 展望
如表 2.1 所示,不同的传感器互有优缺点,单一的采用某种传感器并不能解决所有的问题,传感器融合才是未来无人驾驶车发展的方向。
未来,另一个趋势是借助外界手段进行感知,也就是越来越被重视的车路协同。通过 V2X 技术实现车和外界环境的交互,从而实现超越传感器本身的感知能力,如图 2.11 所示。
图 2.11 V2X 示意图
2.4 计算单元
如果说传感器是无人驾驶车的眼睛,那么计算单元则是无人驾驶车的大脑,传感器采集到的数据经过计算单元的运算,最后才能转化为控制信号,控制汽车的行驶。因此一个性能强劲的大脑显得尤为关键。
2.4.1 简介
无人驾驶车运行过程中需要处理各种不同类型的任务,所以目前大部分的无人驾驶计算平台都采用了异构平台的设计。无人驾驶车在 CPU 上运行操作系统和处理通用计算任务,在 GPU 上运行深度模型感知任务。
无人驾驶操作系统运行在 CPU 上,实现系统调度、进程管理、网络通信等基本功能。还有一部分通用任务也跑在 CPU 上,例如定位的 NDT 算法、卡尔曼滤波和控制相关的算法等。无人驾驶的环境感知算法运行在 GPU 上,目前主流的深度学习框架都支持通过 GPU 来加速运算,特别是一些图像算法。GPU 的性能和无人驾驶车感知周围环境的能力息息相关,目前也有采用专门用于深度学习的芯片来处理此类任务,例如 google 的 TPU 等。
从哪些方面来判断计算平台是否满足无人驾驶的要求呢?下面来详细讲解计算平台的参考指标。
2.4.2 参考指标
1. 性能
性能包括 4 个方面:CPU、GPU、内存和总线 。
CPU。CPU 主要运行自动驾驶操作系统和进行通用计算,目前主流的通用 CPU 是 Intel 公司 X86 架构和 ARM 公司的 ARM 架构。Intel 公司的志强系列处理器已经广泛应用于数据中心服务器和工控机上,ARM 公司则是设计芯片然后把方案卖给各家公司让他们自己生产。目前各大公司发布的无人驾驶计算平台大部分都采用了 ARM 架构的处理器,主要原因是在汽车行业,芯片需要满足车规要求,而 ARM 处理器更方便集成。可以预见未来发布的无人驾驶计算平台会大量采用 ARM 架构的处理器做通用计算。
GPU。目前主流的深度学习框架都是通过 GPU 进行训练和计算,因此无人驾驶计算平台大部分都采用 GPU 来进行深度学习计算。也有专门针对深度学习计算的芯片如 TPU 等,但目前这类芯片应用的生态和成熟度还不是很高。此外还有计算平台通过 FPGA 来做深度学习加速,成本会比 GPU 高。未来在无人驾驶大规模商业之后可能会出现专门针对深度学习计算的芯片。
内存。内存包括 CPU 内存和显存,内存容量太小和刷新频率太低都会影响到系统性能。同时应当尽量避免内存条的设计,采用贴片内存,防止内存震动失效。
总线。无人驾驶车的传感器和 GPU 等硬件设备都需要总线和计算平台相连接,总线带宽是系统性能的保障。同时计算平台的 CPU 需要采用冗余设计,2 颗 CPU 之间通过总线连接,保证一颗 CPU 失效后,另一颗也能够继续工作。
2. 功耗
一般系统的性能越强,则功耗越大。这时候需要考虑以下 2 个方面:电源和散热。
电源。计算平台采用的是车载电源,考虑到人的安全,车载电源的电压限制在 36v 以下。一般车载电源能够提供的功率不超过 1KW,也就是说在不进行任何改造的情况下,计算平台的功率限制在 1KW 以下。如果需要增加功率,要么采用多个电源,要么增大电源的电流。而 1KW 的电源电流约为 42A,功率如果要增大到 2KW,那么电流要增大到 84A,我们知道电流越大,系统的发热会越大,所以也不是可以无限增加电源功率。
散热。在功率非常大的时候,计算平台甚至需要水冷散热,采用风扇散热在汽车密闭的后备箱中没有排风口,无法有效的把热量排放出去。水冷散热的效果好,而且不需要排风口的设计,在功耗比较大的时候采用水冷散热是很好的选择。
3. 存储
无人驾驶车需要存储高精度地图、日志、传感器数据等多种数据。这些信息的数据量很大,特别是传感器数据,在录制数据的时候,为了让数据能够及时保存,一般会选择固态硬盘。固态硬盘的写入速度快,并且相对机械硬盘也不容易失效,因此无人驾驶中都建议采用固态硬盘。
4. 接口
计算平台除了需要注意性能、功耗和存储,还需要注意各种总线接口是否完备。目前传感器的接口丰富多样,摄像头采用的是 USB 接口,激光雷达采用的是以太网,毫米波雷达采用的是 CAN 总线,同时还需要预留足够的接口给其它外设,例如 GPU、FPGA 加速卡、V2X 设备等。计算平台只有具备丰富的接口类型才能满足无人驾驶的要求。
2.4.3 计算平台
目前无人驾驶计算平台有 3 种选择。
第一种是采用工控机,工控机采用 CPU 和 GPU 的组合,非常通用,同时又能够满足恶劣坏境的要求。但工控机的性能不太强劲,接口也不太丰富,适合初期的无人驾驶验证。
图 2.12 工控 IPC(Nuvo-6108GC)
第二种是采用芯片厂家推出的无人驾驶计算平台,比如英伟达的 DRIVE、德州仪器基于 DSP 的 TDA2X Soc、恩智浦的 BlueBox。这类平台都是采用开发板设计,不太适合直接应用在无人驾驶中,好处是厂家提供了 SDK,可以做到开箱即用。
图 2.13 Navidia drive AGX
第三种是自研计算平台。特斯拉的 FSD 就是自研的计算平台,集成度非常高,采用冗余设计,集成有专门的安全模块,性能和接口也能够满足特定场景的要求。自研芯片的解决方案非常适合无人驾驶,但是研发成本太高。
图 2.14 特斯拉 FSD 芯片
2.4.4 边缘计算
边缘计算是无人驾驶未来的发展趋势之一,传感器中会逐步集成融合和滤波算法,而不需要把所有的计算全都放在计算平台中完成。典型的应用场景是为了处理摄像头拍摄的大量图像,可以先用 FPGA 处理,然后输出处理好的结果给计算平台使用,这样不仅可以减轻系统带宽压力,同时还可以加快图片处理速度。
2.5 辅助单元
除了实现无人驾驶必须的一些硬件之外,我们还需要一些硬件来辅助无人驾驶,无人驾驶车没有司机,因此需要人机交互设备实现人和车的交互。此外,无人驾驶车同外界进行通讯,还需要 V2X 等网络设备。最后无人驾驶车还需要类似飞机黑匣子的设备来记录无人车的状态,在发生交通事故之后,帮助分析事故原因。
2.5.1 人机交互
1. 为什么需要人机交互?
无人驾驶车带来的好处显而易见,汽车不再需要司机了,带来的后果是,我们从和司机交流变成和汽车交互了。司机能够很好的理解乘客的意图,同时也能对突发状况进行处理,以目前的技术而言无人驾驶车还远达不到这么先进。未来人机交互正朝着更加智能的方向发展,以便更好的理解人的意图。
2. 人机交互的过程
人机交互分为 2 个过程:一是人对车下达指令,二是车对人的反溃如图 2.15 所示。
图 2.15 人机交互过程
人对车下达指令最直接的需求就是告诉汽车,我要从哪里上车,目的地是哪里。这是出行最本质的需求,目前的无人驾驶打车服务,提供的还是点对点的服务,也就是说你无法选择起点和终点,只能选择固定线路,真正的无人驾驶服务应该提供任意点到点的服务。通过滴滴打车时,我们可能不止一次因为手机定位不准,需要打电话给司机沟通上车地点。而无人驾驶车没有司机,如果乘客的定位不准,那么如何和无人车确认上车地点就成了问题,因此解决人和车的沟通问题在无人驾驶打车中显得尤为重要。
未来,人对车的指令会由单纯的机械指令变的更加抽象,只需要指定一系列行为,无人驾驶车会自动完成这一过程,现在已经实现的功能就有自适应巡航和自动泊车等。
车对人的反馈包括通知乘客无人驾驶车当前的状态、位置、速度以及电池的电量等。同时人机交互系统还需要提示是否发现了潜在的威胁,以及车准备做出的决策,乘客凭借这些信息能够知道驾驶过程是否安全。如果无人驾驶车出现了故障,人机交互系统还需要发出警报提醒乘客。
图 2.16 特斯拉 model3 交互界面
除了功能上的交互,还需要关注车载服务的交互。自动驾驶普及之后,车不仅仅是作为交通工具,更像是一个私密场所了,人们可以在车内办公、娱乐、游戏和休息。车内的娱乐和影音服务都会升级,乘车可能变得更有乐趣而言了。
上述都是对乘客友好的交互设计,对工程师和维护人员而言,无人驾驶车最好能够提供一些诊断界面,方便查看当前的硬件健康状态、软件版本和车辆维护信息等。诊断界面是工程师发现问题和维护车辆不可或缺的手段。
3. 人机交互方式
按钮是最古老的人机交互方式之一,目前已经被越来越多的电子屏幕所替代。按钮的方式非常可靠,常常用来启动无人驾驶车的自动驾驶模式,或者当做紧急按钮使用。
图形界面是目前最多采用的交互方式。通过图形界面可以下发控制命令,也可以显示无人车的反馈信息。目前汽车中集成了越来越多的电子屏幕用来做人机交互。
最理想的方式是通过语音交互,我们不止一次的在科幻片中看到虽然飞船驾驶仓里有着各式各样的控制按钮,但是最后飞船指挥官都是通过简单的对话来驾驶飞船。无人驾驶车也是类似,但以目前的自然语言处理技术,还远达不到这种程度。驾驶过程中的噪音也会对语音识别产生影响。当遇到多个乘客一起交谈的时候如何理解语境也会变得非常困难。
随着技术的发展,目前越来越多的交互方式加入到了汽车之中,例如指纹识别、人脸检测以及手势控制等。相信未来无人驾驶车的交互方式会变得越来越智能和人性化。
2.5.2 V2X
1. 什么是 V2X?
V2X(Vehicle-to-Everything),是车和外界进行通信互联的技术。V2X 是车联网的重要组成部分,主要目的是为了保障道路安全、提高交通效率和节省汽车能源。美国国家公路交通安全管理局(NHTSA)估计,如果实施 V2V 系统,至少可以减少 13%的交通事故,从而每年减少 43.9 万次车祸。
目前有 2 种 V2X 的通信技术。
基于局域网的技术(DSRC)
基于蜂窝网的技术(C-V2X)
2012 年,IEEE 首先通过了基于局域网的 V2X 技术规范,它支持车和车以及车和基础设施之间的直接通信,这项技术称为专用短距离通信(DSRC)。DSRC 使用 802.11p 提供的基础无线电通信。
2016 年,3GPP 发布了基于 LTE 的 V2X 标准。它也称为 C-V2X 技术用以区别基于局域网的 V2X 技术。在直接通信的基础上,C-V2X 还支持通过蜂窝网络(V2N)进行广域通信。
尽快存在一些争议,但是在 2017-2018 年由 5G 汽车协会 (5GAA) 进行的一些研究和分析表明基于蜂窝的 C-V2X 技术在性能、通信规范和可靠性等多个方面均优于 DSRC。
V2X 的应用场景分为 2 类:一类是道路安全;一类是交通管理。
V2X 可以有效避免交通事故,这类事故往往是刹车不及时,或者没有足够的视野范围导致的。V2X 能够在靠近车辆之前提供预警,在一些十字路口没有视野范围的时候,能够提示乘客有车辆汇入。
V2X 还用于交通管理,监控当前的交通状况,动态的控制交通,减少交通拥堵。
2. 展望
V2X 不仅仅证明能够减少交通事故,还能改善现有的交通状况,最后 V2X 还能够解决目前无人驾驶面临的一些难题。
红绿灯和交通标志识别一直是无人驾驶中很重要的一个问题。在一些城市主干道路口,交通标志非常密集,逻辑也十分复杂,以目前的人工智能水平还不足以理解分析交通标志的逻辑。同时目前都是采用摄像头做红绿灯识别,而摄像头在光照变化和夜晚的时候,识别效果会大打折扣,但采用 V2X 技术可以轻松的解决上述问题。
除此之外,视野范围一直是自动驾驶保持安全的重要指标。单独依靠无人驾驶车自身的传感器来获取远处的视野有着诸多限制,而依托 V2X 技术,能够让无人驾驶车看的更远,还能够获取十字路口等一些传感器视野看不到的地方。
最后,无人车往往无法有效预测紧急刹车的汽车和突然从路边出现的行人。而装备有 V2X 设备的汽车在做出紧急刹车时,能够立刻通知后车减速,避免追尾。同时无人车能够及时发现佩戴有 V2X 电子设备的行人,而不需要进行大量的感知运算。
可以预见未来 V2X 对自动驾驶会是一个非常好的补充。
2.5.3 黑匣子
1. 什么是黑匣子?
事件数据记录器 (EDR) 是用于记录汽车驾驶状态的设备。在现代的柴油卡车中,EDR 在发动机出现故障或车速陡然变化的时候触发记录数据。在发生车祸之后收集来自 EDR 的信息,并对其进行分析,以确定事故发生的原因。EDR 一般将信息记录在防篡改的读写设备中。
2. 原理
一些 EDR 不停的存储数据,覆盖几分钟之前写入的数据,直到发生车祸之后停止覆盖。还有一些 EDR 通过在碰撞之前的一些征兆例如速度突然变化触发写入数据,直到发生事故之后结束。EDR 会录制多方面的数据,包括是否使用了制动、撞击时候的速度、转向角以及座椅安全带状态等。虽然本地可以存储数据,但是一些车还是会把数据上传到远程的数据中心进行分析和保存。
3. 应用场景
EDR 主要用来分析事故原因,以及提供事故发生时候的法律依据。目前行车记录仪实际上已经具备了部分的记录功能,并且可以作为交通事故的证据。
在无人驾驶领域,黑匣子的主要目的是为了记录事故发生的原因,用来分析无人驾驶车是否做出了错误的决定。当然无人驾驶车需要保存的信息可能更多,用以方便跟踪问题。
2.6 总结
硬件可以理解为人的大脑和骨骼,而软件则是人的思想。无人驾驶硬件需要具备哪些特性呢?下面主要从外观、视野、操控、性能和适应性 5 个方面来介绍对无人驾驶硬件的要求。
2.6.1 外观
无人驾驶车上加装的钢骨架和传感器很影响汽车的美观,作为无人驾驶从业人员,可能慢慢接受了这种外观,但要让大众能够接受这种审美,还有漫长的路要走。人们不会为丑的东西买单,随着无人驾驶定制车型的出现,无人车的外观比之前已经有了很大的改观。
如图 2.17 所示,左图为第一代无人车,DARPA 挑战赛上夺冠的无人车 "Stanley",右图为 Waymo 最新的无人驾驶车。
图 2.17 无人车 & amp;quot;Stanley"(左)Waymo 无人车(右)
有什么车不那么在乎外观呢?卡车。由于卡车不是私人所有,主要是考虑运输功能,所以卡车可以相对任意的架设设备,比较少的考虑外观。图 2.18 所示为 OTTO 公司的无人驾驶卡车。
图 2.18 OTTO 公司的无人驾驶卡车
接下来再看如何设计无人车车顶的传感器模组,为什么希望能够模块化传感器模组呢?显而易见的场景是采集地图,如果在车上安装支架,需要先改装车,之后再安装传感器,最后再把车开到目的地去采集地图。如果地图采集车在深圳,客户在北京,车开过去的成本太高了。如果能集成好传感器模组,把模块快递过去,再安装到车上,对方只需要接一个电脑,通过简单的校正就可以工作了,成本相对低很多。传感器模组如图 2.19 所示。
图 2.19 传感器模组示意图
2.6.2 视野
无人驾驶车一个很重要的方面是视野,看的更广和看的更远,这是无人驾驶车安全的重要保障。
1. 如何做到全视野
如果可以,我们希望无人驾驶车具有 360° 的视野范围。拿卡车和小汽车举例子,如图 2.20 所示,可以看到卡车的视野盲区是很大的,之前有交通事故报道,在卡车停车后,贴近车头有行人通过,这时候行人在司机的视野盲区,卡车司机看不到行人启动卡车后导致车祸。
图 2.20 卡车和小汽车的视野对比
除了汽车型号带来的视野差异之外,传感器数量太少也会导致视野盲区,增加多个传感器可以解决这个问题。如图 2.21 所示,针对 1 个激光雷达出现的视野盲区,在无人车的左右分别增加 1 个激光雷达之后,扩大了视野范围。
图 2.21 激光雷达视野盲区
另外传感器的位置也影响到无人驾驶车的视野范围。在路口拐弯处,特别是一些盘山公路,传感器的位置在车的中部和前部展现的视野范围也不一样。如图 2.22 所示,安装在车前部位置的传感器可以更早的发现障碍物。
图 2.22 不同安装位置的传感器视野范围对比
除了这些考验之外,还面临其它一些特殊场景的视野挑战。当汽车通过拱桥时即使在车头位置安装有传感器,由于车的俯仰角度,也很难发现障碍物;传感器的位置也可能带来视野融合的问题,比如激光雷达看到了障碍物 B 而摄像头没有看到,融合的时候不能确定以哪个传感器的结果为准;由于毫米波雷达的垂直视野很窄,由坡导致的遮挡问题发现不了障碍物;另外当遇到特殊情况如:卡车拖着钢筋、树木等,由于障碍物很稀疏,靠雷达很难确认这类障碍物。上述场景分别如图 2.23 所示。
图 2.23 特殊场景视野盲区示例
最好的办法是开发一款工具来识别汽车的视野盲区,在工具中设置好传感器的位置之后,可以查看汽车视野盲区有多大,从而帮助工程师确定无人车传感器的个数和位置。
2. 如何做到远距离视野
看的远的好处在于车在高速行驶过程中,可以更早的发现潜在的危险。距离越远激光雷达采集到的点就越稀疏,目前激光雷达最远的视野范围是 100-150m 左右。摄像头和毫米波雷达的视野范围更远,采用摄像头可以看到约 1000m 左右的视野。
综上,通过激光雷达、毫米波雷达和摄像头冗余搭配,无人驾驶车既能获取远距离的视野,又能兼顾 360° 的视野范围。如图 2.24 所示,展示了无人车整体合理的传感器布置,保证无人车获取足够安全的视野范围。
图 2.24 无人车整体传感器布置
3. 天气对视野的影响
天气对视野的影响有 2 方面:一是会影响视野可见性,二是影响视野范围。下面我们来分析天气对传感器的视野有哪些影响。
雾霾。雾霾对激光雷达的影响最大,因为激光的波长和雾霾颗粒的大小差不多,穿透不了雾霾。同时摄像头在雾霾的时候也会影响视野范围,而毫米波的波长较长,可以绕过雾霾颗粒,受到的影响较校
下雨。下雨对摄像头的影响比较大,下雨会使得镜头模糊,如果雨很大,只能依赖车内的摄像头。下雨对激光雷达和毫米波雷达的影响相对比较校
光照。光照对摄像头的影响最大,当强光照射(对面远光灯直射),光线很暗(夜晚)或者光照突然变化(隧道出口)的时候,都会导致摄像头失灵。目前有一些研究为了解决光照对摄像头的影响,一种方法是对摄像头做处理,来适应不同的曝光率,另外一种方法是提取光照不变特征,即使环境光照变化,也不会影响这些特征的提龋由于激光雷达是主动发射型设备,所以光照的变化对激光雷达影响不大。毫米波雷达发射的是电磁波,可见光对毫米波雷达几乎没有影响。
下雪。下雪对摄像头,激光雷达,毫米波雷达都有影响。
总之,每种传感器都有它的优点和缺点,只能通过适当的传感器冗余和传感器融合来得到近似完美的视野。
图 2.25 不同传感器对比
2.6.3 操控
我们到底需要什么样的汽车底盘?是采用现有的设计还是直接跳过去生产下一代。下面我们来看下无人驾驶车的操控。
图 2.26 Zoox 无人驾驶车
Zoox 对汽车操控的设计非常超前,平时我也有这种想法,为什么每次停车的时候都要倒车进去,而不是直接开进去呢?Zoox 就是为了解决这个问题而生的,Zoox 认为汽车有前后之分是人类的操控习惯,机器不存在这个问题,机器可以同时控制前轮,甚至后轮的方向,机器不需要汽车区别前进和后退。因此 Zoox 生产的车是没有方向的,甚至凭借车内的座椅也区分不出前后。如图 2.27 所示。
图 2.27 Zoox 的无人驾驶车设计
从人类的角度我们确实难以接受没有方向的车,但是可以同时控制前轮和后轮,车的操控确实简单了很多。
1. 倒车的时候方便了很多
如果是传统有方向的车,我们先要开车过去,然后再分为 4 步倒车入库,如图 2.28 所示。而无方向的车就简单多了,停车的时候直接开车进去,离开的时候直接开车出来,因为没有方向,向前和向后行驶对机器来说没有任何区别。
图 2.28 停车示意图
2. 可以原地转弯
当前的汽车转向模型可以抽象为单车模型,也就是前轮转向。如图 2.29 所示,假设车的后轮也可以转向,就可以把汽车转向模型抽象成 2 轮自平衡小车,实现原地 360° 转向。学车的时候最怕一会前进档,一会倒挡,很容易搞混往哪个方向打方向盘,而机器就不存在这样的问题。前后轮都可以转向的好处是可以实现原地转弯,以后再也不用担心狭窄路段掉不过头来的情况。
图 2.29 转弯示意图
Zoox 专门为机器而设计的下一代操控为无人驾驶操控系统提供了新的思路,未来无人驾驶车也许会采用这种设计。
2.6.4 性能
无人驾驶车在提升性能的同时要控制功耗,保证性能和功耗的平衡。
1. 提升性能
人们一直希望汽车性能强劲,同时功耗很低。半导体行业一直遵循着摩尔定律,即每 2 年的性能翻一番。摩尔定律促进了整个 PC 时代的发展,但摩尔定律将要失效了,目前硅基的制程最多到 7nm,再往前进一步已经相当困难。因为距离近了会漏电,击穿硅晶体,导致芯片良品率太低。制程的降低首先可以减少功耗,其次可以提升性能,目前来看由于摩尔定律的失效,通用 CPU 的性能会在很长一段时间内陷入停滞状态。
要提升性能,可以采用专门用来处理神经网络的芯片,比如 TPU,可以超快地处理神经网络大量的乘法和加法运算,而且耗电量显著降低。也可以采用 FPGA 和专用 ASIC 芯片,把传感器融合算法和底层算法融入硬件,促进无人车系统的模块化发展。
2. 功耗的影响
接着再看功耗对无人车的影响。首先带来的影响是供电,功耗太高会影响无人车的续航。以无人车实时的运算开销为 2KW 估算,无人车的电池容量为 75kWh (千瓦时),那么电池可以使用的时长是 37.5 小时。这还仅仅是运算的开销,还没有算车本身的动力开销。由于能源紧张,无人车需要考虑限制功耗。
功耗太高带来的另外一个问题是散热,风扇不能满足大规模散热需求,只能采用水冷散热。很早以前汽车发动机是拿自来水冷却的,过一段时间就需要加水,现在有水冷散热片就不用了。原理是把水放在铜管里,循环流动散热。加水有 2 个坏处,一是北方的冬天经常零下几度,自来水会结冰,冻住之后水的体积会变大,把发动机撑坏;二是水会沸腾,如果变为水蒸气,铜管会爆炸。所以目前的水冷液是在水中加入了防冻液和各种专门用途的防腐剂组成的混合物,防冻,沸点也会到达 120 度左右,也就很好的解决了上面的问题。
最后还要注意出风口和进风口。如果把计算单元放在后备箱,没有出风口和进风口,热量很难散发出去。
2.6.5 适应性
良好的适应性代表着无人驾驶车能够战胜复杂多变的环境。我们先看下我们处在什么样的环境下,然后再看我们面临着哪些挑战。如果有一天人类殖民火星了,一定会有人把汽车厂家告上法庭,因为他们没有备注这点:“地球生产的车不适用于火星”。
图 2.30 无人车后备箱整体结构
如图 2.30 所示为无人车后备箱的整体结构,安装有电源、运算单元、网络设备以及各种数据线等,它们会面临着以下 5 项挑战。
振动。机械硬盘最怕震动,汽车长期处于颠簸状态,因此只能采用固态硬盘。电路板也很怕震动,电路板的表面刷了一层绝缘胶,如果设计的不好,结构件经常摩擦电路板,会把绝缘层磨掉,导致电路直接烧毁,产生灾难性的后果。
温度。夏天环境温度可能就达 40-50°,如果汽车在室外暴晒,同时机箱还在产热,芯片的实际工作温度会更高。汽车硬件要求的温度范围非常高,仅次于航天,需要硬件能够在 - 40°~120° 的温度范围内工作,可以说目前无人车大部分的元器件还达不到要求。
湿度。湿度太高会导致电路进水短路。
盐。在海边的城市,空气中盐分很高,对汽车元器件有很强的腐蚀性。
电磁。大功率的计算单元会产生电磁辐射,影响高速总线的信号质量,导致传输错误的数据。
外观、视野、操控、性能和适应性都是无人车量产必须考虑的问题,无人车想要普及,必须要解决以上问题。最后我们希望无人车具有酷炫的外观、广阔的视野、完美的操控、强劲的性能和极低的功耗,同时还能够适应各种复杂多变的环境。
2.7 参考资料
【1】 A Survey of Autonomous Driving: Common Practices and Emerging Technologies
【2】 Junior: The Stanford Entry in the Urban Challenge
知乎链接:https://zhuanlan.zhihu.com/p/180517459?utm_source
爬取UP主弹幕与评论,进行广告投放分析。
10月14日,AWS解决方案架构师贺浏璐将带来一场live coding,演示如何利用AWS云服务构建一个简单的数据管道从爬娶处理到分析视频内容。