测量与测试世界 专注 LabVIEW 传感器 仪器仪表 数据采集 工业控制 虚拟仪器 系统集成 知识 设计 应用 开发 学习 交流 测控产品应用

国内最专业
工业自动化测量与测试最新资讯社区

什么是NI myRIO

什么是NI myRIO

NI myRIO 是NI针对高校创新应用为学生设计的嵌入式开发平台,能帮助他们在一个学期内完成“真实工程系统设计”。NI myRIO支持667 MHz双核ARM C ortex-A9可编程处理器和可定制的现场可编程门阵列(FPGA),(它内嵌了Xilinx 的Zynq芯片)使学生可以利用ARM C ortex-A9的实时性能以及FPGA的可定制化I/O,学习从简单的嵌入式开发,到具有一定复杂度的系统设计,myRIO比较便携,而且会有一种比较快速的开发体验,就会使学生在比较短的时间内完成嵌入式系统项目的开发应用。特别适合用于控制、机器人、机电一体化、测控这些领域的课程设计或者学生的创新项目。

使学生可以快速开发系统、解决复杂设计难题。这些都可以通过小巧方便的NI myRIO实现。

在使用myRIO模块前必需要安装的软件:LabVIEW、LabVIEW Real-Time Module、LabVIEW myRIO Module。


NI myRIO作为可重配置、可重复使用的教学工具,帮助学生学习众多工程概念,完成设计项目。通过实时应用、FPGA、内置WiFi功能,学生可以远程部署应用,“无头” (无需远程电脑连接)操作。三个连接端口(两个MXP和一个与NI myDAQ接口相同的MSP端口)负责发送接收来自传感器和电路的信号,以支持学生搭建的系统。共有40条数字I/O线,支持SPI、PWM输出、正交编码器输入、UART和I2C,以及8个单端模拟输入,2个差分模拟输入,4个单端模拟输出和2个对地参考模拟输出,方便通过编程控制连接各种传感器及外围设备。所有这些功能都已经在默认的FPGA配置中预设好,帮助学生即刻开始着手真实工程——例如无线控制智能车或嵌入式生物医电设备设计。

NI myRIO易于设置,方便学生判断运行状态。设备出厂时已配置好FPGA,初学者可以直接运行基础功能,无需为FPGA编程。同时也支持对FPGA自定义,并重新配置I/O。NI myRIO的可扩展性使学生在入门的嵌入式系统到毕业设计或课外创新项目中均可使用。

图: NI myRIO基于NI RIO架构

1.硬件设置:连接到NI myRIO

NI myRIO的设计目的之一是简化硬件设置。NI  myRIO软件提供专门的配置与设置工具,与NI Measurement & Automation Explorer(MAX)的配置功能不同。但仍可通过MAX进行设置、软件安装和其他高级设置等操作。当设备连接到计算机时,NI myRIO的USB监控器自动运行。以下章节教您如何使用NI myRIO USB Monitor和NI myRIO Getting Started Wizard。

2.NI myRIO USB Monitor

请确认您已通过随附的电源适配器启动NI myRIO。用USB线缆连接NI myRIO和计算机。

电源接通后,无需启动LabVIEW或NI MAX,操作系统会自动识别NI myRIO并安装驱动进行设置。随后,Windows OS自动弹出NI myRIO Monitor对话框(如果没有自动弹出,可以通过<LabVIEW安装目录>\resource\myRIO打开myrioautoplay.exe),如下图所示

检测到NI myRIO后,用户可以看到硬件的序列号和IP地址。虽然我们是通过USB线缆连接NI myRIO,但是会看到一个IP地址,这是因为NI myRIO的驱动会将计算机的USB端口虚拟成一个网口,从而在开发计算机看来,NI myRIO是一个通过网络连接的远程设备。

同时用户会看到以下四个选项:

1.  Launch the Getting Started Wizard

通过Getting Started Wizard,用户可以迅速查看NI myRIO的功能状态。向导的功能有:检查已连接的NI myRIO,连接到选中设备,给NI myRIO安装软件或进行软件更新,为设备重命名,以及通过一个自检程序测试加速度传感器、板载LED以及板载自定义按钮。

