基于myRIO-UDP协议的智能小车实现范例
Posted 同济虚拟仪器CLUB
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于myRIO-UDP协议的智能小车实现范例相关的知识,希望对你有一定的参考价值。
ShiGuang Liu,
School of Automobile Study, TongJi University
Address:NO.4800 Cao'an Highway, Shanghai, 201804, china
智能小车的控制端为ios设备,通过UDP协议实现无线数据传输,这些被传输的数据通过myRIO控制小车电机,进而完成小车的基本动作。具体结构可参考下图:
基本功能:IOS设备控制小车动作,并将控制程序作为开机启动程序
IOS设备需安装“sensor stream”应用(在 APP Store 中搜索即可,可免费试用)
编程的上位机安装好myRIO驱动模块(安装完成后连接myRIO后可自动识别即可)
实现功能:IOS设备通过无线局域网发送屏幕位置坐标或者陀螺仪传感器数据,并在LabVIEW上正确解析
实现功能:定义小车正转反转模式判定,配置myRIO的PWM输出接口
小车电机的H桥路已整合到智能小车底板上,因此无需在LabVIEW中对小车正反转做重复定义
是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。
TCP:传输可靠,用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源);
UDP调试要求少,入门简单,用于传输少量数据(数据包模式)、速度快;
2.打开IOS设备上下载好的APP“sensor stream”;
6.打开training文件夹中的myRIO_xx子文件夹中的“i_touch_control_RT Main.vi”(此文件夹在俱乐部QQ群文件中)
如下图所示:
这是一个通知器结构,通知器可同时向多个循环广播数据,但无法缓存数据,这是与队列的明显区别。
7.下面我们详述一下消费者循环的几个部分,如下图中所示,消费者循环共实现两个功能,分别为触屏坐标和陀螺仪传感器两类:
8.把上位机连接到与myRIO同一无线网后,运行i_touch_control_RT Main.vi同时,点击IOS设备上的Send Data to PC键将控制设备上的数据发送到上位机,观测界面上数据流的形式,找出有效数据位:
9.仔细观察数据流的形式,我们可以发现处于触屏模式时,每当手指点触屏幕,数据流的第94字节及以后相邻几个字节会发生相应改变,可以判断这就是点触坐标的数据流位置,此时观察程序框图面板可以发现其截取数据流的偏移量设置正是从93开始(LabVIEW的索引从0开始),与我们的观察结果一致。(数据流采用16进制,这样每行有24个字节,到我们所用字节正好是94,这一点请大家自行确定)
103字节:是否有第二个点(同样只有0,1两种状态)
10.在这里我们只取第一个点的数据即可,两个点控制小车动作的逻辑判断可以作为同学们自己的扩展部分。
接下来介绍一种较为简单的动作定义方式,通过第一个触点的坐标控制小车的动作,以最大坐标为450 320的屏幕为例,可以有如下的定义方式:
将上图的逻辑用LabVIEW表述出来,为下图形式:
这里强调一下判断Y坐标是否大于0的必要性:因为这里的左转定义为Y<150,而在默认没有点触屏幕时坐标默认为(-1,-1),因此满足左转的定义,这样便造成了冲突,将使系统在没有点触屏幕时也处于左转状态;因此必须判断Y是否大于零以确定是否处于默认状态。如果你采用其他定义方式,则可能没有这一过程。
进行到这一步我们的内容1基本上就完成了,此时可运行程序检验你的逻辑定义是否正确,保证后续步骤的顺利进行。
小车采用5V直流供电,左右轮各有一个减速电机,底板集成有H桥,并提供了PWM控制端口,可直接接收myRIO的控制信号
本次课程只涉及小车的动作控制,图像避障等功能暂不考虑
新建无线连接的myRIO project,然后新建一个Vi,在编程中选择myRIO选择Default FPGA personality 中的PWM输出口;
这里PWM输出口必须给定其频率和占空比,频率设置范围较大,这里给定为100HZ,占空比输入范围为0-1。
将所定义管脚用杜邦线连接到小车底板的正反转接收口上,如下图所示:
改变Duty Cycle的值,观察小车电机的转动速度。
这里需要注意:每个单机有两个控制端口,分别使电机正传和反转,这里需要注意不能使同一个电机的两个控制端口都为高电平,以免发生危险。
3.将内容1中定义的数据解析程序添加进project
将已有UDP接收程序(i_touch_control_RT Main.vi)添加至新创建的project,在已有VI上修改方便初学者快速编程
;
按照上一步中定义PWM接口的方式在i_touch_control_RT Main.vi中添加四路输出控制端口
;
4.进行到这一步控制数据解析和用myRIO控制小车电机都已分别完成,现在需要将两部分结合起来,用解析的数据控制四路端口的输出:
1)将内容1中的各个状态组合成为一个数组,并转化为数值,其原理为二进制到十进制的转换
;
此时,定义case结构分别指定不同动作时PWM输出口的值,有如下对应关系:
此时,程序框图已经全部完成,点击运行可将程序下载至myRIO中,此时在IOS设备端输入myRIO的ip地址,然后再次点击Send Data to PC按键,即可控制小车动作了。此时myRIO仍连接着电源线,这限制了小车的自由活动,这里建议使用小车上的电池供电,并将编写完成的程序作为启动程序下载到myRIO中,这样每次启动时,myRIO 即可自动运行编写好的控制程序,具体的操作步骤如下:
在“源文件”中选择编写的程序,并按下图中的操作顺序操作即可,这里启动VI下边的始终包含部分的含义大家有兴趣可查阅资料。
生成应用程序后,右键单击“实时应用程序”选择“设置为启动项”;再次右键单击“实时应用程序”选择“作为启动项运行”即可:
1.重新定义小车动作判定方式,加入调速模块,可以根据IOS控制端的指令调整小车移动速度的快慢;
2.使用myRIO无线模块作为热点,IOS设备接入myRIO的无线网实现控制
以上是关于基于myRIO-UDP协议的智能小车实现范例的主要内容,如果未能解决你的问题,请参考以下文章
毕业设计:基于单片机的超声波智能跟随小车 - 物联网 智能小车 嵌入式单片机 stm32 跟随小车
基于STM32的智能小车--电机驱动设计
毕业设计 - 题目: 基于单片机的智能小车 - 嵌入式 物联网 本科毕设
智能小车七《上位机android》
基于PID的智能小车循迹控制
#基于DAYU200开发一个好玩的图传智能小车--demo样例#