EDN China > 设计实例 > 汽车电子 > 安全控制 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于FPGA平台构建汽车辅助驾驶系统算法

赛灵思公司 Daniele Bagni Roberto Ma?? 2009年04月08日 ?? 收藏0

  辅助驾驶系统开发面临的挑战

  汽车辅助驾驶(DA)系统工程师通常使用 PC 模型来创建复杂的处理算法,以便实现高度可靠的自适应巡航控制、车道偏离警告及行人检测等功能。开发人员高度重视PC算法模型,因为这种模型使他们能够尝试使用并快速评估不同的处理算法。不过,说到底,还是需要一款设计合理的电子硬件解决方案,来实现经济有效的大规模生产与部署。

  验证可部署目标硬件与软件算法模型之间的算法性能一致性,对许多开发人员来说都是个问题。从浮点转到定点计算(如三角函数采用的不同方法)有时会导致参考软件算法和硬件实施模型之间出现明显差异。另外,输入图案资料集群(input stimulus)有着很大的不确定性,这使验证算法性能一致性工作变得更加复杂。

  对通常依赖远程感应装置(摄像头、雷达等)输入的DA系统来说,输入信息就是驾驶员在实际行车中可能遇到的各种路况和环境条件。工程师会发现,设计一款充分满足所有情况需求的处理算法极具挑战性,而且验证软件模型与电子硬件实施之间的算法性能一致性至关重要。

  赛灵思推出的一款工具——System Generator for DSP,为算法开发人员和系统架构师从Simulink PC模型转向实时FPGA硬件实施技术提供了一种高效、直观的方法。这种具有高抽象层的设计工具在赛灵思和eVS工程师联合开展的设计项目中发挥了关键作用。该项目的目标就是利用System Generator for DSP推出一款适用于采用Xilinx FPGA的汽车车道偏离警告系统的图形处理算法,旨在提高整体性能,降低成本,并缩短开发时间。

  车道偏离警告模型

  车道偏离警告 (LDW) 系统的总体功能就是在车辆无意中偏离正在行驶的车道时提醒驾驶员。安装该系统的车辆前安放摄像头,可捕获到路况图形,以识别出车道边界标志。车道偏离警告系统持续跟踪车道标线以及车辆相对于车道标线的位置。如果车辆越过了车道标线,那么系统就会发出警告。

  汽车产业和学术界普遍采用 MATLAB和Simulink 作为算法和系统级设计工具。尤其是Simulink 具有高抽象层,而且提供图形化输入,因此能帮助汽车算法工程师轻松快速地开发出复杂的 DSP 算法。

  图1显示了 LDW 系统模型的顶层方框图,该模型就是用 Simulink 设计而成。标记为车道检测的绿色块包括图形预处理子系统,图2中将给出该子系统的各处理步骤。车道检测功能旨在提取出最有可能代表车道标线的路况图形。

LDW 系统模型的顶层方框图

图1 LDW顶层方框图

LDW预处理功能链

图2 LDW预处理功能链

  为了提高边缘设备噪声检测的性能,处理流程 (pipeline) 第一步为2-D 5×5高斯噪声抑制 (GNR);第二步为直方图拓宽 (HST),开发人员可用该技术增强图形对比度,尽可能利用整个灰度范围;第三步则为水平/垂直梯度 (HVG),可在本地强度大幅变化情况下增强像素。开发人员可通过计算图形的 2-D 5×5梯度,来执行HVG。

  System Generator工具概述

  System Generator for DSP设计工具运行于Simulink中。它采用赛灵思面向Simulink的DSP模块集,并将自动调用赛灵思CORE Generator工具生成高度优化的DSP构建块网表,能通过 Simulink 库浏览器访问赛灵思DSP模块集。库浏览器可从标准的MATLAB工具栏中启动。构建DSP系统可用的DSP构建块有90多个,此外还包括FIR滤波器、FET、FEC内核、嵌入式处理内核、存储器、算术块、逻辑块以及按位块(bit-wise block)等。每个块都实现了周期精确和位精确,可就延迟、面积与速度性能优化、I/O端口数、量子化以及取整等对其逐一进行配置。

  下面,不妨来仔细探讨如何在 System Generator for DSP中构建图形处理算法模型,为了简单起见,这里选择GNR为例,这也是图形预处理流程的第一个模块。

  System Generator实施GNR功能

  强度值(即噪声)的随机变化通常会损坏图像质量。这种变化表现为高斯或正态分布,在不同传感器(即 CMOS 摄像头)中较为常见。线性平滑滤波器是消除高斯噪声的最佳方法,在许多情况下,它还可消除其他类型的噪声。为实现该功能,可通过使用连续窗口中的像素加权和来实施线性有限脉冲响应 (FIR) 滤波器。

  在开始实施GNR System Generator模块之前,我们已在 MATLAB 中实现了其行为模型。而这只需两行代码即可实现。首先,需要计算内核,具体描述掩模尺寸(本例设为 5×5)和高斯的∑值。然后,可以通过卷积过滤输入图像。

n_mask = fspecial('gaussian', 5, 0.8);

out_img = conv2(in_img, n_mask, 'same');


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA? 汽车辅助驾驶? 赛灵思? LDW?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