一步步点击Next之后(不要点击Refresh),Getting Started Wizard最后一步显示以下两个选项:

       Start my first project now

选择此项后弹出一个基于网页的入门指导,帮助你建立类似练习2中项目。

       Go straight to LabVIEW

选择此项后弹出LabVIEW Getting Started窗口。

2. Go to LabVIEW

选择此项后直接弹出LabVIEW Getting Started窗口。

3. Configure NI myRIO

选择后打开一个基于网页的NI myRIO配置工具。

4. Do Nothing

你可通过此选项关闭NI myRIO USB监控器。

3.启动 Getting Started Wizard

在NI myRIO USB Monitor中选择Launch the Getting Started Wizard。选择 Next,向导将自动连接NI myRIO,检查NI myRIO上已经安装的软件,并询问是否要对NI myRIO重新命名。如果NI myRIO之前没有安装软件,向导将自动安装到最新版本。随后弹出诊断窗口,用户可以查看内置三轴加速度计的数值、检测自定义按钮的功能、或测试4个板载LED。

安装配置NI myRIO后,你可以创建实时VI,并在ARM处理器上与FPGA VI一同运行,实现真正的并行处理。

插上电源适配器,

当我们拿到一个新的myRIO时,myRIO的实时处理器实际上还没有安装任何的软件,因此myRIO上面的status灯一直是橘黄色闪烁的状态;

当我们用USB线连接myRIO和计算机的时候,弹出来这样一个启动界面,点击Launch  the Getting Started Wizard,来对myRIO进行相关的配置。

它就会找到我们安装的myRIO

点击next之后还可以看到myRIO的序列号

点击next,这个时候呢它就会把上位机已经安装的相关软件去安装一套实时操作的副本在myRIO上面,myRIO的ARM处理器上运行的是Linux RT实时操作系统,不过一般情况下用户不需要关心底层的操作系统细节,因为LabVIEW实时模块会帮用户和操作系统打交道,开发者只需要集中精力实现功能就OK。

装好之后呢你就会看到如下图所示,这是一个myRIO的测试面板,myRIO上面已经放了一个3轴加速度传感器,所以会看到一些参数的变化,还可以按按妞,可以看到它的变化,也可以点这4个LED灯,看看myRIO上面四个LED灯的变化。做完这些之后呢,点next,我们就准备好了。就可以在LabVIEW中对myRIO进行进一步的自定义开发。

4.软件设置

前面是对myRIO进行简单的设置,就可以进行自己的项目开发了。如果需要更深入的设置,那我们需要打开NI MAX这个配置管理软件,那在MAX里面,我们要是看myRIO是在哪里看呢?

打开NI MAX—>远程系统(从远程系统里看)。因为虽然myRIO是通过USB和电脑连接,但是驱动会把USB端口虚拟成一个网口,所以从计算机看来,myRIO是一个通过网络和电脑连接的设备,所以在远程系统里看到myRIO。

有实际符号的那个,是我们现在连接上的那个myRIO。

点击NI-myRIO-1900-03098e4f,就会出现一些基本信息,下面的IP地址是由USB线连接到电脑的

一个网址,无线后面再讲。

接下来我们展开myRIO,继续展开设备和接口myRIO-1900“RIO0”是myRIO上面FPGA的资源,下面两个串口是myRIO上面的2个URT串口,后面如果装上摄像头,摄像头的资源就会出现在设备和接口下面。

在继续展开下面的软件,就可以看到myRIO上面所装的所有的软件的信息,这些myRIO上的软件实际上是计算机上安装的软件的一个实时操作系统下的副本,那这些软件对应主机上都有相应的相同版本的软件的,那主机上的软件可以从我的系统—>软件来看,因为我这个里面装了很多NI的软件,所以你会看到非常多的软件驱动,但实际上只有一些我们是装在这个myRIO下的,这个也是我们再myRIO安装的时候选择安装的,这个有什么意义呢?我们现在其实是已经安装好了,这个地方不需要做任何的更改,关键是将来大家在你的主机上面有一些软件版本的升级,或者驱动软件版本的升级,那你必须保证myRIO里的软件版本(实时操作系统版本)和主机里的版本保持一致,你的程序才会没有问题的被编译下载到你的实时操作系统中去,在我们这个myRIO上面去运行。

