基于FPGA的手势识别智能小车

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Logo手势控制的智能小车队长:马聪队员:李源琦王麒炎Logo项目描述Contents1总体设计2硬件设计3软件设计4FPGA主控设计5Logo一、项目描述•1.1项目要求本项目要求设计出可以利用手势控制的智能小车,该小车能够根据上外机(PC端)键盘的输出指令A(左转),W(前进),S(后退),D(后退)以及P(停止)。同时可以通过PC端的内置摄像头进行手势识别并利用手势控制小车前进。同时利用无线路由器和摄像头对小车周围环境进行监控,同时将图像送回PC端。同时,利用超声模块进行简单的蔽障,使得可以自动行驶。•1.2需求分析随着嵌入式技术的发展及智能控制在人们生活中的渗透,运用智能机器人进行辅助生产和提高工作效率似乎是一个趋势。有时候我们需要监控环境变化,但人们不便直接进入;同时我们需要多方式来控制小车的运动,包括使用PC端键盘控制,手势控制等。•同时,随着现代网络技术的发展,也为小车的远程控制提供了可能性。我们可以通过远程控制来进行相关操作使得小车进行运动。Logo一、项目描述•1.3硬件和软件开发工具简介•硬件平台考虑到FPGA具有实时性强、时序资源丰富的优点,我们在开发过程中使用的是Digilent公司的BASYS2开发板,该开发板是围绕着Xilinx公司的一块Spartan-3EFPGA芯片搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。Basys2板上集成了大量的I/O设备、16个扩展I/O口和FPGA所需的支持电路,让开发者能够方便搭建无数的设计电路。•软件平台在小车端的软件开发工具主要是ISEDesignSuite13.4,ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。ISE除了功能完整、使用方便外,它的设计性能也非常好,它集成的时序收敛流程整合了增强性物理综合优化,提供最的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。先进的综合和实现算法将动态功耗降低了10%。另外,我们还使用了一款由Digilent公司为BASYS2开发板开发的用于下载程序的软件Adept2。在PC端,我们利用OPENCV开源图像数据库进行手势识别与处理,同时利用C++编写串口程序,MFC编写窗体并封装。使得小车的控制程序更为美观,操作更为简便。Logo二、总体设计•2.1功能描述•小车为二驱或四驱,能够自由行走。•利用WIFI模块进行PC端口与智能小车的通信,键盘控制小车的工作模式、轨迹以及行进与停止。•利用WIFI模块进行PC端口与智能小车的通信,利用手势来控制小车的左转与右转。•小车有自动和手动两种工作模式,在自动工作模式下,小车能沿着一定的轨迹运动且能够自动避障或循迹。在手动工作模式下,小车能够根据智能手机的方向控制键进行行走。•小车前方有一摄像头,可以将拍摄所得的数据返回给PC端。二、总体设计•2.2系统框图•根据功能设计,我将智能小车细化地分为了以下几个模块:系统电路模块、小车行走控制模块、无线模块、摄像监控、意外控制模块。以下为智能小车的简要系统框图。三、硬件设计•3.1硬件设计电路•本项目采用的硬件平台是BASYS2开发板,将其作为主处理器使用。处理来自利用超声模块,无线模块的数据,同时控制L298N电机驱动芯片。•硬件电路设计如下:三、硬件设计•3.2硬件实际电路•本小车采用以FPGA为主体控制芯片,而超声模块,无线接收模块,电机驱动模块,以及PC端的无线串口模块为负载模块的结构。采用三电源,两层结构。6V(四节五号电池)供小车;超声模块供电,5V充电电池供BASYS2板供电;5VUSB移动电源供无线路由供电。四、软件设计•4.1自顶向下建模•智能小车的控制电路为主处理器模式,其中主处理器负责与PC端的通信,接收超声避障模块的处理数据,处理后控制小车的行走。主处理器Verilog自顶向下建模图如下所示:四、软件设计•4.2系统ISE框图•在所有的程序编写完毕后,可以在ISE中生成如下所示的寄存器级逻辑电路图,如下图所示分别为主处理器RTL级顶级电路图。:四、软件设计•4.2系统ISE框图•超声模块,WIFI模块,电机驱动模块的RTL级电路五、FPGA主控设计以及软件代码说明•5.1小车行走模块•1.综述•刚开始设计的小车为四轮四驱的,后来由于电机的原因,四轮电机转弯半径特别大,后来就改用三轮二驱的了,在小车后面加了一个万向轮。本组的小车采用控制速度差从而实现小车的转弯,轮子的速度是靠PWM波的占空比的不同来调节的。两轮速度相同且均正转实现小车前进,两轮速度相同且均反转实现小车后退,右轮速度大于左轮速度即可实现小车的左转,左轮速度大于右轮速度可实现小车的右转。五、FPGA主控设计以及软件代码说明•2.硬件设计本组采用一块以L298N芯片为核心的电机驱动模块来驱动两路电机。L298N一种高电压、大电流电机驱动芯片。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。五、FPGA主控设计以及软件代码说明五、FPGA主控设计以及软件代码说明•由此我们可以列出如下的一张表来表示L298N的输入信号和小车的行走状态的关系(其中IN1、IN2控制左电机,IN3、IN4控制右电机)五、FPGA主控设计以及软件代码说明•5.2小车超声蔽障模块•综述•要避障先得测距,而一般做测距有两种选择。一种是利用红外线测距避障,和前面循迹的红外对管原理一致,是利用发射出的红外编码与遇到障碍物反射回来而接收到的红外编码之间的时差实现障碍物的距离测量的。这种测距方案的优点是成本低、安装电路简单,缺点是红外对管能够检测的范围很有限,且信号不是十分强。另一种方案是利用超声波测距避障,即利用发射出的超声波与遇到障碍物反射回来而接收到的超声波信号之间的时差实现障碍物的距离测量。这种测距方案的优点是精度高,能够测量的距离较远。•综合考虑,我们选用超声波测距避障方案,根据超声波传感器的回送信号的长短来判断小车与障碍物之间的距离,若小车与障碍物间的距离小于安全距离,则小车右转以避开障碍物。五、FPGA主控设计以及软件代码说明•5.2小车超声蔽障模块•硬件设计•小车采用的是HY-SRF05超声波测距模块,其可提供2cm-450cm的非接触式距离感测功能,测距精度可达到3mm;模块包括超声波发射器、接收器与控制电路。该模块有VCC、TRIG、ECHO、OUT及GND5个引脚,小车中主要用的引脚为TRIG和ECHO,超声波模块的基本工作原理如下所述:采用IO口TRIG触发测距,给至少10us的高电平脉冲信号,此后模块会自动发送8个40khz的超声波信号,自动检测是否有信号返回;若有信号返回,•则通过IO口ECHO输出一个高电平给处理器,高电平持续的时间就是超声波从发射到返回的时间,由声速、高电平时间等参数即可算出小车与障碍物间的距离。。五、FPGA主控设计以及软件代码说明•5.2小车超声蔽障模块•超声波模块的时序图如下所示:五、FPGA主控设计以及软件代码说明•5.2小车超声蔽障模块•软件设计•在本模块中,我设计的是每隔100ms产生一个宽度为20us的脉冲trig用以触发超声波模块发送超声波,并在超声波模块发送出超声波信号之后开始检测ECHO信号,得到ECHO信号为高电平的时间,从而计算出小车与障碍物之间的相对距离,从而进行避障。在小车与障碍物之间的距离大于安全距离时,小车持续前进状态;在小车与障碍物之间的距离小于安全距离时,小车右转。•检测ECHO信号时长的方法是检测在ECHO信号为高电平这段时间内的脉冲数目,我在设计时也考虑到了一些值得注意的问题,比如说,在超声波模块刚发送完超声波时,不应立刻检查ECHO信号,因为两个超声波器件之间的距离隔得太近,有可能是发送模块发送出的超声波信号通过硬件接触串扰到接收模块了,所以这样可以避免这个问题。在ECHO的下降沿根据计数脉冲的大小来控制小车的行走状态。五、FPGA主控设计以及软件代码说明•5.3小车串口接收模块•硬件设计:•对于FPGA的串口通信,采用硬件电路模拟UART串口的时序,接收并发送数据。UART串口模块分为两部分,即分频模块获得相应串口的波特率和数据发送模块。•假设数据的波特率为p,则所需时钟的频率为16*p。以波特率p为9600为例,系统时钟为50MHz,则分频系数为50000000/(16*9600)=325.5,取整为325。通过计数方式分频。波特率分频模块代码见附录。•UART发送模块的功能:接收到发送指令后,把数据按UART协议输出,先输出一个低电平的起始位,然后从低到高输出8个数据位,接着是可选的奇偶校验位,最后是高电平的停止位。五、FPGA主控设计以及软件代码说明•5.3小车串口接收模块•UART接收模块的功能:时时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。通过模拟串口的时序即可编写出verilog串口通信代码。UART串口通信时序如下:发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧资料发送结束。五、FPGA主控设计以及软件代码说明•5.3小车串口接收模块•接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。•由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。•UART的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器CNT开始计数,当计数器为24=16+8时,采样的值为第0位数据;当计数器的值为40时,采样的值为第1位数据,依此类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为152时,采样的值即为奇偶位;当计数器的值为168时,采样的值为“1”表示停止位,一帧数据接收完成。五、FPGA主控设计以及软件代码说明•5.3小车串口接收模块•UART串口通信模块连接图如下:LogoThankyou

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功