使用计算机视觉制作停车助手,让您可以始终如一地将汽车完美对齐地停放在车库中。
间接传感
在传感器领域,为了简化和降低传感成本,进行间接测量是很常见的。例如,为了检测人的存在以发出警报,超声波或热传感设备用于检测运动。然而,人类不是这样工作的。虽然我们可能可以使用声音来检测周围是否有人,但视觉是我们确定周围事物的最佳方式。一般来说,视觉可能是我们最有价值和最有能力的感觉,它使我们能够理解世界。
通过计算机视觉感知
最近,计算机视觉取得了很大进展。与机器学习相结合的新算法使我们能够从视频捕获中确定大量信息。然而,这些解决方案的成本远远高于其他类型的传感,因此其用途仅限于监控和工业应用。成本主要来自捕获和分析视频所需的强大计算机。
廉价的计算机视觉 (CV) 传感器可能会成为传感技术的一项突破,原因有很多:
它可以做得比间接传感器更智能。例如,在占用传感器中,当占用者不移动时,间接传感器会失效。即使没有移动,真正的计算机视觉占用传感器也可以检测占用情况。
只需一个视觉传感器就可以检测到许多不同的事物。例如,同一设备可用于检测位置、占用情况(即使现在很多人都在一个房间里)、火情、光照水平、设备状态(灯是否亮着?电视是否开着?)、手势控制,你的名字。如果您可以用自己的眼睛看到它,那么计算机视觉传感器也可以检测到它。
一旦开始使用,价格就会自行降低。基本上,这是大规模生产的结果。如果不生产占用传感器、火灾传感器、位置传感器,甚至墙壁开关,用基于摄像头的手势检测代替,一切都只用一个 CV 传感器完成,那么价格将比现在间接感应的价格降低得多。
基于摄像头的停车助手
由于上述原因,我想使用 FRDM-K82F 创建某种基于计算机视觉的传感器。虽然我想到了很多想法,但只有一个是实用的、有用的,并且可以在比赛截止日期前完成。
将汽车始终停在车库内的同一位置是非常困难的。您最终会在侧面过多,或者在前面或后面没有留下足够的空间。或者,也许你非常小心,但你的另一半却不是,如果你像我一样,那会让你发疯。目前有解决方案,从低技术到“伪高科技”。这些是其中的一些:
我的想法是创建对用户更友好的完全不同的东西。这个想法是使用计算机视觉制作一个系统,可以始终指导您正确停车。比现有解决方案更类似于此:
如何运作?
使用视频图像中的运动检测,系统应该能够指示车辆是否需要左移、右移或停止。
对用户的指示必须来自一个非常简单的基于灯光的界面,如下所示:
左右箭头将指示汽车是否必须向左或向右转向。中间的灯会显示三种颜色,绿色表示前进,黄色表示谨慎前进,红色表示停止。
为什么选择带有 FlexIO 的 FRDM-K82F?
像 UV7670 这样的相机之前已经连接到其他类型的微处理器。然而,在大多数这些实现中,微处理器积极参与从图像中捕获数据。这需要微处理器的大量处理能力。一旦图像被获取并在 RAM 中,真正的工作就从图像处理功能开始。
Kinetis FlexIO 允许从 UV7670 传感器中检索图像,几乎无需微处理器进行处理。一旦图像被完全捕获,中断指示图像已准备好并在内存中。在处理图像时,将同时捕获下一张图像。
这使得 FRDM-K82F 成为该项目目标的理想平台:一个非常低成本的图像处理平台。
为什么选择 OV7670 摄像头模块?
OV7670 是一款 300Kpixels 相机。分辨率对于这个应用程序来说并不那么重要,实际上在撰写本文时,程序以最低分辨率 (120x160) 使用它。OV7670 的关键是规模经济。因为它在小型项目中被大量使用,所以在包含镜头的分线板上组装相机的成本约为 10 美元。它还具有其他优点,例如没有红外滤光片,使其适合使用红外照明进行应用。
构建说明
摄像头组装:FRDM-K82F 平台的设计人员很高兴能包含一个用于 FlexIO 的连接器,其引脚与 OV7670 完全相同。可以将 OV7670 直接焊接到 FRDM-K82F 板上,但是,我将 0.1” 插座焊接到板上。这样我以后可以将其他相机或设备连接到 FlexIO 接口。
指示灯:这是项目中唯一需要一些人工来复制它的部分。指示灯是使用带控制器的 WS2812B RGB LED 制成的,并使用泡沫板进行安装。使用 WS2812B LED 的原因是因为它们提供了很大的灵活性(可以自定义颜色,并且可以连接任意数量的 LED),只需使用微控制器中的一个简单 GPIO。指示灯示意图如下:
LED 安装在双面原型穿孔板上,作为三个单独的板。三块板用扁平电缆连接。第一个板是唯一不同的,因为它包含上拉电阻。
如果有可用的 WS2812B 分线板,使用起来会更容易。
在泡沫板上切割灯的形状。小心不要完全切开。也就是说,将纸板背面留在一侧。剩余的纸板为 LED 提供了很好的扩散器。这样做两次,并使用锐器为内部边界着色,以避免光线扩散到创建的形状之外。LED 板安装在其中一块泡沫板上,并使用双面胶带将所有东西放在一个组件中。
灯总成数据线连接到Port C pin 12,即FRDM-K82F板子中的PTC12:
软件
至此,硬件准备就绪,是时候在软件中工作了。
首先安装 Kinetis Design Studio。就我而言,我将它安装在我的 MacBook Pro 上,虽然文档不能保证它会起作用,但它对我来说完美无缺。
要刷新 FRDM-K82F 板,到处都使用 JLink JTAG 适配器,但是,我使用了 OpenSDAv2.1 接口,或者最常见的 mbed 接口。将 OpenSDA 端口连接到 MAC 后,它将显示为 USB 驱动器,其中复制了 KDS 生成的 .bin 文件。
我这样做只有一个问题。在某些时候,由于某种无法解释的原因,配套的微处理器(实现 OpenSDA 接口的那个)不知何故被擦除了。它没有作为名为 mbed 的 USB 驱动器出现,而是显示为 BOOTLOADER。
只需将固件复制到 USB 驱动器中,几分钟后我就可以重新启动并运行。
我根据安装 Kinetis Design Studio 时复制到示例文件夹中的 dev_video_flexio_ov7670_lite 示例启动了我的软件。有一段时间,我计划完全删除代码的 USB 部分,但我没有这样做很好,因为它有助于调试应用程序。
通常在计算机视觉应用中,不是使用 RGB,而是使用黑白视频。但是,从 RGB 转换为基于强度的视频需要太多的处理器时间,我想为图像处理留下尽可能多的处理能力,所以我更改了演示程序,以便从 OV7670 传感器捕获的图像在 YUV422 中完成。YUV 422 格式再次使用每像素 16 位,一个字节用于强度,另一个字节用于颜色信息。
这很容易在 flexio_ov7670.h 文件中更改,只需更改以下行:
.outputFormat = (ov7670_output_format_config_t*)&OV7670_FORMAT_RGB565,
至
.outputFormat = (ov7670_output_format_config_t *)&OV7670_FORMAT_YUV422,
然而,正如预期的那样,这搞砸了通过 USB 发送的视频。我尝试了一段时间将东西的USB端更改为YUV422格式,但我没有成功,所以为了保持USB视频可用,我将Intensity转换为RGB图像,很多比将 RGB 转换为强度更简单。
在通过 USB 发送图像之前,我还在图像中添加了一些信息,以帮助调试应用程序。这是我的视频在带有调试信息的 PC 端的外观:
停车助手所需的软件在parkasst.c文件中,基本上需要用YUV422图像的缓冲区调用。所以这很容易迁移到其他平台。然而,要复制整个项目,只需在 FRDM-K82F 板中加载项目中包含的 .bin 文件并按照项目中的说明添加 LED。
总结
这不算是一个尽如人意的项目。但是,还是有一些今后可以进行拓展完善的功能。这些是完成该项目的下一个功能步骤:
使用蓝牙低功耗将图像上传到手机,这样用户就可以准确地配置停车限制
将停车区更改为三角形而不是正方形。它需要是一个三角形来考虑相机的视角
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 从零起步学电子 ([美] Larry D. Wolfgang)
来源:下载中心
- 《开关电源的原理与设计》 张占松,蔡宣三著
来源:下载中心
- ADC与DAC
来源:大学堂
- 电机学
来源:大学堂
- 电阻的串联、并联及混联电路介绍及作用
来源:电路图
- 基尔霍夫定律:支路、节点、回路和网孔
来源:电路图
推荐帖子 最新更新时间:2024-11-13 08:50
- Altium Designer 原理图和PCB多通道设计方法介绍
- 转载自: http://bbs.21ic.com/icview-141848-1-1.html by:pk.kong 曾经把不少ad6的资料整理想发出来,后来发现用ad6的朋友并不多,所以一直没有动手。 不过最近好几个朋友问ad6这个多通道设计的问题。特别是许mm,可是每次我都
- ginaPCB设计
- 设备低温测试
- 买的一款第三方手持终端设备(嵌入有我们自己开发的软件),规格书上写的工作温度为-20度至+55度,我们测试-20度下的老化情况:低温环境下带电放置2小时,功能正常,此时电量为98%;然后第二天发现设备电池电量只剩1%,还没操作就自动关机(此时已放置18小时);然后常温下放置半小
- xxhhzz测试/测量
- 做过SIM卡,智能卡,IC卡的来看看
- 有分析过IC卡协议的吗?我现在在做SIM卡的驱动,对于协议里面的东西不理解, 能跟我说下PTS的过程吗?还有TC1,guard time 的取值问题, 做过SIM卡,智能卡,IC卡的来看看 http://blog.eeworld.net/jennyvenus/archive/20
- cecilecheung嵌入式系统
- 请教关于wince IE问题
- 需要写一个IE浏览器 请问怎么能检测到当前网络状态(应该是IE的状态)是否连上或者断开, 通过检测无线网卡的方式经过实验发现不行,因为无线网卡的驱动好象也 不是时时检测 这个连接状态的,我把AP断开,无线网卡的信号还很强, 现在想通过 判断IE 是否能打开网页来判断,即:当正常打
- xianghongheWindowsCE
- 4*4键盘的问题
- 4*4键盘先编排好0-9十个数字,第一次按键盘时第一个数码管显示按键的读数.第2次按时第2个数码管显示第2次按键的值,第一个保持不变.于此类推,一直到第6次按键的第6位数码管. 用C语言写 这样的程序应该怎样想,给个思路就好.谢谢了.想了一晚了. 4*4键盘的问题 这个并不复杂
- 有理想的猫单片机
- 电偶分度表大全
- 这里面含有B、E、J、K、N、R、S、T等分度号的分度表。 电偶分度表大全 谢谢!
- huchuan987测试/测量
- 【得捷电子Follow me第2期】任务汇总
- 通过wifi与设备进行通信(Android)
- msp430的一个矩阵键盘 困惑
- msp430f149单片机串口C程序
- 夏普开发可自动控制消耗电流的模拟电路技术
- 问:MSP430ADC输入模拟最大电压问题
- 【GD32L233C-START评测】10. ADC读取芯片内部温度
- 关于CCS和TM4C123g的连接问题
- 频偏定义及测量方法
- FPGA控制DM9000A芯片收发数据
- PN532芯片
- 新手求教
- 模拟示波器图纸搬运
- 【Microchip WBZ451 Curiosity】-2- 开发环境搭建
- 2012 年 MSP430 超低功耗微处理器手册 (Rev. V)
- 主要的元器件清单出来了。大神们,出来猜猜题呗!!!
- 智能用电监控、保护系统创意进度帖+采样篇
- .NET Framework下开发的应用程序能在WinCE 的.NET Compact Framework下运行吗
- TMS320F240的框架程序是怎样的?
- 新能源汽车交流充电流程
- 推挽式功放
- 电平转换模块
- LT8616HFE 5V、3.3V、2.05MHz 降压转换器的典型应用电路
- LT3990HMSE-5 3.3V 同步降压转换器的典型应用
- TLE 4299 低压降固定稳压器的典型应用
- 使用具有内部基准的 TC7117 模数转换器的典型应用(200mV 满量程、3-RPS、VIN - 为单端输入连接到 GND)
- LTC3603IMSE 1.2V、2.5A 降压稳压器(750kHz、突发模式操作)的典型应用电路
- 使用 Analog Devices 的 LTC7851IUHH 的参考设计
- my_Megu Pad_v2
- SPC560PADPT144S,用于 SPC560P44L5 和 SPC560P50L5 SPC560 系列 512KB/1MB MCU 器件的子板/适配器板,采用 QFP144 封装