当你的主机软件升级的时候,对应的你的myRIO上面的软件也需要升级,那怎样去升级,或者添加一些新的软件呢,右击软件—>添加/删除软件,弹出对话框后选择自定义安装,点击next,后选择手动安装或卸载组建,这样就可以看到我们那些软件在myRIO是上面是已经安装的,打勾√的都是已经安装好的。

如果你的计算机上面的软件有更新的话,比如说这个LabVIEW Real Time在主机中已经有更新的话,你就可以在主机中可用版本中看到有哪些版本,远程终端版本是指目前我的myRIO装的是什么版本的。选择你想安装的版本后,点击下一步,就会把目前主机上更新的版本跟新到myRIO上面去,这样的话你在使用的时候就完全没有问题。

还有一个问题会出现,就是我们如果装的LabVIEW软件是中文版本的话,这样在下载低版本程序的时候可能会报一个错,就是会说语言版本不匹配。原因是,打×的软件其实都是主机上有的软件,但它没有安装到myRIO上面,因为可能你的嵌入式系统不需要这些功能,这样可以节省嵌入式系统里的存储资源,但是当主机里安装的是中文版本的时候你必须在myRIO里安装一个Language Support for simplified Chinese,对简体中文版的支持。

这个时候点击前面的那个×,选择安装组建,是的×箭头变为如上图所示,点击下一步,这样就把这个简体中文语言支持安装在了myRIO上面,好了后回到NI MAX。

这个时候的语言环境就变成可以选择的了,选择中文后点击保存,这个时候在中文版的LabVIEW下开发的程序在myRIO里面运行就没有问题。

那么除了在MAX里面可以看到myRIO这个系统,并且对它进行很多方面的配置,包括软件的安装,IP地址的修改,配置以外,还可以在另外一个地方可以做这些事情,NI-Network Browser(网络浏览器)这样的一个小工具,在开始—>所有程序—>National Instruments里面可以找到,双击后它会打开你的浏览器,它会搜索所有网络上连接的NI的设备,包括Compact RIO,Single-board RIO,myRIO这样的一些设备。

那这个myRIO我们看到虽然通过USB线连接到主机上,但实际是把USB端口虚拟成一个网口,所以看到是一个通过网络连接的设备,它也是有一个IP地址,点击它以后可以点击配置,这个时候注意可能会弹出一个窗口阻止它运行,允许运行。

允许后出现的界面如下,它访问的就是myRIO虚拟的IP地址,它会加载一些信息跟我们在MAX里面看到的基本一样,可以配置,不过目前是不能安装更新软件的,只能查看,这是和NI MAX的区别。

5.开发第一个myRIO项目

做完前面的准备工作之后,我们就可以打开LabVIEW来开发我们的第一个myRIO项目。

打开LabVIEW后,你会发现安装了myRIO Module之后界面和以前会有些区别,增加了一些可以链接到Started Wizard 和Tutorials的功能,包括链接到一些论坛等等,就会给你看到一些现成的范例,包括给你提供更多的学习的资源。

第一个Blank Project是一般的LabVIEW Project,第二个myRIO Project主要是针对myRIO上面ARM处理器开发的一个程序,第三个myRIO Custom FPGA Procject将可以在myRIO上面同时对FPGA和ARM来编程。我们选择第二个:Create Project—>myRIO Project。

在USB线连接着myRIO和计算机的情况下,会自己找到myRIO的target(硬件对象),Plugged into USB。如果是通过WIFI连接,那么它也会找到(后面讲解);如果手上没有myRIO的话,可以先选择Generic Target,先进行程序的开发,等将来拿到myRIO后在进行连接。

