详细解析记忆泊车的顶层技术原理
附赠自动驾驶学习资料和量产经验:链接
相对于记忆行车而言,记忆泊车 MPA(Memory Parking Assist)可以看成是停车场区域内的一个自动驾驶功能,可帮助用户按记忆的路线自动巡航并泊入车位或自动从车位泊出并巡航至泊出点。如下图表示了记忆行车和记忆泊车在整个工作环境中的场景示意图。
通常情况下,考虑到记忆泊车实际是一种低速自动驾驶控制过程,因此需要在记忆泊车过程中设置一定的设计运行范围才能保证其记忆建图和行驶控制具备可行性。比如,从控制逻辑上讲在记忆泊车控制中如果遇到前方障碍物的情况,对于记忆行车而言,通常是采用刹车避障的方式进行障碍物躲避。而记忆泊车则是通过转向绕行的方式进行障碍物躲避,从这一点上讲也是记忆泊车相对于记忆行车来说十分不一样的地方。此外,从整个静态ODD上看,我们的记忆行车通常是不需要考虑太多的极端的要素的。只要不是传感器本身的限制和遮挡都可以确保记忆行车控制的可行性。哪怕是类似内部道路、施工路段这类场景也可以不必作为ODD范围外需要考虑的要素,因为系统会根据识别的结果进行适时更新,但匹配上记忆行车的行驶路径方案相对比较单一。
记忆泊车技术设计要素
自动记忆泊车是车辆自动驾驶技术的重要应用。相关技术中,为了实现自动记忆泊车,一般需要先生成泊车地图,泊车地图一般包括停车路线和停车位。根据生成的泊车地图,车辆可以自动按照停车路线行驶并停入对应的停车位,从而实现自动记忆泊车。
记忆泊车的六个主要子功能包含记忆建图、智能泊入、沿途车位识别、智能泊出、运行过程中故障处理、动静态障碍物处理、视频监控等。
其功能核心主要是在使用智能泊入及智能泊出前利用泊车(环视摄像头)或部分行车传感器(前视摄像头)进行记忆泊车的局部地图绘制,提前学习并建立智能泊入和智能泊出的路线地图。建图完成后,用户需要使用所建立的地图驱动整个智能泊入、低速巡航及智能泊出控制。且整个过程中,用户无需手动控制车辆,但不能离开座位,整个泊车过程需要用户监控系统的运行状态,必要时可对车辆实施制动或转向以接管车辆。如下图表示了整个记忆泊车所涵盖的功能范围示意图。
而对于记忆泊车功能而言,由于考虑到传感器识别能力、系统控制能力等因素,通常是需要制定比较严格的ODD适用范围,并且整个控制过程中,驾驶员对于整车控制是可以随时介入的。如下图列举了几个关键的ODD要素。
和记忆泊车系统类似,记忆行车实际上是一种针对宿主车辆中预先记录的轨迹进行智能辅助驾驶的控制过程。整个过程实际是包含低速巡航和辅助泊车的过程场景。智能泊车控制过程在最后一定的时间通常是允许用户下车,通过手机短程遥控车辆过自动泊入车位的,这一过程需要从遥控泊车模块调动相应的控制过程。
整个记忆泊车的软件架构数据流图表示如下:
以典型的泊车算法处理芯片为例,整个记忆泊车处理流程分为两条主线:环视摄像头输入的数据通过TDA4上的VPAC模块进行ISP处理后,可以分两步进行分流,其中一路是通过C66模块中的两个DSP核分别进行前处理和后处理,同时C7x/MMA上完成神经网络的实时处理。
泊车建图与重定位原理
数据采集阶段通过对整个停车场进行分层全方位数据采集,并将建图所需的前视视频、环视视频上传至数据管理中心,通过泊车质检标注系统进行预处理生成相应的时间戳信息、定位信息、传感器标定信息,并结合先前预置地图信息PreMap(该预置地图信息可以是由其他车型采集生成后由本车通过云端下载)生成两套不同的感知模型信息。随即生成的摄像头模型数据信息和超声波识别模型信息(分别为泊车轨迹信息和车位识别信息),随后进行数据后处理(对所有传感器进行时间同步、不同物体进行物体关联、泊车轨迹融合修正、车位识别修正等)。最后将生成的数据输入地图模型进行有效的数据训练。
其中,在泊车建图过程中通常需要云端通过预设的置信度算法对所建立的地图预设置信度,在泊车激活试用阶段,通过将符合预设置信度的泊车地图直接下发至车端,使车端可以直接根据泊车地图进行自动记忆泊车。这里需要说明的是,预设泊车地图置信度的算法实际是通过人工质检的方式进行筛选和设置(又称质检),对置信度的程度进行有效的编号。这类质检过程实际类似于BEV建图过程中的真值标注一样,如果待质检的泊车地图的数量较多,由人工对每一份泊车地图进行质检将产生大量的人力成本,同时影响质检效率。因此,考虑自动化的质检方式也显得比较重要。如上图所示表示了整个记忆泊车建图至图像质检的整个过程。
如下图表示的是一种典型的泊车建图与重定位的示意图。其中输入端包含4枚环视感知的摄像头,在建图阶段,考虑了多个环视摄像头之间可能产生深度点云可以对其进行距离估计,并将对应的建图和位置进行优化。其生成的轨迹进行存储,并把相应的接口暴露出来供其他模块调用。此外,该四个环视视频将作为整个建图的特征提取输入,通过云端接口下载已生成的地图数据,匹配到被训练过的建图轨迹,并进行有效的重定位、且查询到当前位置并调整整个车身姿态。最后,通过车辆轨迹规划和控制单元进行整车控制响应。
注意,对于这里所建立的地图并非高精地图,也非导航地图。当然泊车建图的距离相对于行车来说是小很多,因为这类路径需要包含的信息量还是比较大的,且不同车位、泊入泊出过程都需要同步建立不同的地图。地图信息需要重点包括如下一些信息:
**①车道标志信息:**车辆运行轨迹信息(如x、y、z坐标),车位信息(四个角点x,y,z坐标)这里的Z轴信息主要是指跨层之间的信息。此外还有一些停车场的路标信息:如路口、柱子、减速带、坡道;
**②车辆定位特征信息:**建图起始点和终点GPS信息;
**③停车位确认和新增停车位的植入信息:**即目标车位以及行驶到目标车位中间可能检测到的对应车位。
泊车地图存储和管理
与记忆行车存储方式类似,记忆泊车的存储单元也是位于智能驾驶域控制器中,可以在划定的EMMC中,且整个地图存储过程是在用户完成建图后自动触发存储。地图可以同步选择存储在云端,如果考虑车车互联,该地图也可以作为联网其他车辆的的泊车地图。当网络信号良好的情况下,且自车通过定位到自身处于对应的停车场时,便可以启动后台下载程序控制车辆优先从云端下载地图,生产和存储。
之前提到,地图建立过程中是需要对地图的张数限制最大值的。那么超过最大值的情况就需要向前进行地图覆盖。
建图过程不能均保证建图成功,当建图失败时,该地图路线将不能用于泊车控制,这是需要从后台启动日志记录功能,将建图失败的原因进行详细记录。同时,系统前台需要通过HMI提示用户建图失败。
记忆泊车工作流程原理
为实现智能泊入和智能泊出功能,用户需先在停车场内驾驶车辆进行智能泊入和智能泊出路线学习,智驾车后台系统存储对应记忆的地图路线。
整个建图过程中通常需要对泊入路线、泊出路线、最大允许的倒车距离提出相应的建图要求。比如泊入过程建图时,需要考虑整个停车场支持从不同的停车入口进入,且均可以建立不同泊车路线的地图。而泊出过程则需要支持统一停车场的不同车位建图。这个过程需要考虑统一停车场内对不同停车位作为起点均可建立一张泊车路线图。
整个泊车流程说明如下:
**Step1:**智驾车辆驶入停车场内,通过车机系统激活泊车类型(按键/语音)为泊入;
Step2:车机系统需要显示记忆泊车功能界面,用户需要根据提示手动驾驶车辆前往目标车位;
**Step3:**到达目标车位附近后,用户可以直接拨入车位,并挂入P档。也可以在车机系统上点击确认识别到车位;
**Step4:**控制车辆泊入后,系统通过后台自动验图并保存对应所建立的地图数据;
**Step5:**建图成功后,如果驾驶员继续选择泊车召唤建图,则进入Step7泊出建图流程。否则,此次建图结束;
**Step6:**接收到驾驶员输入的建图类型为泊出请求时,驾驶员可以手动驾驶汽车前往泊出点;此时系统确认完驾驶员此次泊出过程结束时,系统后台生产并检验此地图数据。
这里需要注意的是,智能泊入和泊出需要分开建立不同的两张图,泊入和泊出地图会由一个属性相互关联。建图过程需满足建图距离、车速、以及建图算法匹配的要求。通常单程(泊入或泊出)建图距离不超过一定值(比如2km),建图过程中车机系统可以实时的显示建图距离,并适时的提醒驾驶员。此外,如果考虑建图的有效性和性能,通常也对驾驶速度有一定要求(一般小于20kph),如果长期超速超过一定的时间阈值,则提示驾驶员超速退出。并且,根据不同的车位信息可以触发建立不同的地图,这样的地图数量实际上是有一定的要求的。比如最多可以存储10张地图用于标识10个车位信息。