新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > 装备无线自动跟踪摄像头的警用车辆支持系统

装备无线自动跟踪摄像头的警用车辆支持系统

作者:Joo Sunwoong、Suh Hoseong、Moon Youngje时间:2008-04-15来源:电子产品世界

  设计介绍

本文引用地址:http://www.eepw.com.cn/article/81567.htm

  本项目有三个主要目标:首先,提高警用车辆上收集和解释数据的能力。其次,在警察大队与指挥中心之间实现实时的图像传送和信息共享。第三,通过使用 SoPC 的协调设计来考虑高性能和经济效率。

  现有的警察大队跟踪系统的是固定在车辆上,因此会出现在屏幕上丢失嫌疑车辆的问题。本项目提供了一种自动跟踪解决方案,可以将嫌疑车辆始终锁定在屏幕上。为了实现这一目标,我们实施了可以减轻光效应的自动化临界值计算方法。

  我们制造了使用步进马达的云台(Pan-Tilt Camera),这种可以左右上下移动。为了实现马达的快速响应,我们还设计了 步进马达控制器。 步进马达控制器的响应时间比软件控制器的响应时间短,因此,即使嫌疑车辆在快速移动,它也可以帮助摄像头将焦点一直放在嫌疑车辆上。

  我们设计了自动系统,该系统可以与跟踪摄像头同步运行。我们针对 MPEG 音频播放实施了使用 Nios 自定义指令的硬件加速技术。因此,不需要为 MPEG 音频解码提供额外的解码芯片。我们为在 DE2 主板上运行的 WM8731DAC 开发了 音频驱动程序

  我们还设计了 合成式 OBD- II 接口,用于获取车辆速度之类的信息,以及从车辆控制系统 ECU 获取故障状态。OBD- II 接口可以测量相对速度,并可监控车辆状态,因此它可以代替高成本的激光测量仪器。我们通过 libjpeg 和 Altera 的编译器设计了 JPEG 压缩模块,用于进行图像存储和无线传输。

  对于 Linux 系统上常用的 libjpeg,我们进行了加速。利用 libjpeg 可以不必修改代码就让应用程序提高压缩性能。此项目的另一个主要特色是快速的全球无线 HSDPA 协作。收集到的实时数据和图像信息可以从警察大队传送到指挥管制中心。

  车内 FPGA 的适用性

  警察大队的支持系统是一个复杂的领域,需要对图像、语音、通信和传感器数据进行处理。车辆的系统复杂性越来越强,因为所加载设备的数量也在逐渐增加。在 OBD 接口中,由于协议不同,不同的车辆必须使用不同的系统。FPGA 适合于这个领域,因为它拥有易用的重组功能和合成功能。

  我们在 Quarters 和 Nios IDE 7.0 环境中开发了 SoPC 系统。操作系统和应用程序是使用 GUN 工具实施的。使用 SoPC 可以方便地配置系统, 和 GUN 工具链可以提供相似的环境。

  警用车辆中的需求

  根据追踪制度,追踪车辆时必须在进行追踪时打开警报和记录设备,并且同时还要向命令控制中心报告。同时做几件事情并不容易,因此需要采用自动化的综合解决方案。我们的项目可以提供解决这些问题的解决方案。

  图 1:设计概念

 
 
  功能描述

  本部分将描述我们的设计所能提供的功能。

  图 2:云台摄像头模块


 
  自动跟踪摄像头

  要将目标车辆始终锁定在屏幕中央,我们制造了一种可以垂直和水平移动的摄像头模块。云台摄像头模块的关键部分是响应时间。响应时间越短,目标车辆的丢失率就越低。

  因此,我们选择了硬件控制的方法,而不是软件控制的方法。步进马达控制器是采用 Verilog HDL 开发的。图像处理模块发出的云台运动命令会直接传送到 FPGA 上的步进马达控制器。步进马达控制器随即接收到这些命令,并生成操作信号脉冲。最后,控制器向每个马达发送合适移动距离的信号。

  要进入跟踪模式,需要将摄像头对准目标车辆,然后按下 DE2 上的按钮。随后,图像处理模块将提取目标车辆的平均色彩特征,并估计目标车辆的位置。只要车辆一移动,云台摄像头就会跟踪车辆。

  捕获的 640x400 图像保存在 USB 存储中,并同时传送给指挥管制中心。自动跟踪摄像头都经过实际测试,大多数情况下的工作效果都很好。由于跟踪算法的根据是色彩的差异,因此我们的跟踪机制在夜晚时无效,在某些色彩上的识别能力较弱。

  图 3:道路实际跟踪测试

 
 
  图 4:车内嵌入式系统的配置


 
  自动

  自动跟踪摄像头启动跟踪模式时,就会运行自动系统。这可以为车中的警察带来便利。MPEG 音频数据是通过 Nios II 处理器的自定义指令播放的,无需任何额外的处理器。Nios II 处理器在 DE2 上以 100 MHz 的速度运行。

  单片机可以播放 128Kbps 44.1KHz 的 MP3 单声道音频,无需加速。但是,该处理器还是需要减少其负载以便进行多任务处理。因此,我们增加了一个 64 位倍增器,它可以将播放的能力提高大约 2.5 倍。

  图 5:图像的捕获、处理和传输示意图


 
  图像捕获模块

  摄像头的模拟图像信息会在 DE2 的单片机上转化成 ITU656 标准的数字流。这种数字流有三种不同的用途:首先,用于控制自动跟踪摄像头的上下左右移动操作。其次,用于版本共享系统以及无线传送的 JPEG 压缩。最后,用于车内显示。该图像捕获模块可以在预处理时修改图像大小、移除隔行扫描模式以及计算帧缓冲区内存地址。

  图 6:在实验室中进行的跟踪算法测试


 
  图像处理模块

  摄像头的自动跟踪功能需要用到移动跟踪算法。我们开发了经过调整的色彩跟踪算法,可以很方便地应用于 FPGA。这种算法可以根据方向计算不断变化的车辆色彩的平均值,并生成新的二进制临界值。

  这种算法的设计目的是处理与 FPGA 电路中的显示输入模块合成的线路单元,而无需进行软件处理。其结果是不再需要外部帧缓冲区内存。这种方法的主要优势就是提高性能。它可以每隔 1/30 秒就向马达控制器传送控制命令。

  图 7:JPEG 压缩示意图


 
  加速的 JPEG 压缩

  按 JPEG 标准进行的图像压缩大小为 640x400。libjpeg 的前向式 DCT 函数被加速器取代;该加速器使用编译器开发而成,可以在 uClinux 环境中进行访问。将 C2H 加速器与 uClinux 结合起来非常重要,因为它要与其它任务同时运行。对 libjpeg(标准库)进行加速使我们可以无需增加额外的 DSP 芯片或任何常见的软件就能获得性能的提升。使用 libjpeg 的应用程序可以通过重新编译提高压缩性能,而不必修改任何代码。
 
  图 8:DE2 扩展设备和 接口


 
  自定义的 接口

  车辆都有一个用于进行系统管理的发动机控制单元(ECU)。警用车辆上也有这样的设备。对于新近制造的车辆来说,ECU 是一个非常重要的组件,它的作用是将发动机与各种电子控制部件结合起来。是一个接口,可以将计算机或诊断工具连接到 ECU 以便进行车辆维护,它可以实现设备间的通信。

  OBD 标准有很多种,具体取决于车辆的制造商。我们的项目所采用的是 ISO9141-2 国际标准。通过 OBD- II,我们可以了解车辆的行驶速度、燃油状态和车辆的故障情况。它的初始化过程为 5 波特,通信速度为 10.4k 波特。对于接收到的信息部分字节,必须进行补充并将其发送到 ECU 进行通信。在 SoPC 平台上使用的是 UART 组件,因为它与串行通信类似。

  图 9:捕获图像和 OBD-II 信息屏幕

 
 
  性能参数

  本部分将描述我们的设计所能提供的性能参数。

  表 1 列出了在图像处理模块上发送控制信号,到步进马达上接收初始操作信号之间的时间间隔。该时间间隔是通过示波器测量得出的。通过 GPIO 接口启动步进马达后,在软件程序控制器中,Nios 处理器会接收中断信号,并生成操作信号。

  表 1:步进马达脉冲生成方法比较

 

  汽车跟踪摄像头的速度主要取决于图像处理性能。下面的表 2 显示了基于不同平台的每种跟踪算法的测试帧速率。实际上,DE2 的帧速率接近 60 帧/秒,因为图像处理模块以隔行扫描模式运行;但是,我们根据有效帧的数量将其标记为 29 帧/秒。

  表 2:跟踪算法的性能比较


 
  另一个结果是,C2H 加速的 libjpeg 的 DCT 函数可以实现 JPEG 的快速压缩。640x400 的 24 位位图经过了 20 倍强压缩以实现精确的测量。使用 C2H 编译所显示出来的性能比这种没有加速器设计的性能要差。要解决此问题,我们更改了缓冲区管理方法。在修改了 DCT 函数后,性能提升了四倍。

  表 3:JPEG 压缩算法的性能比较


 
  表 4:uClinux 上的 USB HSDPA 调制解调器性能测试
 


  我们在设计该系统时,考虑了在 uClinux 系统上使用 USB 调制解调器时的性能下降问题。然而,事实显示,网络性能与在 PC 环境中运行的性能几乎相同。

  设计的体系结构

  本部分描述我们系统的设计架构。

  图 10:系统的体系结构


 
  整个系统由 uClinux 操作系统控制。包括图像处理模块在内的摄像头控制系统和子系统由完整的 FPGA 组成。我们设计的自定义 SoPC 组件将随我们项目的进展被刷成深灰色。

 
  图 11:SoPC 配置


 
  标准 JPEG 库 libjpeg 的 DCT 函数被更改为 C2H 加速器。图像处理模块、VGA 控制器和步进马达控制器被组合成一个单独的 SoPC 组件。总共消耗了 31000 LE。

  图 12:Quartus II 7.0 编译报告


 
  图 13:系统顶层实体


 
  图 14:芯片配置和车内配置


 
  设计描述

  本部分将描述我们设计的实施方法和步骤。

  组合 uClinux 和 C2H

  使用操作系统可以灵活地在复杂的多设备环境系统中进行开发。uClinux 内核是适合于非 MMU 处理器的操作系统内核。由于 uClinux 系统中没有内存管理单元,因此可以极大地简化基于 Nios 处理器对定制的硬件加速器进行访问的应用程序的使用。

  在 Nios IDE 环境中编写的代码经过很少的更改或无需更改即可在 uClinux 下的多任务环境中运行,因为在 uClinux 中对内存映射地址的写操作没有限制。

  我们可以通过常用的技术在 uClinux 上使用 C2H 加速器。在本部分,我们将详细介绍将 C2H 加速器从 Nios IDE 移到 uClinux 上所需的步骤。

  第一步是生成一个临时项目。然后,在 Nios IDE 中编译并生成加速器。现在,我们可以在 Debug 目录中看到加速器的打包函数。将这些头文件(Header file)和打包函数复制到 uClinux 开发目录中。如果您尚未对 FPGA 编程,则进行该项编程。

  下一步是使用 Nios 的 gcc 工具和 elf2flt 选项编译经过加速的应用程序。确保必需的头文件(如 system.h 或 io.h)存在。在完成此步骤后,将生成的执行文件复制到单片机上。在大多数情况下,它的速度会比仅使用软件的系统要快。

  可惜的是,我们在将 libjpeg DCT 函数转换成加速器时面临着性能方面的问题。我们将在接下来的部分介绍针对性能问题的解决方案。

  图 15:将 C2H 加速器打包函数从 Nios IDE 移到 uClinux 上


 
  图 16:经过优化的 DCT 函数示意图


 
  优化 C2H 编译器的 JPEG 库

  一般情况下,开发人员会考虑使用 DSP 进行 JPEG 压缩,但 DSP 需要有自己的软件程序来提供支持。选择可以加速 libjpeg 的 C2H 编译器是一个正确的决定,因为许多现有应用程序都使用作为 JPEG 标准库的 libjpeg。

  但是,在使用 C2H 编译器转换原始的 DCT 函数时,它所显示的性能比仅使用软件的设计的性能低。从结构上来说,对数据高速缓存的刷新是一个问题,它的数据处理工作是以 64 个字节为单位进行的。我们设计了适合于 C2H 编译器的经过优化的缓冲区管理系统。这个管理器实现了 4 倍的性能提升。

  创建自定义的 SoPC 组件

  每个部件都由 VerilogHDL 单独设计,并作为一个组件添加到 SoPC 中。图像处理模块、VGA 控制器和步进马达控制器被组合成一个单独的 SoPC 组件,因为这些部件相互之间都有密切的关联。这些组件作为 Avalon Master 的组件在 SRAM 上写入图像数据。

  图 17:自定义的 SoPC 组件 


 
  图 18:使用 64 位乘法器的自定义指令

 

  使用自定义指令对 MPEG 音频进行解码

  在使用 Nios II 处理器和 uClinux 的环境中播放 MPEG 音频存在三个主要问题:处理器性能、FIFO(先进先出)的大小以及在 uClinux 中用于输出的设备驱动程序。

  我们发现,100 MHz Nios II 处理器在 Cyclone II 芯片上对立体声 128Kbps 44.1KHz MP3 音频进行解码时会有性能损失。如果 FIFO 足够大,则可以在该系统中播放单声道音频,但 CPU 会一直分配用于播放音频的性能。

  我们在 Nios 处理器上添加了使用自定义指令的 64 位乘法器以实现 64 位乘法计算;这种运算方法在 Libmad 库中经常用到。播放的性能提升了大约 2.5 倍,用于计算的时钟使用率有所降低。

  还有其它一些原因使音频播放质量不佳。首先是采样率不好。其次是缓冲区大小不足。最后是多任务处理环境。图 19 的配置可以解决这个问题,音频将参考使用 17 MHz 的时钟。

 
  图 19:44.1 KHz MPEG 音频的 DAC FIFO 设置


  
  设计的功能

  本部分将描述我们的设计所能提供的重要功能。

  这个系统最吸引人的指标是其集成性。一个 FPGA 芯片可以处理整个工作,如图像处理、压缩、传送、MPEG 音频解码、步进马达控制和 OBD 通信等。每个组件都作为一个 SoPC 组件添加,因此很容易在不同的项目中重复利用组件。

  我们设计了设备驱动程序,因此所有系统都可以在 uClinux 环境中运行。我们开发了访问方法,这些方法可将 uClinux 应用程序与基于自定义指令和 C2H 技术的加速器关联起来。软件和硬件都实现了统一。

  图像处理的主要功能是使内存访问量达到最小。帧缓冲区内存仅用于 JPEG 压缩,因为图像处理是由线路单元实现的。因此,我们最终可以极大地节约 Avalon 总线的带宽。

  表 5:重要功能和相关模块


 
  结论

  我们开发并测试了代表着远程信息处理技术领域之一的警察大队支持系统。我们开发了自动跟踪摄像头;该摄像头可以追踪常见的车辆,并将其一直锁定在屏幕中央。我们设计了基于 FPGA 技术的 OBD 接口,用于了解车辆的状态信息。我们开发了可以通过全球无线 HSDPA 模块远程验证车辆图像和状态信息的远程系统。

  在启动此项目之前,我们在固定的硬件平台上和资源有限的环境中进行了设计。FPGA 是一项令人惊奇的技术,它可以轻松地更改设计的配置。即使存在软件无法解决的性能问题和困难,我们也可以通过修改硬件设计来获得简单而有效的设计方法。特别是,FPGA 的优势是图像处理领域最受欢迎的。

  我们使用了 ALERA 的 C2H 技术进行 JPEG 压缩。通过测试当前使用最为广泛的经过加速的 libjpeg 的 DCT 函数,高性能得到了验证。我们认为,可以将 C 程序转换成 HDL 的 C2H 技术是改变软件范例的一个重要推动因素。我们通过利用 C2H 技术对 libjpeg 的 DCT 函数进行加速来获得高性能。C2H 还有一些需要解决的问题,但我们预期它会对软件到硬件转换技术的发展作出贡献。

摄像头相关文章:摄像头原理


评论

技术专区

关闭