点击"完成"。自动帮我们建立了一个项目。观察一下,如果你的程序是在myRIO这个target下面,如下图的main.vi,这个main.vi将来就运行在我们的ARM处理器上。

打开这个程序,可以看到它的前面板和程序框图,看上去和我们以往的LabVIEW程序没有什么区别,不过它将来执行的对象将会在ARM上面。我们仔细来看这个程序,是个顺序结构,实际上这个顺序结构只是让大家看的更清楚而已,但其实只要有这个黄色的错误簇的话,根据LabVIEW的数据流,程序也会按照你所希望的顺序执行的。

这就是个简单的while循环,每10ms执行一次,它从板载的加速度传感器上读取想X、Y、Z三个轴的加速度数据,双击打开看一下。三个轴勾选上之后,每次运行循环的时候就会把这三个数据读取一次。

切换到View Code看一下,因为我们调用的是个快速VI,点View Code,就可以看看它的底层软件怎么写。

点击上面的Copy to Clipboard,可以把它保存下来。

在函数选板上右击—>myRIO可以看到很多蓝色的快速VI,已经是板载的一些输入输I/O资源,它的一个现成的出函数。

也包括板载的一些资源,Low Level是一些更低层的函数,会使得编程的效率更方便一些。

现在我们来准备运行这个实例。

回到项目界面,在myRIO的target上面我们选中点击右健—>连接

连接过程中有可能会出现这个问题,连接不成功,可能是前面提到的语言环境的问题。

在labview中进行部署操作时,提示冲突消息:拒绝访问:该终端配置的语言无法兼容主机LabVIEW语言。对于实时终端,可通过MAX修改终端的语言环境,确保终端语言与主机语言一致。但如何通过MAX修改终端语言环境?

 

解决方案:

a、

第一步:打开MAX-》远程系统,右键-》软件,选择添加/删除软件;

第二步:自定义软件安装;

第三步:从列表中找到labview语言支持模块,安装与主机一样的语言。

b、

中的语言环境,要改成和PC版的一致。

这个时候在去连接myRIO就不会有问题了。

连接成功的myRIO这下面这个状态。

运行程序。图标里显示的就是我们三轴加速度传回来的数据,单位是g。注意到Z轴坐标会随着我的myRIO上下动,坐标会跟着改变,这里采用了相对参考系,相对自由落体的坐标参考系。

这里需要说明的是myRIO建的Project里的程序和我们一般的数据采集卡好像从感觉上没什么区别,也是有一个传感器,有一个设备采集卡,然后在LabVIEW程序界面上看到传回来的数据,但是实际上从本质上是有区别的,一般的数据采集卡如myDAQ,采集到的数据,它的程序始终是在我们的CPU上执行的就是在计算机的CPU上执行的,显示也是从CPU上取数据去显示的,而myRIO执行的程序都是在myRIO上面的板载的Xilinx芯片其中ARM的部分,就是在它的嵌入式的处理器上执行的。那么这些数据为什么能够在嵌入式上运行,我们却能够在界面上看到呢,其实是由LabVIEW底层的机制所决定的,它会把这些数据传到我们的上位机界面,它有一个自动的基于网络的这种传输机制,前面说过,,虽然我们是用USB线来把myRIO连载我们计算机上的,不过实际是它把USB端口虚拟成一个网口,所以它的这个传输机制也是基于网络的,想象下,这种传输机制始终是要把我们观测的这些数据从myRIO嵌入式系统里面传入到我们计算机上,那它肯定是要消耗一定的资源的,因此,实际上我们很多的嵌入式是没有这个界面的。这个界面主要是调试的时候偏于观看,或者一些应用里面需要从上面观测一些数据,可用这种方式实现,但它会消耗一些额外资源。

另外一个方面,就是如果你将来的程序采集到一些数据之后,想从上位机上观看的另一种方法,是可以在下位机的程序里设置一些通过网络编程的方式设置一些传输的机制,比如通过TCP/IP或者通过网络共享变量传输,然后可以在上位机上面观看。

