当前位置:首页 >> 计算机硬件及网络 >>

色彩追踪小车_图文

基于颜色识别的色彩追踪小车
颜色识别系统在现代控制系统中发挥着重要的作用,无论是材料,工业自动 化,遥感技术,图像处理,产品质量检测,还是一些模糊检测技术,都需要对颜 色进行探测识别。Labview 软件平台提供了强大的图像识别功能,通过编程可以 对摄像头传回的图像数据进行采集与处理,从而实现相应的控制。本文基于 LabVIEW 中的 vision 视觉组件,通过对摄像头传回的图像数据进行处理,通过调 节阀值识别出不同的颜色并计算出该颜色物体的 X,Y 轴物理坐标值。通过这些参 数对下位机 NI myRIO 控制的小车发送指令,实现小车的运动功能。配合对舵机 的编程控制, 使得摄像头实时跟随所追踪颜色的物体转动,从而实现更好的追踪 效果。

【需要的软件】 :LabVIEW、LabVIEWmyRIO 组件、LabVIEWvision 组件、 LabVIEWreal-time 组件、LabVIEW FPGA 组件。

【需要的硬件】 :智能小车基本组件、NI myRIO、L293D 电机驱动模块、罗技 270 摄像头一个。

制作过程
1. 智能小车组件的安装,过程略。 2. 连接 myRIO

正确安装 NI myRIO,并与 PC 相连,再弹出 Launch Wizard 窗口后,按步骤继 续。注意:要确保 NI myRIO 中软件的语言与 PC 中 LabVIEW 软件中支持的语言一 致,当主机安装的是中文版本的 LabVIEW 软件时,必须在 myRIO 中安装一个 Language Support for simplified Chinese。此外,虽然我们是通过 USB 线将 myRIO 连接到主机上,但是实际中是把 USB 端口虚拟成一个网口,所以会看到一个通 过网络连接的设备,它也是有一个 IP 地址的。

因此,在连接 myRIO 的时候要将 myRIO 的 IP 地址设置为与 USB 的虚拟网口 一致,才能正确连接 PC 端。
3. 新建 myRIO 工程

打开 LabVIEW 2014,选择 LabVIEW myRIO 模式,新建 myRIO project,配置路 径及文件名后,选择 USB 连接,单击“完成”。至此,准备工作全部完成。
4. 主程序中采用顺序结构进行编程, 顺序结构分为 Initialize、 Acquire and Process

Data 和 Close 三部分组成。
5. Initialize

在 Initialize 帧中分别对摄像头、舵机、LED 指示灯以及色彩范围进行了初始 化。在 LabVIEW 中,采用 NI IMAQ 函数进行编程,对摄像头进行初始化。

其中, 属性节点需要手动进行配置, 右击属性节点, 在类型处选择“IMAQdx”。 在下面的属性中选择“Acquisition Attributes”中的“Video Mode”确认视频采集,在 组件的右边创建常量 9。

对舵机进行初始化,使初始舵机位置位于正前方,初始化函数如下。

将舵机初始化函数封装成子 VI

,在条件选择端输入“Center”,即可完成

舵机初始化。 对于所最终的色彩与其对应的阀值,在初始化中创建了一个色彩与 阀值的簇常量。

其中 125 与 160 为色彩阀值的初始化, 5 对应图像浊化值初始化, 2000 对应 物体大小,red 为初始追踪颜色。 完整的初始化程序如下所示。

6. Acquire and Process Data

在 Acquire and Process Data 环节中由一个 while 循环构成主函数,与前面板 进行色彩与颜色阀值交互, 并对传回的图像数据进行采集与处理,并根据所得到 的数据通过 myRIO 发出电机驱动信号,驱动小车进行色彩追踪。将色彩初始化 的簇常量与前面板的交互输入相连, 在前面板即可通过输入改变颜色与色彩阀值。

前面板交互界面为

将摄像头采集的图像数据以及初始化的图像数据传入 colour_detection 子 VI 中进行处理。由于图像传入计算机之中后,所

有的颜色都可以由三原色红色(R)、绿色(G)和蓝色(B)表示。因此,可以通 过调用 IMAG ExtractSingleColorPlane 函数将 3 原色之一的图像数据提取出 来。

在程序中先进行了两次颜色的提取,一个是追踪目标红色 Red,另一 个为绿色 Green 或蓝色 Blue 中任意一个, 程序中选择的是 Green。 这样蓝 色 Blue 已经被去除了。

再采用 IMAQ LogDiff 函数, 将残留在红色 Red 像素中的绿色 Green 像 素彻底去除,从而实现红色物体的识别。

将识别得到的红色物体图像经过灰度与浊化处理成二值图像后, 送入 IMAQ Particle Analysis 函数中,检测物体的中心 X,Y 值已经图像范围。

若物体的范围大于设定值,即所追踪的红色物体还在摄像头的视野范 围内,则在根据前面返回的图像范围数值在图像上标记红色框。

完整的程序框图与前面板显示分别如下所示。

将得到的红色物体的中心坐标传送给 Drive_motor 子 VI,通过判断红色 物体的 X 坐标值在摄像头显示屏幕的左边、中间还是右边,判断应给小车发 送左转、 直行还是右转信号, 且当所追踪物体超过设定范围, 小车停止运动。 具体程序框图如下所示。

将判断得到的小车运动状态发送给后面的 Motor_Control 子 VI,通过 myRIO 发送 PWM 波驱动电机。除了驱动电机以外,通过判断物体 X 轴坐标 在屏幕的位置(将屏幕 5 等分,即将 X 与 0.2,0.4,0.6,0.8 做比较) ,驱动舵机 选择从而使摄像头始终追随所跟踪的物体。 由于物体 X 轴的坐标值存在波动, 因此在采集 X 坐标值后面添加均值滤波,减小波动,从而实现更好的效果。

具体程序框图如下图所示。

所以完整的 Acquire and Process Data 帧程序框图为

7. Close

在 Close 帧中就是完成一些收尾工作, 关闭摄像头, 将采集的图像数据删除, 重置 myRIO。程序框图如下。

8. 完整的主程序框图

将程序下载到 myRIO 中,就可以实现驱动小车追踪特定颜色物体的功能了。
9. 基于色彩追踪小车成品

技术文档作者 赵闻达、狄宗林 2016.4.25