找回密码
 注册
查看: 338|回复: 1
打印 上一主题 下一主题

搭建自动驾驶的硬件系统

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-28 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在禾多科技看来,一个完备的自动驾驶硬件系统,应该至少包含以下三个最基本的组成: 自动驾驶的四肢——线控车辆、自动驾驶的眼睛——传感器、自动驾驶的大脑——计算单元。
(一)首先,自动驾驶最基本的硬件组成,就是一部车,并且是具备线控功能的车。所谓的线控就是指车辆可以通过上层发出的数字或者模拟的信号来控制车辆的某些行为,这里的上层就是大家平常所使用的比如电脑这样的控制单元,可以理解为自动驾驶的大脑,而这里的线控车辆可以认为是自动驾驶车辆的四肢。
线控车辆的控制行为又可以细分为以下几个模块:
1、纵向控制,纵向控制可以说是车辆的驱动和制动,目前纵向模块比较常见的接口有控制车辆的速度、加速度、发动机或者轮端的扭距;
2、横向控制,目前横向控制的接口主要有两种,一种是通过控制方向盘上的扭距来控制方向盘,第二种是直接控制方向盘的角度和转动速度。
车辆的纵向和横向控制可以认为是线控车辆最基本的线控功能,一辆车如果具备了这两种控制能力,已经可以完成一些比如高速巡航之类的简单自动驾驶功能。
除此之外,车辆的线控还应该包括一些其他的功能。比如档位的控制、转向灯控制、双闪控制等,只是这些控制与纵向、横向控制不同,大多都是一些定性控制,比如转向灯的开关。
线控车辆除了对大脑发出的一系列指令做出反应之外,作为自动驾驶的四肢,车辆还需要向大脑反馈自己一系列的状态,比如车辆是处于自动驾驶状态还是人工驾驶状态;另外,一旦驾驶员接管车辆,控制车辆也应该给予上传相应的反馈。除此之外,还有一些车辆自身状态的信息,比如车速、轮速等信息都是比较重要的。对于上层算法,比如上层的控制单元、定位单元,都需要这些车辆信息的输入。
还有一个我们认为比较关键的地方,就是一旦车辆不能正确地执行上层的控制命令,那么车辆本身就需要反馈一种车辆的错误状态,这样开发人员才能根据车辆的错误状态来解决车辆的报错。
除了车辆的控制和反馈之外,线控车辆在通信接口上还会有一些不同的地方。目前绝大多数的线控车辆应该都是用CAN总线作为通信接口,但是不排除有些车辆会使用类似车载以太网这些结构作为控制接口。
(二)第二个自动驾驶硬件系统必要的组成部分是相关的传感器。前面有提到过,其实车辆本身也可以算做自动驾驶的一个最基本的传感器,本身会提供车辆的一些基本信息,而其他的一些自动驾驶相关的传感器就可以认为是自动驾驶的眼睛和耳朵。下面列举了一些比较有代表性的传感器。
摄像头:这种传感器有一个非常大的优点,就是成本非常低廉,目前市场上已经有很多量产级别和车规级别的摄像头可以供大家挑选。目前很多量产车都可以在不同的位置上安装摄像头这种传感器。另外一方面是在算法层面,由于摄像头相关算法(比如视觉定位)已经发展很长时间,有些算法已经比较成熟了,已经能够很快地在自动驾驶上实现,并且目前看来是有一些算法的效果还不错。
但是摄像头的缺点也是有的,在做硬件的人看来,摄像头本身的时间同步比较困难,对于摄像头本身来说,需要考虑它是GlobalShutter(全局快门)还是RollingShutter(卷帘快门)。如果我们要做到精准的时间同步,还需要考虑从摄像头底层去得到每张图的曝光时间,从而得到每张图精确的成像时间,因此这种同步往往是非常困难的,也会影响后续传感器融合的算法性能。
禾多科本身是聚焦在自动驾驶的量产项目上的,我们发现相机还有一个问题是视觉算法对于计算单元的需求比较高,目前很多的算法可能都需要高性能的GPU,这些芯片目前很难有量产化的前景,至少最近几年不会。
另外相机本身的输出量非常大,如果想要无损地保存相机里面的数据,在量产的方案里几乎不太可能。最后还有一个相机最显而易见的问题是,它不是一个全天候工作的传感器,在一些比较恶劣的天气或者是在天黑的时候,相机的一些算法就不能正常工作了。

