机器人避障超声波测距系统软件.docx
《机器人避障超声波测距系统软件.docx》由会员分享,可在线阅读,更多相关《机器人避障超声波测距系统软件.docx(52页珍藏版)》请在冰豆网上搜索。
机器人避障超声波测距系统软件
机器人避障超声波测距系统(软件)
一绪论
1.1课题研究的背景及意义
随着科技的高速发展,一种新的、有蓬勃生命力的智能机器人已经出现,正在给人们的生活带来越来越多的惊喜,同时也使人们的生活变得越来越舒适和安逸。
智能机器人越来越受到企业和商业界的重视,这主要因其广大市场和巨大利润所至。
智能机器人的出现主要有两个原因:
一是劳动成本的上升;另一个是人们想摆脱令人烦恼枯燥的工作;如超市定点巡逻,可以利用机器人代替人们自身对整个超市进行定时定点巡逻监测。
要想机器人在移动过程中的路径准确,就必须将其安装测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。
[15]
本课题设计是基于AT89C52单片机进行的。
单片机技术的应用,是许多领域的技术水平和自动化程度得以大大提高。
当今世界也正面临着一场以单片机技术为标志的新革命,人们渴望迅速进入单片机应用与开发的大门。
随着人们物质文化的丰富,各种电子产品开发也越来越先进,越来越迅速。
在超声波测距领域,为缩短开发周期、提高测距精度,单片机因为具有集成度高、运算速度快、体积小、运行速度快、体积小、运行可靠、工耗低等无与伦比的优势,以得到了广泛的应用。
当前,微型控制器正向两个方向发展,一个是高功能,多功能方向。
从这个方向取得的成就使得微型控制器逐步代替了价格昂,功能优越的中小型机;另一个是价格低廉,功能单一的方向,这个方向的发展是微型控制器在生产领域、服务部门和日常生活得到越来越广泛的应用。
[1][11]
目前我国的机器人避障的测距的研究和开发还处于起步阶段,还没有产业化。
另外,本课题的研究内容也适用于无人自动化工厂的自动导航小车以及移动机器人的路径规划。
由于机器人应用从制造业向非制造业的扩展,自主移动机器人智能机器人在诸如野外作业、深海探测、以及一些人类本身所不能进入的有毒或高温环境的作业中,有着广泛的应用前景,因此,近年来,有关移动机器人导航避障及路径规划的研究越来越多,就此而言,本课题的研究也是很有意义的。
[16]
1.2机器人超声波测距的发展现状和应用
人类采用仿生学,人工发射出超声波。
目前,超声波已在民用及国防工业中。
例如:
用超声波探测海洋潜艇位置、鱼群以及确定海底暗礁等障碍物形状和位置。
利用超声波在固体里传播的时间确定物体的长度以及超声波在固体里遇到障碍物界面上的反射来确定物体的内部损伤(如裂缝、气孔及杂质等)位置,称之为无损探伤。
利用超声波测距辅助机器人确定机器人自身位置和环境识别,从而准确避开障碍物按照预先规划好的行进方向行进来完成预定任务。
在汽车防撞雷达中,由于超声波测距具有高数据率,能快速显示行驶汽车与障碍物之间距,提醒司机注意减速刹车,保证行驶安全。
另外,还应用于矿井探测、液面探测、大地测量以及水利工程等领域。
超声波是一种非接触式检测方式,和红外、激光及无线电测距相比,超声波具有不受光线影响,结构和操作简单,成本低等特点。
采用高精度视觉识别环境技术需要复杂的信息处理,且体积大,价格昂贵。
对于体积较小成本较低的机器人,这些特点尤为突出,相比之下,超声波测距的特点弥补了以上不足,在许多情况下能很好的完成探测任务。
因此超声波测距得以广泛的推广。
另外用超声波阵列来识别反射物的类型(如平面、边缘和墙角)为其新应用。
[3]
超声波虽然被大量用于各种工业领域,但它在低信噪比下测距精度较低,多个超声波测距条件下会产生相互影响,另外测距的盲区较大,这些固有的特点也限制其进一步广泛应用。
国外在提高超声波测距性能方面做了大量的研究,国内一些学者也做了相关研究。
对超声波的研究主要集中在提高超声波精度,减小多超声波测距时相互影响这两个方面。
超声波测距的精度主要取决于所测的超声波传输时间的精度和超声波在介质中的传输速度,两者中以传输时间的精度影响较大,所以大部分文献采用降低传输时间的不确定来提高测距精度。
目前相位探测法和声谱轮廓分析法或将两者结合起来的方法是主要降低探测传输时间不确定的方法。
国内厦门大学的童风研究了一种回波轮廓分析法。
该方法在测距中通过两次探测求取回波包络曲线来得到回波的起点,通过这样处理后超声波的传输时间的精度得到了很大的提高。
不过因为需要经过两次探测后才能得到回波的包络,且计算包络需要一些信息处理时间,这样盲区较大为2.5m,日本三菱电器公司的Tomonori等人是采用两种不同的发射频率来发射超声波,通过比较两种回波的相位来决定回波的起点,也提高了传播时间的精度,从而提高了超声波的测量精度。
意大利的Carullo等人介绍了一种自适应系统,采用特殊的发射波形来获得好的回波包络,同时采用对环境的噪声进行估测,设置一定的回波开门电平,且采用自动增益的控制放大器,通过这些措施来提高超声波的探测精度。
另外也有大量的文献研究采用数字信号处理技术和小波变换理论来提高超声波传播时间的精度,这些方法都取得了较好的效果,但是这些技术都是以牺牲实时性,增长处理时间同时增加传感器成本和体积为代价的,所以体积较大,价格较高。
在某些应用场合,不需要非常高的精度,但需要较小的体积和小的盲区且成本较低。
1.3本课题内容
本课题的内容按章节大致可以分四个方面:
(1)了解机器人避障超声波测距的研究背景,提出课题的研究意义,指出了用超声波测距比其他测距方法相比有其自身的优势:
技术难度相对不太大、指向性强、能量消耗缓慢、在介质中传播的距离较远、不受光线和被测对象颜色等的影响。
另外还指出了机器人超声波测距国内外的发展现状及应用。
(2)对测距技术进行研究,就当前比较流行的激光测距技术和超声波测距技术的原理进行探讨,比较两种测距的优缺点,针对本课题的实际,提出采用超声波测距的优势所在。
提出系统硬件设计方案。
(3)简单介绍了单片机的编程语言—C51语言。
然后针对本课题提出软件编程方案:
采用模块化设计,整个程序的编写分主程序、发射子程序、中断接收子程序、定时子程序等模块进行。
并给出主程序、外部中断和定时内部中断的程序流程图。
同时根据模块化的设计方案,编写出主程序、发射子程序、中断接收子程序、定时子程序的源代码。
还对数字滤波以及89C52的通信编程进行一些探讨。
二方案论证
目前,用于机器人移动过程中的测距技术主要有两种,即激光测距技术和超声波测距技术。
本章就两种常用的测距技术进行比较,然后选取针对本课题的最佳测距技术。
2.1激光测距方案
一个典型的激光测距系统应具备以下几个单元:
激光发射单元,激光接收单元,距离计算与显示单元,准直与聚焦单元,如图2—1所示。
系统工作时,激光由发射单元发射,以光速到达目标物后反射回来,被接收单元接收,通过距离计算与显示单元得到目标物距离。
图2—1激光测距系统原理图
根据激光测距的基本原理,激光测距技术可以分为激光飞行时间测距和非飞行时间激光测距两类,其中飞行时间测距根据所发射激光状态的不同,可分为脉冲激光测距和连续波激光测距,后者根据起止时刻标识的不同又分为相位激光测距和调频激光测距。
非飞行时间激光测距技术是指在测距时并不像飞时测距法直接或者间接获得激光飞行时间,而是通过光子计数或者数学统计的方法来得到目标物距离。
激光测距方法中被广泛应用的是脉冲激光测距和相位激光测距,其他测距方法的应用范围较为有限,仅在特定条件下应用。
[14]
2.2超声波测距方案
超声波测距技术是一种有源非接触性测距技术,是利用超声波在空气中的定向传播和固体反射特性(纵波),通过接收自身发射的超声波反射信号,根据超声波发出及回波接收时间差及传播速度,计算出传播距离从而得到障碍物到机器人的距离。
由于超声波传感器成本低廉、采集信号速度快、距离分辨率高、质量轻、体积小、易于装卸等优点。
并且超声波传感器在采集环境信息时不存在复杂的图像匹配技术,不需要通过大量的计算而获得距离数据,因此其测距速度快,实时性好、同时超声波传感器不易受到天气条件、环境光照及障碍物阴影、表面粗糙度、裂缝等外界环境条件的影响。
超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出就可以计算出发射点距障碍物的距离:
S=Ct/2
由于超声波也是一种声波,其声速C与温度有关,表2—1列出了几种不同温度下的声速。
如果温度变化不大,则可认为声速是基本不变的。
如果测距精度要求很高,则应通过温度补偿的方法加以校正。
温度(0C)
-30
-20
-10
0
10
20
30
100
声速(米/秒)
313
319
325
323
338
344
349
386
表2—1声速与温度关系表
超声波是一种一定频率范围的声波。
它具有在同种媒介中以恒定速率传播的特性,而在不同的媒质的界面处,会产生反射现象。
利用这一特性,就可以根据测量发射波与反射波之间的时间间隔,从而达到测量距离的作用。
其主要有三种测距方法:
1.相位检测法
相位检测法虽然精度高,但检测范围有效。
2.声波幅值检测法
声波幅值检测法易受到反射波的影响。
3.渡越时间检测法(TOF)
渡越时间检测法的工作方式简单、直观,在硬件控制和软件设计上都非常容易实现。
其原理为:
检测从发射换能器发生的超声波,经气体介质传播到接收换能器的时间,即渡越时间。
时间渡越式超声波传感器的工作原理为渡越时间与气体介质中的声速相乘,便可得到超声波发射器和接收器之间的距离。
[12][14]
由于在设计机器人避障及超声波测距上主要考虑控制和实现的简便性。
从上面讨论可知:
采用渡越时间检测法的超声波传感器是设计机器人避障及超声波测距的最佳选择。
2.3设计方案的确定
激光测距技术可以达到极远的测程,但是由于技术难度较高,成本较高,因此被广泛应用于战术前沿测距、导弹运行轨道跟踪、以及人造卫星、地球到月球距离的测量等。
超声波测距技术具有成本低、技术难度相对不太大、指向性强,能量消耗缓慢的优势,而且超声波不受天气条件、环境光照及障碍物阴影、表面粗糙度、裂缝等外界环境条件的影响,因而超声波也经常用于距离的测量。
结合本课题的实际应用和两种测距技术的优缺点,本课题最终决定采用超声波测距技术。
2.4小结
本章主要介绍了激光测距和超声波测距的工作原理,并且分别比较了两种测距技术的优缺点。
结合本课题的实际应用情况,由于机器人移动过程中面对的障碍物会局限于小范围内,因此本课题选择超声波测距技术,况且超声波测距技术可以达到课题需要的精度要求。
三硬件电路设计
本部分主要由本组的另一位成员完成,这里仅进行概括性的论述。
3.1测距电路的硬件系统(总电路图见附件2)
图3—1所示测距电路方框图
它主要由超声波发射与接收电路、多路选择开关电路、多级信号放大电路和以AT89C52为主芯片的控制电路组成,详细内容见硬件部分。
3.2超声波发送电路
超声波发送电路包括超声波信号产生电路、多路选择开关电路及发送换能器等部分。
超声波换能器振子频率为40KHz,它与电路的振荡频率一致。
电路由40KHz振荡电路与超声波激励电路组成,振荡电路采用74HC00中三个与非门与电容和电阻构。
将信号产生电路与单片机的P1.4相连,控制发送脉冲宽度。
振荡电路产生的超声波信号输出到三极管的基极,经三极放大及耦合升压后,送超声波换能器向空间发射超声波,持续发射250us。
耦合管原、副边的匝数比为1:
20,当发射超声波的时候,换能器两端的Vp-p值接近100V,有效地增加了超声波换能器的发射能量。
3.3超声波接收电路
超声波接收电路由限幅、多路电子开关、放大、滤波、整流以及比较等几部分组成。
(1)限幅电路
当反射距离的远近程度相差很大时,超声波换能器产生的回波信号的幅度也相差甚大。
为了能有效处理远距离的微弱回波信号,放大部分的总增益比较高。
然而当反射距离很近时,回波信号幅度很大,如果直接传送到放大处理电路,可能使整个系统过渡饱和,因此在前端需加限幅电路。
(2)多路电子开关
因为有4路超声波信号,所以采用CD4052多路电子开关。
CD4052有A0、A1两个二进制控制输入端和INH输入,当INH输入端为"1"时,所有通道截止。
二位二进制输入信号选通4对通道中的一对通道,可连接该输入端至输出。
CD4052的INH引脚连至AT89C52的P1.3引脚,A0引脚连至AT89C52的P1.6引脚,A1引脚连至AT89C52的P1.7引脚.
(3)交流耦合放大电路
放大电路是超声波回波信号的处理电路中关键的部分之一。
为了达到3米的有效测距范围,对远处返回的微弱的回波信号必须给予足够的放大,因此整个系统的最大增益不小于1万倍。
(4)滤波电路
为了使整个系统的性能稳定,必须在中间级加有源带通滤波电路。
滤波电路设计是最关键的一个环节,也是整个系统设计中最难的环节,此电路中各无源阻容参数的选取既要满足设计通带的要求,还要避免整个系统的自激振荡。
(5)运放精密整流电路
一般的整流电路采用两个二极管或四个二极管整流,这样要损失0.7或1.4伏的二极管压降。
如果想把一个要测量的信号由交流变为直流,那么这压降会使测量变为毫无意义。
或者想把一个要测量的小信号(小于0.3伏)由交流变为直流,即使使用锗二极管,都将得不到信号。
按照设计要求,为了能够接受到经放大后的回波信号,应该采用运放进行精密整流。
(6)处理串扰问题的电路
由于发射与接收都是同一个传感器,发射超声波的时候,40kHz的方波直接经过电阻输送到接受信号处理电路,使单片机系统误认为已经接收到回波(虚拟反射波),这一现象称为“串扰问题”。
“串扰问题”使单片机系统误认为已经接受到回波信号,导致系统不能正常工作,为了解决“串扰”问题,设计这样的电路。
其工作原理是:
在信号处理电路最后一级比较电路中,Vout为来自精密整流的输出端。
当单片机外部引脚P1.4发射40kHz脉冲群时,单片机P1.5端保持15ms低电平,即运放的同相输入端保持+8V高电压,此电平高于运放反相端的输入电压,可靠地保证运放输出为高电平,不会向CPU申请中断,这样解决了“串扰”问题。
但从发射开始一直到“虚假反射波”结束这段时间,由于强制比较电路输出高电平,将引起了30cm的测距“盲区”。
四软件程序设计
AT89C52单片机和其开发应用系统具有语言简洁、可移植性好、表达能力强、表达方式灵活、可进行结构化设计、可以直接控制计算机硬件、生成代码质量高、使用方便等诸多优点。
由于机器人策略算法复杂,为了便于上、下位机之间的通信,超声波测距系统软件采用C51语言编写。
(总程序见附录1)
4.1AT89C52单片机的FLASH的编程
AT89C52单片机内部有8K字节的FLASHPEROM。
这个FLASH存储阵列出厂时已处于擦除状态,用户随时可以对它进行编程。
编程接口可接收高电平或低电平的允许编程信号。
低电压编程模式适合于用户在线编程系统,而高电平编程模式可与通用EPROM编程器兼容。
其引脚图如下:
图4-1AT89C52引脚
AT89C52单片机中,有些属于低电压编程方式,而有些则是高电平编程方式,用户可从芯片上的型号和读取芯片内的签名字节获得该消息。
AT89C52的程序存储器阵列是采用字节写入方式编程的,每次写一个字节,要对整个芯片内的PEROM程序存储器写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。
编程前须按表4—1所示设置好数据及控制信号,AT89C52编程方法如下:
1址线上加上要编程单元的地址信号。
2在数据线上加上要写入的数据字节。
3激活相应的控制信号。
4在高电压编程方式时,将EA/VPP端加上+12V编程电压。
每对FLASH存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。
每个字节写入周期是自身定时的,通常约为1.5MS。
重复1—4步聚,改变编程单元的地址和写入的数据,直到全部程序编写完成。
[1][3]
方式
RST
PSEN
EA/VPP
P2.6
P2.7
P3.6
P3.7
写代码数据
H
L
H/12V
L
H
H
H
读代码数据
H
L
H
L
L
H
H
写加密位
BIT1
H
L
H/12V
H
H
H
H
BIT2
H
L
H/12V
H
H
L
L
BIT3
H
L
H/12V
H
L
H
L
片擦除
H
L
H/12V
H
L
L
L
读签名字节
H
L
H
L
L
L
L
表4—1FLASH存储器编程真值表
4.2单片机C51语言的简介
用于单片机软件编程的语言有面向单片机的C语言和汇编语言。
C是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生紧凑代码,可以进行许多机器级函数控制。
汇编语言是用操作内容的英文词的缩写符号代替二进制编码,用符号代替地址或操作的数据。
与汇编相比,C语言有如下特点:
1.对单片机的指令系统不要求了解,仅要求对8051的存储器有初步了解;
2.寄存器分配,不同存储器的数据类型等细节可由编译器管理;
3程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;
4.具有将可变的选择与特殊操作结合在一起的能力,改善了程序的可读性;
5.关键字与运算函数可用近似人的思维过程方式使用;
6.编程与程序调试时间显著缩短,从而提高效率;
7.提供的库包含许多标准子程序,具有较强的数据处理能力;
8.已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。
因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。
单片机教学中的程序设计也应该以C语言为主,汇编语言为辅。
对汇编语言掌握到只要可以读懂程序,在时间要求比较严格的模块中进行程序的优化即可。
采用C语言也不必对单片机和硬件接口的结构有很深入的了解,编译器可以自动完成变量的存贮单元的分配,编译者就可以专注于应用软件部分的设计,大大加快了软件的开发速度。
C语言是一种通用的计算机程序设计语言,在国际上十分流行,它既可用来编写计算机的系统程序,也可用来编写一般的应用程序。
以前计算机的系统软件主要是用汇编语言编写的,对于单片机应用系统来说更是如此。
由于汇编语言程序的可读性和可移植都较差,采用汇编语言编写单片机应用系统程序的周期长,而且调试和排错也比较困难。
为了提高编制计算机系统和应用程序的效率,改善程序的可读性和可移植性,最好采用高级语言编程。
一般的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作、移位操作等)的功能。
而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,并且采用C语言编写的程序能够很容易地在不同类型的计算机之间进行移植,因此C语言的应用范围越来越广泛。
单片机C51语言有以下优点:
1、可进行结构化程序设计。
C语言是以函数作为程序设计的基本单位的,C语言程序中的函数相当于一般语言中的子程序。
C语言对于输入和输出的处理也是通过函数调用来实现的。
各种C语言编译器都会提供一个函数库,其中包含有许多标难函数,如各种数学函数、标准输入输出函数等。
此外C语言还具有自定义函数的功能,用户可以根据自己的需要编制满足某种特殊需要的自定义函数。
实际上C语言程序就是由许多个函数组成的,一个函数即相当于一个程序模块,因此语言可以很容易地进行结构化程序设计。
2、可以直接操作计算机硬件。
C语言具有直接访问机器物理地址的能力,美国FranMn公司的C51编译器可以直接对805l单片机的内部特殊功能寄存器和I/0口进行操作,可以直接访问片内或片外存储器,还可以进行各种位操作。
3、生成的目标代码质且高。
众所周知,汇编语言程序目标代码的效率是最高的,这就是为什么汇编语言仍是编写计算机系统软件的主要工具的原因。
但是统计表明,对于同一个问题,用C语言编写的程序生成代码的效率仅比用汇编语言编写的程序低10—20%,美国FrankltR软件公司的C51编译器,能够产生及其简洁形式、效率极高的程序代码,在代码质量上可以与汇编语言程序相媲美。
[11]
4.3超声波测距系统的软件原理
基于AT89C52单片机设计的超声波测距系统,采用模块化设计,由主程序、发射子程序、中断接收子程序、定时子程序(显示子程序)等模块组成。
主程序流程图如图4—2所示,先进行系统初始化,然后调用定时中断子程序、定时中断子程序的目的是控制发射和接收超声波,如接收到回波信号则调用外部中断子程序得出超声波往返时间和环境温度,计算出距离信息,然后定时调用显示程序等。
N
Y
图4—2主程序流程图
中断服务程序包括内部定时中断和外部INT0、INT1中断服务程序。
定时设置为40ms中断一次,其任务是每隔40ms产生4个40kHz的方波作为超声脉冲并按顺序送到四个通道的超声换能器。
定时中断服务程序流程图如图4—3所示,当主程序调用定时中断程序时,定时程序开始初始化,定时程序初始化完成定时器工作方式的设置。
AT89C52单片机有三个定时器:
定时器0、定时器1、定时器2。
定时器0和定时器1的工作方式与AT89C51单片机相同。
定时器2是一个16位定时/计数器,它即可以当定时器使用,也可以作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。
定时器2有三种工作方式:
捕捉方式,自动重装(向上或向下计数)方式和波特率发生器方式,工作方式有T2CON的控制位来选择。
本课题的选用的定时器2的自动重装方式,即定时器自动装载40MS的定时时间,在中断执行子程序的工程中自动向下计数。
在完成定时器的初始化以后,发射超声波,然后判断三方是否发射完成,如果完成则停止发射,没有完成的话继续发射超声波。
N
Y
图4—3定时中断服务程序流程图图4—4外部中断服务程序
外部中断服务程序(如图4—4所示)分INT1和INT0中断程序,INT1中断子程序读取温度传感器的A/D转换结果,并将相应数据换算为环境温度值t。
INT0停止T1计数,根据T1读数计算渡越时间T,并进行距离的计算。
先计算超声波在当前环境下传播速度:
C=331.4
,再计算距离:
D=CT/2,并将计算结果送入显示缓冲区。
当主程序调用外部时,进入外部程序入口,然后停止外部中断,根据INT1读取温度传感器的A/D转换数据,INT0使计数器计数停止,根据计数器的数值计算出渡越时间,然后调用函数完成距离的计算,将计算结果送给显示缓存器。
4.4数字滤波
4.4.1数字滤波必要性与优点
在工业过程控制系统中,由于工作环境比较恶劣,干扰源比较多,如环境温度、电场、磁场,所以在模拟系统中,为了消除干扰,常采用RC滤波电路。
而在单片机组成的自动检测系统中,为了较少对采样值的干扰,提高系统的可靠性,则常常采用数字滤波的方法。
所谓数字滤波,即通过一定的计算程序,对采样信号进行平滑加工,提高其有用信号,消除或减少各种干扰和噪音,以保证单片机系统的可靠性。
数字滤波器与模拟RC滤波器相比,具有如下优点:
1、无需增加任何硬设备,只要在程序进入数据处理和控制算法之前,附加一段数字滤波程序即可。
2、由于数字滤波器不需增加硬设备,所以系统可靠性高,不存在阻抗匹配问题。
3、模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。
4、可以对频率很低的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。
5、使用灵活、方便,可根据需要选择不同的滤波方法,或改变滤波器的参数。
正因为数字滤波器具有上述优点,所以在计算机控制系统中得到广泛的应用。
4.4.2常用的数字滤波
(1)程序判断滤波
程序判断滤波的方法,是根据生产经验,确定出两次采样输