鸟瞰自动驾驶
通过John Pineros
机械工程师| Quanser
自主移动机器人技术的一种常见应用是行车追踪的概念,对于自动驾驶汽车,它已扩展为自主车道追踪的概念。该应用程序可以成为开发完全自动模拟交通流的驾驶示例的起点。
回归本源
但是,在获得车辆的完全自主权之前,重要的是要退后一步,并从基础开始。在这种情况下,您需要弄清楚如何将汽车保持在车道内并跟随它。
作为Quanser机械团队的一部分,我有机会尝试一些可帮助研究人员进行探索的领先技术。Quanser的快速原型开发软件QUARC是允许我与硬件进行连接和进行实验的主要工具。在过去的几个月中,我还有机会对QCar平台进行了一系列不同领域的试验,例如计算机视觉,传感器融合,姿势定位和环境映射。
QUARC也是我要谈的QCar车道保持示例的核心。我的同事Murtaza Bohra已经在应用后解释了以QUARC为中心的车道实施背后的思考过程。我强烈建议您阅读他的文章《Reading Between the Lines》,以了解更多详细信息。我的目标是利用MATLAB附加工具箱,开发出更加稳定的车道保持算法。
入门
开发实现的第一步是确定要修改同事应用程序的哪一部分。我决定将重点放在应用程序的计算机视觉部分,因为这使我能够更改QCar标题的修改方式,同时保持其余功能(例如速度控制器)完全相同。
接下来,我开始研究用于解释图像信息的替代方法。在这里,我遇到了被称为“图像透视图”和“鸟瞰图”的概念,该概念通常在自动驾驶应用中使用。有了这些信息,我就准备好了并且可以工作了。我将通过实现前置摄像头的鸟瞰图表示并使用它跟踪车道中心来修改图像处理堆栈。由于QCar提供了广泛的传感器,特别是视觉传感器,因此我必须决定在鸟瞰转换中使用哪种传感器。QCar配备了前置172度FOV CSI摄像机,能够以高刷新率查看图像。对于我的应用程序,我使用了820×616分辨率和80Hz的刷新率。
为了能够修改图像的透视图,我需要能够定义一些描述我的相机的关键参数。一种常见的方法是使用针孔摄影机模型来描述摄影机的固有特征。这些包括焦点,主点以及由于相机镜头而可能出现的任何类型的径向或切向变形。在这里使用MathWork的计算机视觉工具箱变得有用。通过使用一个棋盘格(每个正方形的长度已知)和一组参考图像,我可以使用相机校准器工具来估计定义相机针孔模型的参数。这些信息不仅适用于我的后续应用程序。通过使CSI摄像机参数处于我选择的分辨率,我可以将此信息用于其他应用程序,例如基于视觉的测距法。
放在一起
下一步是变换我的输入图像,即未经任何失真校正的原始图像,并生成鸟瞰图。幸运的是,MathWorks的“自动驾驶工具箱”可以将给定CSI摄像机的摄像机模型参数的输入图像转换为鸟瞰图。
我其余的实现包括使用QUARC图像比较模块集来选择存在车道的区域,并使用高通滤波器来提取车道的位置。最后,使用线性polyfit函数对车道进行特征化,但关注的值是其坡度,因为这可以让我们知道坡度朝哪个方向行驶。为了在QCar行驶时将车道的中心保持在QCar的期望位置,PD控制器为车道中心和图像中心之间的任何偏移实现校正。
整个过程中令人难以置信的部分是整个图像处理和车道解释堆栈以及其他控制算法(例如速度控制器)都是实时计算的。如果我想调整用于车道保持控制器或所需速度的参数,可以快速进行更改,而不必更改当前在QCar上运行的代码。对于专注于算法实现和验证的研究人员而言,QCar提供了一个非常灵活的平台,可以与诸如自动驾驶工具箱之类的行业标准软件包进行接口。
你要去哪?…
希望通过描述以我的QUARC-MathWorks为中心的示例进行应用程序开发的过程,您可以了解如何轻松扩展研究范围。如果您对我们的产品有任何疑问,我们随时欢迎您与我们联系。我们期待看到您使用我们的开放式体系结构解决方案进行惊人研究!
原文链接:https://www.quanser.com/blog/autonomous-driving-from-birds-eye-view/