基于 LabVIEW 的色彩追踪小车的设计
摘要:LabVIEW 作为图形化编程软件,在编程方面具有方便易读的优势,MyRIO 是 NI 公司开
发的针对学生学习的集成模块,具有便携简单,功能丰富等特点,本文采用 LabVIEW 开发平
台,利用 Vision Assistant 等工具对 MyRIO 进行编程,实现小车对某颜色物体进行追踪的
功能。
关键词:LabVIEW
MyRIO
Vision
图像处理
舵机控制
一.研究背景与项目意义
LabVIEW 是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于 C 和 BASIC
开发环境,但是 LabVIEW 与其他计算机语言的显著区别是:其他计算机语言都是采用基于文
本的语言产生代码,而 LabVIEW 使用的是图形化编辑语言 G 编写程序,产生的程序是框图的
形式。 LabVIEW 软件是 NI 设计平台的核心,也是开发测量或控制系统的理想选择。 LabVIEW
开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学
家解决问题、提高生产力和不断创新。用户也可以十分方便地找到各种适用于测试测量领域
的 LabVIEW 工具包。这些工具包几乎覆盖了用户所需的所有功能,用户在这些工具包的基础
上再开发程序就容易多了。有时甚至于只需简单地调用几个工具包中的函数,就可以组成一
个完整的测试测量应用程序。
由于 LabVIEW 的模块化 特性,可通过添加 NI 和第三方的附加软件来满足顾客的项目需求。
例如:
信号处理、分析和连接:添加用于声音和振动测量、机器视觉、RF 通信、瞬时与短时
信号分析等的专用图像和信号处理函数。 包括 LabVIEW 视觉应用开发模块,声音和振动测
量套件,声音与振动工具包,NI LabVIEW 因特网工具包,NI LabVIEW 高级信号处理工具包,
NI LabVIEW 自 适 应 滤 波 器 工 具 包 , NI LabVIEW 数 字 滤 波 器 设 计 工 具 包 , NI LabVIEW
MathScript RT 模块,频谱测量工具包,NI LabVIEW 调制工具包,NI LabVIEW 机器人模块,
LabVIEW 生物医学工具包,LabVIEW 电能套件,ECU 测量和校准工具包,用于 LabVIEW 的 GPS
仿真工具包,用于固定 WiMAX 的测量套件,NI WLAN 测量套件,汽车诊断指令集,LabVIEW GPU
分析工具。
控制与仿真:使用高级控制算法、动态仿真与运动控制软件,设计、仿真并执行控制系
统。包括 NI LabVIEW PID 和模糊逻辑工具包,NI LabVIEW 控制设计与仿真模块,NI LabVIEW
系统辨识工具包,NI LabVIEW 仿真接口工具包,LabVIEW NI SoftMotion 模块。
这些模块大大降低了编程难度和复杂性。
之前有报道以色列“灵性机器人”公司(Nua Robotics)研制出一种智能行李箱,能够
自动跟着主人走,人在前面走,行李箱就在旁边或身后跟着,于是彻底解放了主人的双手。
这一项目关键就在于箱子内置了摄像头探测器和驱动装置,探测器探查到主人的位置后,指
挥轮子跟上主人的脚步。而 LabVIEW 具有的 Vision 和 PID 控制模块可以更方便的解决自动
识别与跟随的问题。因此本文中制作了一个基于 LabVIEW 的色彩追踪小车,旨在为行李箱自
动识别目标并跟随做一个可行思路探索。
二.系统设计
1.硬件模块
图 2-1 USB 摄像头
图 2-2 L298N 电机驱动模块
图 2-3 MyRIO
1.1 USB 摄像头
USB 摄像头像素 800 万,将摄像头通过 USB 接口连接在 MyRIO 上,通过 NI-MAX 设置摄
像头采集参数为 640*480,每秒采集 30 组数据。
1.2 电机驱动模块
小车运动的实现上采用了 2 个 5V 直流电机,并采用 L298N 电机驱动模块控制电机。该
驱动模块可驱动 2 路直流电机,使能端 ENA、ENB 为高电平时有效,控制方式及直流电机状
态表如图 2-4 所示:
图 2-4 L298N 电机驱动模块的逻辑图
若要对直流电机进行 PWM 调速,需设置 IN1 和 IN2,确定电机的转动方向,然后对使能
端输出 PWM 脉冲,即可实现调速。注意当使能信号为 0 时,电机处于自由停止状态;当使能
信号为 1,且 IN1 和 IN2 为 00 或 11 时,电机处于制动状态,阻止电机转动。
硬件连接上将驱动模块的输出端与直流电机相连,驱动模块输入端与 MyRIO 数字输出口
相连,实现 MyRIO 对电机的控制。由于采用两个直流电机,因此小车的转弯控制采用两电机
的差速控制实现。
1.3 MyRIO 设备
1.3.1 MyRIO 简介
NI MyRIO 是为学生设计的嵌入式
开发平台,能帮助他们在一个学期内完成
“真实工程系统设计”。NI MyRIO 支持
667 MHz 双核 ARM C ortex-A9 可编程处
理 器 和 可 定 制 的 现 场 可 编 程 门 阵 列
(FPGA),使学生可以快速开发系统、
解决复杂设计难题。这些都可以通过小巧
方便的 NI MyRIO 实现。
NI MyRIO 作为可重配置、可重复使
用的教学工具,帮助学生学习众多工程概
念,完成设计项目。通过实时应用、FPGA、
内置 WiFi 功能,学生可以远程部署应用,
“无头” (无需远程电脑连接)操作。
三个连接端口(两个 MXP 和一个与 NI
myDAQ 接口相同的 MSP 端口)负责发送
接收来自传感器和电路的信号,以支持学
生搭建的系统。共有 40 条数字 I/O 线,
支持 SPI、PWM 输出、正交编码器输入、
UART 和 I2C,以及 8 个单端模拟输入,2
个差分模拟输入,4 个单端模拟输出和 2 个
对地参考模拟输出,方便通过编程控制连接各种传感器及外围设备。所有这些功能都已经在默认
的 FPGA 配置中预设好,帮助学生即刻开始着手真实工程——例如无线控制智能车或嵌入式生
物医电设备设计。
图 2-6 NI MyRIO
NI MyRIO 易于设置,方便学生判断运行状态。设备出厂时已配置好 FPGA,初学者可以直
接运行基础功能,无需为 FPGA 编程。同时也支持对 FPGA 自定义,并重新配置 I/O。NI MyRIO
的可扩展性使学生在入门的嵌入式系统到毕业设计或课外创新项目中均可使用。
图 2-6 NI MyRIO 基于 NI RIO 架构
1.3.2 MyRIO 与上位机的连接
首先将 MyRIO 用 USB 线连接到 PC 端,通过 NI-MAX 设置无线网络,然后将 MyRIO 设置成
热点与主机进行无线连接。
1.3.3 MyRIO 与外接电路的连接
外接电路只有电机驱动模块,因此主要通过 MyRIO 的数字/模拟 IO 口对其进行 PWM 读写
操作。MyRIO 的引脚图如图 2-5 所示:
图 2-5 MyRIO 的引脚图
2.软件模块
2.1 图像处理模块
LabVIEW 自带很多例程,方便了用户在进行复杂编程时直接对程序进行调用,加快了开
发人员的编程速度,提高效率的作用明显。而我们的摄像头模块中正是在 LabVIEW 例程中的
的 Low-Level Grab 摄像头模板的基础上进行的编程与修改。
2-4 图像获取模块整体程序
采集到的图像无法被直接利用,必须要经过图像处理环节才能将我们想要的图像位置等
信息提取出来,因此我们设计了图像处理环节,增加了图像去噪子 VI(图 2-4 右下角模块),
2-5 图像去噪子 VI
LabVIEW 针对图像处理有 VISION 视觉开发包,图像去噪子 VI 我们采用 NI Vision Assistant
视觉助手进行编程设计。图像处理去噪部分流程图如下:
图 2-6 图像去噪流程图
图 2-7 NI Vision Assistant 图像处理
在 NI Vision Assistant 视觉助手进行图像处理之后将程序导出为 LabVIEW 程序,将核
心部分设置为子 VI,图像的输出结果放在前面板进行显示方便后面对小车进行调试。
2.2 舵机控制模块
LabVIEW 中 MyRIO 工具包自带很多工具,用户可根据自己需要选择自己所需要的模块,
选择之后只要根据需要对模块的部分参数进行修改即可。本文中,由于我们要对小车舵机进
行控制,因此选用了 PWM 模块,对频率等进行初始化设置,并对引脚进行分配。在对 PWM
引脚分配之后,对小车与 MyRIO 进行连接,设计简单程序,对小车运动进行了初步调试。
图 2-8 PWM 设置界面
由于小车采用舵机控制,在调试过程中发现,小车在占空比 0.5 以下时难以运动,于是,
我们改进了算法,使得小车在测试人员输入前进速度时自动从 PWM 占空比为 0.5 的位置开始,
同理后退时也采用此算法。转向程序部分,我们采用速度差分式转向设计,即当输入转向信
号时,先将速度乘以一个小于 1 的系数,然后一侧舵机在此基础上进行加速,另一个舵机进
行减速,最终实现转向过程,程序框图如图 2-7 所示,将其进行封装成子 VI。
图 2-9 舵机控制子 VI
2.3 数据分析与处理模块
上文提到,我们在对图像处理时,最后一步获取了目标的位置信息,上面谈到的舵机控
制测试是在手动控制的条件下进行的,为了实现小车的智能控制,我们将图像处理获得的位
置信息进行了处理,并与舵机部分进行了衔接。
数据处理过程主要步骤为将识别到的包含图像位置信息的数组转化为 Double 型单个数
据,对目标的 X 坐标点输出,判断是否在图像中间位置,若不在,则根据偏转程度的大小给
予相应的转向程度数据,利用局部变量将数据传输到小车方向控制上,最终实现小车的自动
转向。
图 2-10 数据处理程序
三.成果展示
图 3-1 小车整体框架
图 3-2 调试结果调试前面板图