当前位置:首页 > 色彩追踪小车 - 图文
基于颜色识别的色彩追踪小车
颜色识别系统在现代控制系统中发挥着重要的作用,无论是材料,工业自动化,遥感技术,图像处理,产品质量检测,还是一些模糊检测技术,都需要对颜色进行探测识别。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像素彻底去除,从而实现红色物体的识别。
共分享92篇相关文档