比如Data Communication/数据通信选板里的一些传输机制。可以再在my computer这个下面再去编写一个新的vi,作为上位机一个独立的程序,去和myRIO上面的程序基于网络进行通信。

下面我们打开这个程序,这个程序就是读取一个板载的加速度传感器的三轴加速度的数据并且显示出来。我们来运行这个程序,这个时候在部署,编译下载到ARM处理器上面去运行。

现有疑问怎么知道这个程序是运行在myRIO上面的,我们来改下程序在证明这个程序是运行在myRIO上的。

我们在程序里做一个判断,比如说,对X轴的数据做一个判断,当它的加速度的值大于2个g的时候,就让它点亮一盏LED灯,myRIO上面有4个LED灯可供用户操作,按照下图接好线

 

这里注意一点:如果是外置LED灯,可以使用digital out可以对它编程。这里我们只用板载的LED灯就好了。

用哪个灯勾哪个灯,View Code可以看底层的程序。

在这里给同学们演示下。

为了证明这个程序的确是运行在实时处理器上,我们把USB端口拔掉,这个时候上位机上面会显示连接中断,这个时候我们上位机界面就不再更新。但是我们的程序实际上还是在运行的,这个时候晃动myRIO,LED灯仍然会被点亮,证明它的程序仍然在运行,这就证明了程序运行在myRIO的ARM处理器上。

上面的程序只是实现了功能,但是从LabVIEW编程角度上来说,lED灯的错误簇还没有连接,功能上没有问题,但连接好后程序会更加规范一些。

 

前面的都是针对myRIO是上面的ARM来进行的,并没有涉及到FPGA的资源的开发。

对于像加速度传感器,LED这种很方便的快速VI的控制来说,去看它的底层的话,也都是调用了底层的FPGA的接口,也就是说NI的研发人员在开发myRIO Module的时候,就是叫你们装的软件模块,已经把相应的FPGA的代码写好了,大家在做ARM上面的开发的时候,当你去跟硬件资源打交道的时候,实际上它都是通过FPGA,只不过这部分代码由NI专门的人员写好了,我们用的时候就会非常的方便。

虽然我们没有进行很底层的FPGA的代码的开发,但实际上你只是用这些现成的驱动函数,那已经可以和很多的外围I/O来打交道,并且可以实现很多的工作,比如PWM的输出去控制小车的电机,并且用编码器的输入来获取位置或者电机的转速,另外的话其他的传感器可以通过模拟输入或者I2C,SPI的总线接口来获取,或者也可以通过UART这个串口去和其他的软件进行通信。

6.myRIO的WIFI功能

在设置WIFI功能之前还是需要通过USB来连接myRIO和计算机,打开NI MAX,点击myRIO,还没有配置WIFI 的时候,看它的IP地址只有一个,是把USB端口虚拟成网口的时候,分配给myRIO的一个地址。无线还没有配置,这个时候还没有地址。

配置WIFI的话,点击网络设置,这个就是USB所连接的myRIO,前面提到了把USB虚拟成网口后给IPv4分配的一个地址。

IPv4地址-设备在网络上的唯一地址。每个IP地址都是一组2-3位的数字。每个数字的范围是0-255,数字之间由句点分隔。该格式叫点分十进制表示法。例如,224.102.13.24就是一种点分十进制表示。

子网掩码-帮助网络设备确定另一台设备是否在同一个网络上。255.255.255.0是最常见的子网掩码。

网关-用作网关服务器的设备的IP地址,连接两个网络。

DNS服务器-存储DNS主机名称,并将其转译为IP地址的网络设备的IP地址。

设置WIFI,有两种,一种是路由器设置网络,一种是myRIO自带的WiFi 功能。

新的myRIO会容易出现下面的问题

为了避免这个问题的出现,先把无线模式选择禁用模式,然后国家选为中国,保存后,再开启无线模式的设置。

1)myRIO连接外设路由器创建的网络

无线模式选择为连接至无线模式,国家选择为中国。无线网络连接到路由器创建的网络,WPA密码为无线网的密码。配置IPv4地址选择默认的DHCP或Link Local。


