之所以说比亚迪云辇和奔驰魔毯是真正的主动悬挂是因为它们都配备了立体双目系统,可以探知前方道路的高度变化,提前让悬挂系统做出调整。而没有配备立体双目系统的主动悬挂实际上是被动调整的,是在检测到道路高度变化后才做出调整的。立体双目的高度测量精度极高,奔驰的可以达到3毫米的精度。
图片来源:奔驰
奔驰魔毯是奔驰在2013年推出的,距今整整10年,实际奔驰早在1998年就开始了相关研究,研究周期长达15年。
图片来源:奔驰
奔驰称之为Magic Body Control,关键在于立体双目的道路扫描系统(RSS)。详细描述见于2013年奔驰公司论文Structural system of the Road Surface Scan (Weist, Missel et al. 2013)。
魔毯的工作流程分四步:
第一步,左右摄像头信息收集,计算出视差图;第二步,根据视差图得到数字高程图即DEM;第三步,车轮轨迹预测与数字高程图配合得出车轮即将经过的路面高度变化程度;第四步,根据高度变化提前让悬挂系统做出对应调整。
立体双目道路扫描主动悬挂流程
图片来源:奔驰, Structural system of the Road Surface Scan (Weist, Missel et al. 2013),下同
图片来源:奔驰
奔驰魔毯示意图,这套系统在2013年奔驰S级上第一次使用,当时的嵌入式计算系统算力(不是AI算力,是标量和向量的算力)不高,因此有效距离约为15米,如今可以提升10倍,达到150米。2013年帧率为每秒15帧,如今可以到每秒30帧。
魔毯系统的门槛极高,全部都是手工算法,没有任何机器学习相关算法,没有任何开源资料辅助。
图片来源:奔驰
第一步,先对双目图像进行立体匹配。首先根据图像空间(u,v)及视差 d,构建完备的视差代价空间Cm(u,v,d)。并采取了半全局立体匹配算法SGM。这种方法基于局部最优的视差求取方法上,通过动态规划来提高计算结果平滑性,最终得到像素映射关系产生的视差图。
第二步,首先要估算出地面,左右图计算视差d=xl-xr=fb/z所得图像。其中,xl,xr分别表示对应点在左右两图在全局坐标系(X,Y,Z)中横坐标位置。f为相机焦距,b为双目相机基线距离,z为点到相机成像平面距离。同时假定全局坐标系中地面Z=pY+q。根据相机标定原理,代入坐标公式,可以得到视差d=mV+n。其中m,n都可以通过已知参数进行计算,即全局坐标系中地面可以映射成视差空间中的直线。之后可以通过Hough变换检测直线确定地面。
图片来源:奔驰
检测到地面后,用栅格法确定自由空间。图a是亮度编码的网格图,b为减去背景的栅格图,c就是利用动态规划(DP)获得笛卡尔坐标系自由空间栅格图。
图片来源:奔驰
上图为高度分割级化流程图,为了满足stixel本身的定义,一根棒状像素,可以视作为同一个元素,也就是说这个棒状像素拥有一致的视差值。这就需要在之前已经得到的地面的基础上对地面之上的像素值进行重新定义与规划。核心步骤就是对像素隶属度(Membership)和代价函数的计算。
假定隶属函数Mu,v(d),当Mu,v(d)为正时表示物体,Mu,v(d) 为负时表示背景,定义函数如下
式中,
对应于三维空间内坐标(xu,zu)。再用代价函数运算求边缘值。
当为边缘点时,
取极值。最后再用动态规划对代价图像进行计算出最佳高度分割值。
式中,Cs表示比例因子,max()表示在深度不连续情况下的平滑度影响,
表示在不同列中的深度差,NZ则为设定的深度参数。
奔驰是采用STIXEL来提高效率,如今算力提高,可以直接用比较简单的RANSAC来执行,RANSAC是平面拟合常用算法之一,经常用来配合激光雷达和立体双目来生成高程图,RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。该算法最早由Fischler和Bolles于1981年提出。简单地说就是随机挑选3个点,并计算3点形成的采样平面、根据采样平面计算所有点到平面的距离,并根据参数(距离的阈值)将点分为内点和外点,统计内点、外点数量,更新最大迭代次数,重复以上过程直到达到停止条件(最大迭代次数,内点比例等)。RANSAC在测绘领域应用广泛。
生成高程图也可以看做是道路的3D重建。
路沿的3D重建。图片来源:奔驰
接下来根据车轮间距、立体双目摄像头基线做标定,预测车轮行驶轨迹。
根据车轮轨迹再加上3D道路重建预测出车轮高度变化的幅度。图片来源:奔驰
最后是车辆悬挂系统的调整。图片来源:奔驰
车辆悬挂系统调整。图片来源:奔驰
理论上激光雷达比立体双目更适合做这种主动悬挂,毕竟激光雷达最早就是用来生成数字高程图的,但却没人用激光雷达这么做,原因有几点,一是生成数字高程图是测绘用激光雷达完成的,精度极高,价格也极高,与智能驾驶用的激光雷达差别比较大。二是全手工算法,研发周期长,出成果很慢,没人愿意做。激光雷达目前一门心思在玩机器学习,完全不理会手工算法,人类对点云的处理没有合适的方法,基本还是沿用摄像头深度学习那一套,Z轴的信息几乎丢完了,这就导致纯视觉系统某些情况下比视觉加激光雷达融合效果还要好不少,这也是特斯拉不用激光雷达的原因。
立体双目强调手工可解释算法,与目前的人工智能大潮相违背,虽然立体双目有许多压倒性的优点,比如无需识别也可以检测目标,大大提高安全性,完胜任何人工智能的智能驾驶系统,但仍然无法避免被边缘化小众化,只有奔驰、丰田、博世还在坚持,人类是好逸恶劳的,没有人想费力研究手工算法,人工智能只要数据集,一切都变得轻松无比,无需追求其中原理,人人皆可用。
相关文章