7 Z: s7 \4 K2 t% B1 }: b+ h
激光雷达:激光雷达可以是自动驾驶的宠儿,从最早的DARPA挑战赛开始,到现在很多的自动驾驶解决方案都依赖于激光雷达,所以从现在看来,无论国内还是国外都有很多激光雷达的供应商,当然激光雷达这么受青睐也是有原因的,它的优点是能够非常精确地拿到厘米级的数据,而且能够非常精确地测量出周围的3D信息。
但是从自动驾驶量产方面来看,激光雷达的成本还是降不下来,虽然固态雷达这样的低成本方案已经提出很长时间了,但是目前市面上依然没有特别成熟的固态雷达解决方案。另一个问题是激光雷达目前都是属于旋转式的机械结构,这种结构往往是很难通过车规的,因此想要做到前装量产是比较困难的。而在我们的了解中,现在也只有法雷奥Valeo的四线激光雷达通过了车规,装到了量产车上面。
以前我们在使用激光雷达的时候出现过这种问题,在下雨天时,地上的积水和天空中的雨水都会对激光雷达的测量造成非常大的噪声,所以激光雷达也不能认为是一个全天候的传感器,但是它对天气的要求并没有相机那么苛刻,因此我相信,不止是禾多,很多从事自动驾驶相关的工作人员也都很期待下一代激光雷达的产品,不管是固态的还是一些其他形式的激光雷达。
$ `! a6 q% Z% [% H; e
超声波雷达:这是一款已经大量量产并且安装上车的传感器,现在大部分的车已经在用超声波雷达做一些倒车相关的功能,所以在自动驾驶上使用超声波雷达,不需要再去额外安装这些传感器,不会提高传感器的成本,而且超声波雷达本身造价也不高。但是超声波雷达在自动驾驶中扮演的角色并不是那么重要,因为其本身的使用场景比较有限,有效的探测距离也只不过在几米范围内,不过在一些特定场景,比如自动停车功能中,超声波雷达是不可或缺的一环。
毫米波雷达:也是一款量产级别的传感器,目前很多的量产车都安装了至少一个毫米波雷达来实现ACC这样的功能,甚至有一些高配的车安装了5-6个毫米波雷达,足够支持L3甚至L4的自动驾驶对于毫米波雷达的需求。
而且毫米波雷达本身的探测距离和速度也是非常重要的优点,对于障碍物的速度,毫米波雷达是能够直接检测出来的,而不像其它传感器是算出来的。并且很多毫米波雷达是全天候工作的传感器,从经验来看,毫米波雷达确实可以比较好的应付下雨、下雪这样的天气。
不过毫米波雷达的缺点也比较明显,毫米波雷达的检测结果往往缺乏3D信息,只是检测到一个障碍物的点,会导致毫米波雷达与其他传感器或者与车身的标定变得非常困难。好消息是,一些大的毫米波雷达供应商都在开发下一代产品,比如博世的第五代毫米波雷达,他们会开放出毫米波雷达更加底层、类似激光点云的信息,相信这种产品的问世,会使自动驾驶受益匪浅。
; @' {) o' N8 n5 h2 p
GNSS/IMU组合惯导:我们通常把这两个传感器放在一起,因为这两个传感器经常一起配合使用来提供比较稳定精准的定位信息,而且他们之间的融合算法也已经相对比较成熟,可以大量使用在各种自动驾驶方案中。
除了获得定位信息之外,GNSS也可以为整个自动驾驶系统提供稳定的时间源,可以用这个时间源做各个传感器和车身之间的同步信息等同步方案。
(三)自动驾驶的计算单元:也就是我们前面提到的自动驾驶的大脑,从自动驾驶的研发或者量产来说,计算单元大概可以分为以下的三种情况:
1、使用比较成熟的工控机,这种方法最快也最方便,很适合自动驾驶初期的算法开发与验证,不过工控机不是可以量产的配置,不能用在量产的自动驾驶解决方案中;
2、使用第三方提供的研发平台,这里面最著名的就是NVIDIA提供的Drive PX2,但是从使用经验上来看,也存在一些问题,比如定制化不足,容易出现资源浪费或者资源不足的问题;
3、自研研发平台,上图展示的就是禾多自己开发的一个比较简单的嵌入式控制单元,不过这种做法在研发上往往需要耗费很多精力和时间。
以上就是自动驾驶硬件系统的三个组成部分,下面我会主要针对平台和传感器对自动驾驶算法的影响进行一些具体的讨论。
这张图展示了我们从事自动驾驶以来使用过的线控平台,第一辆车是当时禾多科技创始人兼CEO倪凯在清华上学时使用的线控平台;第二辆车是在百度最开始使用的线控平台,当时主要用它来验证我们最初的一些算法;第三辆车是当时百度和宝马合作一起改的一辆线控车,后来也是这辆车完成了百度自动驾驶的Demo;最后一辆车是我们在后续工作中使用的大众高尔夫的线控车辆。
在使用这么多线控车辆的经验当中,我们深深地感受到,要找到一个适合自动驾驶算法开发的线控平台,并不是一件非常容易的事情,我们在使用过程中也遇到过非常多的坑。
首先是线控功能的不稳定,有一些线控车辆虽然具备线控能力,但是往往会出现功能不稳定的情况,比如做三次测试,有两次测试是有问题的,只有一次测试才能成功,这往往会影响算法的调试效率;另外是控制逻辑的复杂性,具体表现在有些线控车辆要实现线控指令,必须按照一定的时间顺序和先后顺序向车辆发送一系列的指令,一旦中间有哪个环节出错,就会出现车辆报错的情况。
还有一些车辆本身的控制存在响应延时较长的问题,这种大延时往往是控制算法所担心的,会加大车辆的控制误差。另外有一些线控平台是通过外加装设备的方式来达到线控作用,通过外加装的方式,除了会有一定的延时以外,还会造成线控性能的不可靠,虽然线控平台的控制接口已经成功实现,但还是绕不开底层的一些限制,比如有些车辆的纵向控制只有当车速达到某个速度以上才能激活。
线控车辆的纵向和横向控制不准确也是一个问题,比如车辆的底层控制调试得不是很好,方向盘的控制有时候会有很大的超调出现,这种不精准的控制肯定会影响上层的算法调试。我们就曾经遇到过车辆的线控和车辆的状态强相关的情况,比如方向盘上可施加的力矩和当前的车速成反比,导致上层的控制算法会根据车辆的状态做出不同的调试,在不同的车速下会有多套不同的参数等类似问题。
最后一个问题是线控车辆的供电问题,因为整个自动驾驶硬件系统的供电可能都要由线控平台来提供,所以供电的稳定性也非常关键,尤其是目前有一些计算单元对供电的稳定性有着非常严格的要求,我们之前也遇到过因为车辆点火导致车辆电瓶抖动而损坏了GPU的情况。
以上就是我们在线控平台上遇到过的一些问题,相信今后大家在从事自动驾驶时,在线控平台上也会有更多的困难和挑战,这也凸显出一个良好线控平台的重要性。
下面我将分享一下关于传感器的标定和同步对整个硬件平台的影响。
激光雷达和车体的外参标定:激光雷达是我们在车上装的一个比较鲁棒的传感器,因此很多的传感器(比如毫米波雷达、摄像头)可能都是通过将它们与激光雷达进行标定,再与车身之间得到一个外参,可以看出激光雷达与车体的外参标定是十分重要的。
上图展示了标定前和标定后两种情况,左边是把激光雷达放在车辆上,同时工程师手量了一个外参,包括XYZ以及旋转的角度,然后根据外参让车辆动起来,将车在不同的pose下采集到的激光点云叠加,根据叠加的效果发现量出来的外参有时是很不准确的,从图上可以看出,在右上角的位置应该是有一面墙的,由于外参的不准确,所以导致点云叠加起来的墙非常模糊。
因此我们通过一些算法将激光与车体外参进行了充分的标定,标定后的结果就是右边这幅图。从这幅度可以看到标定之后再将点云叠加,这时墙面已经变得很薄了,同时这个直角已经很明显了,如果我没有记错,这里使用的应该是Velodyne16线激光雷达和车体的标定。
毫米波雷达的标定:一直以来,毫米波雷达的标定都是一个比较困难的问题,前面讲过毫米波雷达的输出是缺乏3D信息的,因此它检测到的障碍物只是一个点,而这个点又不是物体上非常有规律的点,比如如果是一个正方形,那么它就会返回正方形的一个角点,通常是根据角度和毫米波发生的角度来返回一个能量最集中的点。
这种不确定性和3D信息的缺乏会造成标定的困难,这里有两幅图,同样也是标定前和标定后。其中红色的线是激光点云叠加后的线,黄色的大点是我们标定时使用的一些柱子工具,我们想通过这些柱子来标出毫米波雷达和激光雷达的位置,这些黄色的点是我们用来标记出这些柱子在激光雷达点云中的位置。
如果大家放大图片,可以看到左侧图像中黄色点附近有很多零零星星排布的小黄点,这些黄色的点就是当我们的车绕着这些柱子开的时候,毫米波雷达在某些时刻记录下来的障碍物的位置。
这些位置跟激光点云中的点还是比较分散的,如果把这种结果直接用来做后面的障碍物标注,影响会非常大,很难将激光点云中黄色的点跟这些散列分布的小黄点进行融合到一起。
而我们是经过一个毫米波雷达标定,最后的标定结果是呈右图显示,虽然没有完全让黄色的激光雷达点云和毫米波雷达障碍物的点重合到一起,但是目前他们已经很集中了,因此再把这种的结果交还给后续的融合算法,就会得到一个比较好的效果。
摄像头的标定:我们将摄像头的位置与激光雷达的位置进行标定,从而反推到车体坐标系下摄像头的位置。其中摄像头的标定分为内参的标定和外参的标定。
内参的标定主要是体现在去畸变上,大家可以看左边图,我们选用的是一个广角的相机,区别还是比较明显的,在现实中,我们的棋盘格应该是一个直角的棋盘格,但在相机上已经产生了弯曲的弧线。
通过内参的标定把畸变去了之后,虽然图片的尺寸发生了变化,但是这种现实生活中的直线在图像中也会还原成直的,这样能更加好地去进行外参的标定,可以把激光雷达的点云投射在棋盘格上,包括投射在我们的工作人员身上,这样就把摄像头和激光雷达的外参位置给标定出来了。
接下来分享下传感器的时间同步问题,有一些传感器其硬件本身可能就具备时间同步的功能,比如激光雷达、GPS/IMU等传感器,这类传感器的同步可能会比较容易实现,因此我们也不需要去考虑。比较麻烦的是CAN总线的时间同步,由于CAN总线没有时间源,因此我们也只能使用一个接近的方法去推断CAN总线的时间戳信息。
在这里我主要分享一下相机的时间同步,就像前面的相机实验,并不是一个比较困难的事情,我们需要知道每一帧图像的出发时间、相机的曝光时间,这样才能知道相机的真正成像时间,当然也可以把相机信息传到电脑上的时间作为图像的时间戳,但是这样就变成了从出发时间到曝光成像时间,再加上从相机传输到电脑的传输时间,而需要经过这么长的延误时间才能达成一个时间戳。
时间戳延误会造成什么问题呢?大家可以看左边的这幅图,在上一张图片中,我们看到了在静止的状态下,我们的点云跟相机上的图片已经可以很好地重合到一起了。但是在这幅图中,由于车辆是在高速行驶状态下,时间戳延误会导致即便是标定好的外参,但是点云投射到相机上也会出现不吻合的情况,也就是左边这张图。
如果我们把相机的同步时间做精准了之后,就可以通过刚才的外参把点云投射到相对应的时间戳图像中,这样就会保证点云和图像中的元素还是重合的,即右图所展示的这样。

! |& I9 p6 A0 c3 |' C6 W, r
前面讲了车辆线控上的问题以及遇到的坑、传感器标定和同步的问题,那在我们看来,适合L2-L5自动驾驶的硬件平台是怎样的呢?
首先从线控平台来看,要保证功能的稳定性以及控制的准确性、延时小、控制接口灵活,尽可能少的功能限制,同时控制也要有一定的安全保障,可复用性高。
其次,在传感器系统上,需要有一套完整可靠的传感器系统,包括传感器的供电要稳定,各类传感器及传感器与车身的标定要准确,传感器的时间同步也要有一定的保证,并且要保证传感器有稳定的输出。
正是因为前面一些经验的痛点,通过自己的技术累积以及与国际主机厂和供应商的多个合作项目经验,我们发现研发效率取决于研发平台的完善度,并且是决定效率高低的因素之一,好的可搭载自动驾驶系统的车辆平台稀缺是目前绝大部分同行的痛点。于是我们禾多科技在2017年11月份发布了轩辕平台,并且认为轩辕平台是适合L2到L5自动驾驶需求的平台。
/ ]3 P* i3 Y; l5 i

该用户从未签到

2#
发表于 2020-7-28 15:02 | 只看该作者
在传感器系统上,需要有一套完整可靠的传感器系统,包括传感器的供电要稳定,各类传感器及传感器与车身的标定要准确,传感器的时间同步也要有一定的保证,并且要保证传感器有稳定的输出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-3 03:45 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表