用户需要为不支持动态IP地址分配的终端指定静态IP地址。如远程系统未连接网络且要进行直接连接,也需要指定IP地址。关于指定IP地址的帮助见指定静态IP地址。

如远程系统所在的网络有DHCP服务器,可自动从DHCP服务器上获取IP地址。每次终端启动时,DHCP服务器都会分配IP地址至终端。用户无需指定其他信息(例如,子网掩码)。如不能够确定网络是否带有DHCP服务器,请联系网络管理员提供帮助。如要自动获取IP地址,选择DHCP或Link Local,然后单击保存。必须重启远程系统后改动才生效。

不同DHCP服务器的实施方法有所差异。因此,有些DHCP服务器可能不兼容LabVIEW Real-Time模块。选择DHCP或Link Local后重启RT终端,LabVIEW将尝试从DHCP服务器上获取一个IP地址。如该操作失败,LabVIEW自动重启RT终端并分配link-local地址(169.254.x.x),终端需支持此功能。Link-local地址是仅在局域网中使用的网络地址。如操作失败三次,LabVIEW将返回IP地址为0.0.0.0的默认配置。在该情况下,需明确指定网络参数。

另外,如使用DHCP服务器,每次重启终端时,服务器都会向远程系统分配IP地址。新的IP地址与上次分配的IP地址可能不同。如使用DHCP服务器分配IP地址至终端,建议通过主机名称连接RT终端,不推荐通过IP地址连接RT终端。在RT终端属性对话框的常规页面,在IP地址/DNS名称文本框中输入主机名称,即可通过主机名称连接终端。

所有的设置完成之后点击保存。这样就配置好了与无线路由器的连接。

再点击系统设置后点击刷新,这个时候无线的IP地址就显示了。以太网是由USB转网口分配的地址,下面无线的IP地址是由路由器创建的WIFI分配给myRIO的IP地址。

设置完后我们打开LabVIEW,来新建一个myRIO项目,这个时候可以发现除了 Plugged intoUSB能搜索到myRIO外,Connected over WIFI也能搜索到myRIO(电脑也要连上路由器创建的网)。

后面所跟的这串IP地址,就是通过WIFI连接的时候,myRIO的IP地址。

这个时候拔掉myRIO的USB线,这个时候通过Plugged into USB就搜不到myRIO,而Connected over WIFI依然能搜索到myRIO。

点击完成,新建一个项目,通过WIFI连接myRIO,后面的IP地址就是WIFI地址。

如果将来IP地址有变化的话,可以通过右键—>属性来更改地址。

打开main.vi程序,我们来运行它,这个时候程序仍然运行在ARM处理器上,所实现的功能就是采集板载的三轴加速度传感器的数据。

2)myRIO自身创建无线网络

 

让myRIO作为WIFI热点的功能,这样的话,上位机及其它的智能终端都可以通过这个WIFI连接到myRIO上面。这样就不需要经过第三方的无线路由器,在有些应用里面会更加的方便,比如车载的一些应用。

在新的NI-RIO 13.1或者更高版本里面,myRIO就支持自身当作路由功能,创建WIFI。

大家如果仔细看我给的安装包part2里是有NI-RIO这个模块的,如果没装现在教大家在怎么升级。

NI MAX里选中myRIO的软件,我们看到NI-RIO是14.0版本,已经满足。

若是13.0或者更低版本,先去NI官网上下载高版本的RIO驱动后安装,安装完后我们的电脑系统软件就是最新版本,后面我们给myRIO也安装上最新版本,通过myRIO的软件—>添加删除软件。

回到MAX主窗口,现在对myRIO进行设置,这个时候依然要把USB线连上进行设置。

打开网络设置页面,无线模式选择创建无线网络,意思就是在myRIO上面创建一个无线网络的接入点,SSID是给创建的无限网络取个名字,配置IPv4地址这个地方选择仅DHCP。

点击保存,这个时候的状态就是正在广播,同时下面出现了一个新的Ipv4地址,这是myRIO的新地址,是myRIO作为一个无线接入点为它分配的一个地址。

这个时候myRIO就工作在了无线接入模式下,这个时候myRIO就相当于一个路由器,这时候第三方设备计算机手机都可以连接myRIO。下面以同样的方式创建工程。

在USB线没拔掉的时候可以搜索到myRIO,拔掉之后只能在Connected over WiFi下搜索到myRIO。这个时候的IP地址就是myRIO作为一个无线接入点的时候的IP地址。

点击完成。

加入你想通过myRIO的WIFI和其它具有无线网卡功能的电脑相连接的话,有好几种方法,第一个建立LabVIEW的网络共享变量,或者通过Data Socket技术,或者通过一些无线通讯的协议TCP协议或者UDP协议。

7.通过USB Camera采集图像

myRIO上的USB端口去连接USB摄像头(罗技C270)采集图像的功能。将这块功能,首先要保证我们电脑上安装了NI Vision Acquisition Software这个软件,安装之后在MAX系统软件下看到NI-IMAQdx,

如果后面涉及到图像处理的工作的话,建议还要装上LabVIEW Vision Development Module这个模块,安装好后你会在NI LabVIEW下面看到Vision Development Module这个模块,

这是我们上位机上安装的软件,先在保证我们的myRIO和计算机通过USB连接或者无线网络连接,这个时候我们要保证下位机的myRIO和上位机的软件安装一致,也要安装NI Vision Acquisition Software这个软件,打开MAX看myRIO下软件,发现已经装好这个模块,就是NI-IMAQdx这个模块,如果没安装可以自定义安装。

这个时候把USB摄像头插到myRIO的USB接口,通过设备和接口展开,发现多了摄像头这一项,

点击UVC Camera这一项,点击Acquisition Attributes,Snap是单帧采集,Grab是连续的采集图像,Video Mode可以对我们的一些参数进行修改,选小一些的参数,数据的处理速度会更快一些,

比如说选择160*120 YUY 2 30.00fps,每秒30帧,设置完后可以点击保存,把参数保存下来,

同时我们要记住摄像头的名字“cam0”,因为在后面的LabVIEW 程序中使用摄像头是还要调用这个名字。

现在我们打开LabVIEW,这次打开范例查找器,搜Low-Level Grab.vi,用底层函数写的一个连续采集的程序,大家注意,这个程序目前没有把他添加到任何项目中,因此它执行的话是在计算机CPU上执行。这个程序它和我们的myRIO并没有什么关系,因为它是执行在计算机上的,我们现在把程序保存下,选择另存为,不然就保存在范例里了。

打开这个VI,camera 那么写cam1,然后运行(cam0是我笔记本的型号,具体的大家可以试下)

现在按之前的方法创建一个myRIO的项目,我们可以把刚才保存下来的采集的程序添加到myRIO这个target下面,点击右键—>添加—>文件,然后把桌面的Low-Level Grab.vi加进来,这个时候在myRIO下面,则程序运行在嵌入式上,

打开程序,输入cam0,这是摄像头在myRIO下的名字,在电脑上不一定是这个(我的电脑是cam1,因为还有个前置摄像头),点击运行,这个时候它就会采集到我们的图像,

如果我们再MAX里修改参数,把View Mode里摄像头的分辨率改大一些,然后保存,

这时候注意,鼠标在MAX里不要再选中camera,放到其他地方,否则的话在运行myRIO程序的时候会报资源冲突的错误,因为MAX程序也在访问camera,

再次运行程序,你会发现分辨率的话比之前改善了一些,这个程序我们是可以从头到位写的,这里面用到的VI在视觉与运动里调用。

对于开发者来说,调用范例来进行修改无疑是更加方便的。

这里要强调的是,虽然我们再界面上能观察采集结果,但是实际上这个程序它是运行在我们实时处理器上的,这个图像也是我们的myRIO通过网络传输机制从我们的实时处理器上传到我们的计算机上来进行显示的,所以即使我们在前面板上删除图像显示控件,我们在运行程序采集本身也是在持续进行的,所以我们在这个基础上就可以进一步在myRIO实时系统上对图像进行分析和处理。

8.基于ARM的机器视觉应用

这一节主要介绍如何对采集的图像进行实时处理,从而实现机器视觉的应用,要实现机器视觉的应用,比较方便的软件是Vision Development Module,就是视觉开发模块,在上位机上面安装了这个模块后,也要对下位机myRIO进行模块的安装,安装好后应该能在MAX里myRIO软件下面看到NI Vision RT模块。

开发机器视觉的应用,无非就是在前面采集数据图像程序的基础上上增加一些相关的机器视觉的算法。

打开上一级保存的项目,然后打开上面的主程序Low-Level Grab.vi打开Vision and Motion里面的Image Processing和Machine Vision两个部分是我们经常用的。

 

初学者编程比较困难,现在教大家投机取巧的方法。

通过连接到myRIO上面的摄像头来检测前面这个杯子,是否仍然在前面,如果被拿走就要报警。

进入MAX里面,点击进行连续性采集Grab。我们可以采集一些正常情况下和非正常情况下的图片。

 

做完后,把MAX里的鼠标从camera地方移走。

接下来我们打开一个视觉助手软件Vision Assistant。

位置在National Instruments下面Vision里面

打开后会弹出提示窗口,主要提示我们测试图像的来源,open image,打开刚才保存的图片,

我们的目的就是检测瓶子是否存在,现在打开的是一张正常的图片,当然有很多种不同的方法,比如模识识别来匹配,或者通过色彩识别,我们这里准备采用一种相对来说计算量比较少的一种方式。

我们准备处理杯子的边缘,一般对于边缘的问题只能针对用灰度图像来进行的,所以第一步先对彩色图像来处理,把它的亮度先提取出来,第一步把彩色图像变成灰度图像。

选择Color里的Color Plane Extration,第二个模块。                                              

选择HSL-Luminance,

接下来,在机器视觉下面的找直线边缘来提取杯子的边缘,

选择Machine Vsion里的Find straight Edge Setup。

绿色的部分叫ROI,ROI可以重新画,找到合适的大小和位置,

在Setting里Direction可以选择箭头方向。

最后点击OK。

这是做好的第一张图片,我们要去运行第二张第三张保存的所有图片。

这个来切换图片

这个绿色箭头run once是把对第一张图片操作应用于这一张

然后可以双击观察直线两个点位置

 

这一张杯子拿走后是检测不到它的边缘的,所以观察到检测红线的两点值为0。

也可以点击上图所示 这个按钮,run in loop,循环的来检测所存储的图片,结束后点击ok。

我们看到Vision Assistant非常有用,它能帮助我们去尝试一些不同的算法,并且去尝试一些不同的参数,对我们可能采集到的图像进行处理,并且可以选出比较合适的算法来达到我们所期望的目的。

完成这些步骤之后呢,我们可以把是上面的检测步骤保存下来,以备下次我们可能还需要用到。

下面把这个script转为LabVIEW语言,前面其实调用的模块就是基于LabVIEW语言的。

路径选好后点击next,继续下一步,

下面是图像的来源,选择来源IMAQdx的图像采集。

这一步呢是选择生成的VI的前面板的输入控件和显示控件,如果不勾选,会跟据软件一开始设定的默认值来执行,因为我们只关心Straight Edge,则就把这个勾选上。最后点击finish,会自动生成VI。

为避免程序冗余复杂,吧这一段编程子VI,在编辑里面选择创建子VI

保存子vi,命名Vision,保存到项目文件里。

回到项目,把子VI加入到项目中。

打开以前的VI,做一下改动

保存全部。

程序框图在采集完图向后添加了一个image,和处理后的image进行比较。

注意:因为程序最终是运行在嵌入式上的,所以我们是看不到显示界面的,所以图像显示控件最后都可以删掉,包括测试一秒钟处理多少帧也可以删掉,因为最后看不到界面,所有显示控件就没有意义了。

分享:

相关推荐

评论