[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc

上传人:音乐台 文档编号:1991297 上传时间:2019-01-28 格式:DOC 页数:72 大小:2.36MB
返回 下载 相关 举报
[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc_第1页
第1页 / 共72页
[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc_第2页
第2页 / 共72页
[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc_第3页
第3页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc》由会员分享,可在线阅读,更多相关《[计算机硬件及网络]基于连续油管无损检测技术的管道机器人设计.doc(72页珍藏版)》请在三一文库上搜索。

1、 “湖南省大学生创新性实验”基于连续油管无损检测技术的管道机器人设计 目 录1、 创新性实验心得.32、 实验原理过程.7第1章 绪论.8第2章 IAR开发环境的搭建.13第3章 机器人底层驱动程序的实现.15第4章 管道搜索算法的实现. .24第5章 无线模块NRF24L01间的通信.28第6章 PC串口上位机的程序实现.34第7章 系统调试及运行结果.363、 参考文献.384、 附录 1、整体硬件电路图.39 2、实验代码.41 3、实验报告.55 4、会议记录一.61 5、会议记录二.62 6、电脑鼠相关知识.63 7、获奖证明.68创新性实验心得体会(陈力)一年的创新性实验项目结束了

2、,我们的实验成果也到了展示的时候。在这一年中,我们完成了项目内的所有内容,同时还扩展了无线通信模块,再一次提高了整个系统的水准。自项目开题以来的整个实验过程中,我们遇到过不少的问题和麻烦,但是在麻烦的过程中我们学到了许多解决问题的方法,通过老师、同学、网络等方式等多元的方式寻找一个问题的答案和解决问题的思路,并且在有事还找不到答案的情况就,就只能依靠自己的分析和判断力来解决问题了。实验中,我们学习了ARM Coterx M3内核的LM3S615芯片的构架和具体的编程。初期学习这些东西还是有些费力的,因为相对于STM32这些流行的M3芯片来说,这方面的学习资料实在是太少了,只能依靠网上下载的例程

3、来学习这款单片机的程序设计流程。其次,我们还需要学习Visual Basic编程语言,虽然接触过C#、C+等编程语言,但是VB与这些面向OOP语言来说语法有很大不同。幸运的是VB这中编程语言简单易懂,在熟悉了基本的语法之后就得开始编写上位机部分的代码了。对于已经非常熟悉的ST89C51系列的单片机来说,自己已经是得心应手了,没有什么障碍就可以完成这部分程序的设计。在整个过程中,我体会最深的是:到底是硬件问题还是程序问题?前期,我们在调节机器人红外传感器时,花了很久的时间都没能调出来,程序修改了很久,尝试了很多中方式,也走了很多弯路,最终发现是实验室网络设备的干扰导致红外传感器发生了误判。红外线

4、的频率如此之高为什么会对其造成怎么重要的干扰呢?最终发现其调制频率的中心频率是38KHz,这样以来就有了解释了。于是,我们只有更换实验室了。后期在调试无线模块的程序时,发现接收端的丢包率很高,并且有时能接收到数据而有时无法接收数据。经调试判断,接收端没有问题,问题就出现在了发送端,同样就修改过多次程序,调试几天未果之后,就要准备放弃使用NRF24L01这款无线模块,更换方案时,不甘心的调了一下程序,结果发现是按键出了问题,只能感叹,又是“硬伤”。在PC上,没有出现过程序需要调试很久的情况,最终也完成了整个系统的设计。在整个过程中,我养成了很好的程序编写习惯,及时保存更新的代码,并标注说明,这对

5、一个程序员来说是重中之重了。创新性实验收获与体会(王潋)凭着一股执着的信念,抱着满腔的热情,更有初生牛犊不怕虎的勇气,我们实验成员三人走到了一起,展开了创新性实验为期一年多的探索之旅。对于能够参加这一次实验,我感到十分荣幸。从项目的建立到初期的设计,从中后期产品的开发到成品的完成,我完整地参与了整个项目的流程。这是我第一次参与这样的项目,这不但使我详细地了解到一个项目开发的来龙去脉,更让我的知识从纸上谈兵的程度进步到可以用于实践,既培养了兴趣,同时也感到学有所用的骄傲感。我们此次的创新性实验是设计基于嵌入式系统的管道机器人,这就要求对陌生的嵌入式知识和算法展开深入学习。由于是初次接触这些知识,

6、难免会觉得既新鲜又困难,而我们正是带着对知识热切渴望的心情,不断的学习,从搜索学习文献到基本入门,从修改算法却总是出错到小机器人终于走出了一条正确的道路,这其中的种种都包含着我们的兴奋和失落,可以说是“痛并快乐着”。在研究方面,最深的体会就是要善于勤于思考,主动动手动脑。创新实验不是基础课上的实验,只要按着老师讲的步骤做就行了。做的课题对于我们来说,可能是一个没有接触过的新领域,没有人告诉我们一步步该怎么做。需要自己去找文献查资料,去弄明白实验的原理,然后确定要创新的方向。按照这个方向一点点努力,所以每一步都需要独立思考。其中会遇到很多困难,这个时候除了寻找帮助,最重要的还是自己思考。 在创新

7、方面,首先要确定创新的方向和目标。方向和目标是贯穿整个实验的核心,只有明确方向,围绕这个方向努力下去,才可能有结果。创新点可以从很多方面确定,不一定是很高深很前沿的东西。只要不是照搬别人已经做过的东西,在自己力所能及的范围内就好。当然,能做出更大的成就最好。有时思维可能会出现“停滞不前”的现象,好像只能思考到这个程度了。这时要用发散思维多方位的考虑,作出大胆的猜测。但要始终围绕创新点,不能偏离主题,也不能随意猜测,而要有根据有目的地做出假想,再一步步实践去论证自己的猜测。其实,每一个伟大的成就都是这样“平凡”地一步步得出来的。同时,做创新实验有一个很大的好处就是可以培养团结合作的能力。如果说学

8、习知识是一个人的事,那么创新实验就必须在多人的合作下才能完成。合作不但可以成倍地提高工作的效率,更能培养组员相互之间的默契,增进彼此之间的友情。经过参与这一次项目实验,我感到了创新实验的乐趣,提高了动手能力,培养了合作的意识,增强了实践的能力,更重要的是交到了不少良师益友,可以说是受益颇多啊。创新性实验心得体会(王倩)2011年度,我们获得了湖南师范大学研创新性实验计划项目,指导教师为江沸波老师。现在,将近一年的“大学生创新性实验计划”就要结题了。回想起过去一年里参加创新实验的过程, 从开始的寻找课题到申请立项撰写项目申请书,到查阅相关参考文献, 确定实验原理、实施方案与寻找创新点; 并制定详

9、细的研究方案和步骤。大学生创新性实验计划项目实施强调自主性、探索性、实践性和协作性,遵循“兴趣驱动、自主试验、重在过程”的原则。注重创新性实验项目的实施过程讲究长远效益,强调项目实施过程中在创新思维和创新实践方面的收获,重点培养学生的创新意识和创新能力,不急功近利,不为成果而设计,重在实施过程中得到的锻炼和培养,在整个过程中,我们不仅学到了实验本身所带来的动手能力以及实践能力的提高,而且学到了认真仔细、坚持不懈,善于思考总结的可贵精神,并对“大学生创新性实验计划”有了更深入的体会。 在研究方面,最深的体会就是要善于勤于思考,主动动手动脑。创新实验不是基础的实验,只要按着老师讲的步骤做就行了。做

10、的课题对于我们来说,可能是一个没有接触过的新领域,没有人告诉我们一步步该怎么做。需要自己去找文献查资料,去弄明白实验的原理,然后确定要创新的方向。按照这个方向一点点努力,所以每一步都需要独立思考。其中会遇到很多困难,这个时候除了寻找帮助,最重要的还是自己思考。 在创新方面,首先要确定创新的方向和目标。方向和目标是贯穿整个实验的核心,只有明确方向,围绕这个方向努力下去,才可能有结果。创新点可以从很多方面确定,不一定是很高深很前沿的东西。只要不是照搬别人已经做过的东西,在自己力所能及的范围内就好。当然,能做出更大的成就最好。有时思维可能会出现“停滞不前”的现象,好像只能思考到这个程度了。这时要用发

11、散思维多方位的考虑,作出大胆的猜测。但要始终围绕创新点,不能偏离主题,也不能随意猜测,而要有根据有目的地做出假想,再一步步实践去论证自己的猜测。其实,每一个伟大的成就都是这样“平凡”地一步步得出来的。最后感谢老师在我们实验过程中的指导与帮助。实验原理及过程第一章 绪论第二章 IAR开发环境的搭建第三章 机器人底层驱动程序的实现第四章 管道搜索算法的实现第五章 无线模块NRF24L01间的通信第六章 PC串口上位机的程序实现第七章 系统调试及运行结果第一章 绪论1.1 课题研究的目的与前景连续油管(CT)是由若干段长度百米以上的柔性管通过对焊或斜焊工艺焊接而成的无接头连续管,长度一般达几百米甚至

12、几千米,又被称为挠性油管、蛇形管或盘管,是一种由钢带成型,经电阻直缝焊接(ERW)后得到的焊接管。目前,连续油管技术己经广泛应用于天然气和石油等能源的运输作业中。由于连续油管(CT)长度较长,运输环境复杂,因此也引起了复杂多样的管道损伤形式,其主要包括:腐蚀、裂纹和焊接缺陷等。在连续油管发生损伤时,如能快速的检测损伤的区域并采取相应的补救措施,就可使油管的使用寿命大大的增加,并且降低运输过程中所造成的损失。因此无损检测技术的研究对连续油管的应用具有重大的意义。在连续油管的无损检测技术中,管道机器人的研究有着广泛的应用前景和社会需求。管道机器人是一种可在管道内、外行走的机电一体化装置, 它可以携

13、带1种或多种传感器及操作装置(如CCD摄像机位置和姿态传感器、超声传感器、涡流传感器、管道清理装置、管道接口焊接装置、防腐喷涂装置等操作装置) , 在操作人员的远距离控制下进行一系列的管道检测维修作业。一个完整的管道机器人系统应由移动载体(行走机构)、管道内部环境识别检测系统(操作系统)、信号传递和动力传输系统及控制系统组成。其中移动载体和管道内部环境识别检测系统是管道机器人系统的核心部分。随着油气工业的发展, 管道机器人技术将被更加广泛地应用在石油工业管道上。随着计算机、传感器、控制理论及技术的发展, 近些年来, 人们开始研究采用具有自主动力的机器人来进行管道检测。这种管道机器人能在管道中自

14、主行走, 可以准确接近管道的故障截面, 获得故障状况的可靠信息, 精确到达操作位置。管道机器人技术正处在发展的初级阶段, 尽管国外一些公司已推出产品, 包括视像探测装置、井下拖拉机等, 但其井下探测的工作质量, 井下动力与井下操作的可靠性, 对不同类型井通道的适应性等方面都需要进一步研究和发展。油田与石化企业的各种管道机器人技术, 无论是在管道内部工作还是在管道外部工作的机器人, 都处于刚刚起步阶段。管道机器人系统是一种融合了多种先进技术的机电一体化装置, 随着现代制造技术、通信技术、控制技术、传感技术、智能技术等技术领域的发展, 必将推动机器人技术在油气管道技术领域中的广泛应用与发展。1.2

15、 ARM处理器ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。ARM微处理器的几个系列:ARM7系列、ARM9系列、 ARM9E系列、 ARM10E系列、 SecurCore系列、Intel的XScale系列、Cortex系列。本次微处理器采用LM3S615,LM3S615是美国Luminay公司开发的32位单片机,基于ARM Cortex-M3内核。Cortex-M3内核主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。Cortex-M3处理器采用纯Thumb2指令的执行方式,使得这个具有32位高性能的ARM

16、内核能够实现8位和16位的代码存储密度。ARM Cortex-M3处理器是使用最少门数的ARM CPU,核心门数只有33K,在包含了必要的外设之后的门数也只有60K,使得封装更为小型,成本更加低廉。Cortex-M3采用了ARM V7哈佛架构,具有带分支预测的3级流水线,中断延迟最大只有12个时钟周期,在末尾连锁的时候只需要6个时钟周期。同时具有1.25DMIPS/MHZ的性能和0.19mW/MHZ的功耗。基于 ARMv7 架构的 Cortex-M3 处理器带有一个分级结构。它集成了名为 CM3Core 的中心处理器内核和先进的系统外设,实现了内置的中断控制、存储器保护以及系统的调试和跟踪功能

17、。这些外设可进行高度配置,允许 Cortex-M3 处理器处理大范围的应用并更贴近系统的需求。目前 Cortex-M3 内核和集成部件(右图中所示)已进行了专门的设计,用于实现最大存储容量、最少管脚数目和极低功耗。内核流水线分3个阶段:取指、译码和执行。当遇到分支指令时,译码阶段也包含预测的指令取指,这提高了执行的速度。处理器在译码阶段期间自行对分支目的地指令进行取指。在稍后的执行过程中,处理完分支指令后便知道下一条要执行的指令。如果分支不跳转,那么紧跟着的下一条指令随时可供使用。如果分支跳转,那么在跳转的同时分支指令可供使用,空闲时间限制为一个周期。 Cortex-M3 处理器是一个 32

18、位处理器,带有 32 位宽的数据路径,寄存器库和存储器接口。其中有 13 个通用寄存器,两个堆栈指针,一个链接寄存器,一个程序计数器和一系列包含编程状态寄存器的特殊寄存器。其支持两种工作模式(线程(Thread)和处理器(Handler)和两个等级的访问形式(有特权或无特权),在不牺牲应用程序安全的前提下实现了对复杂的开放式系统的执行。1.3 基于连续油管无损检测技术的管道机器人设计创新点管道机器人技术是集无损检测技术、机器人技术、计算机技术、数据分析和处理等多种技术于一体的高新技术。它是驱动器、传动装置、传感器、控制器、电源、计算机等装置和技术的集成。管道机器人可沿管道内壁自动行走、寻路和避

19、障,并通过携带的传感器自动完成管道内壁的探伤(腐蚀、裂纹和焊接缺陷等)等作业。本项目在现有研究背景的基础上拟设计一种基于嵌入式系统的管道机器人,该机器人采用多个红外传感器来检测管道内壁的情况,采用智能算法在管道作业的过程中行走、寻路和避障,无需人工干预。当检测到内壁损伤时,管道机器人将检测位置记录在设备的存储器中,并继续检测,直至遍历所有的管道。该方案的创新点如下:1. 寻路智能化:管道机器人的设计以智能小车为基础,按照实际管道测试的要求搭载多个红外传感器,使用ARM cortex-M3作为小车的主控芯片,并编制相应的路径搜索算法来实现管道机器人在管道内部自动的行走、寻路和避障,整个过程无需人

20、工干预,具备较高的智能化水平。2. 探伤智能化:目前低成本的无损管道检测分超声波检测和红外线检测两种,其方案均已较为成熟。但超声波在空气中衰减很快,检测时一般要有声波的传播介质(如水、油等),并且要求被检表面光滑,因此本项目采用灵活性更大的红外线检测方案,当管道机器人在管道内部检测时,如果管道内壁存在损伤(腐蚀、裂纹和焊接缺陷等),则红外接收器所接收到的反射信号的角度和大小均将发生变化,此时小车可将检测位置记录在设备的存储器中并继续前进,检测完成后,工作人员只需调出存储器中的数据即可知道损伤的位置,实现了探伤的智能化。3. 操作灵活,扩展性好:管道机器人的设计采用标准架构的ARM芯片,便于程序

21、的设计与升级。系统设计好后,可通过管道检测的实际情况来不断调整红外检测的参数,从而减少误测现象的发生,同时通过优化寻路算法来提高系统的检测速度。1.4基于连续油管无损检测技术的管道机器人设计的实现管道机器人的硬件设计部分:管道机器人的设计采用铝制车架,重量轻,散热性能好。采用双步进电机,车轮直接安装在电机轴上,机械结构简单安装方便。可在电机的控制下在管道中完成多角度转弯。管道机器人的微处理器采用LM3S615。LM3S615是美国Luminay公司开发的32位单片机,基于ARM Cortex-M3内核。LM3S615具有运算速度快,中断响应快,外设丰富等优点,保证了机器人可以具有很高的智能性。

22、另外该处理器提供了丰富的函数库,可通过C语言实现各种智能算法的设计和开发。管道机器人使用多组红外传感器用于检测管道墙壁信息,分别用于检测左、左前、前、右前和右等多个方向的墙壁信息。左前和右前传感器用于调整管道机器人的姿态,使管道机器人运行时行走在管道中心。使用多组可调电阻控制红外信号发射强度,调整可见距离。信号采用载波调制,增强抗干扰性。管道机器人使用双步进电机驱动。使用步进电机不需要减速装置等,可简化机械结构。同时步进电机控制简单,运行平稳,能够有效的提高管道机器人的运动性能管道机器人使用数码管或液晶屏作为显示接口,可调用并显示存储器内存储的检测位置信息,同时管道机器人使用大容量的锂电池供电

23、,保证其运行监测的时间长度。管道机器人的软件设计部分:路径搜索算法: 管道机器人在管道检测中是无人操作及干预的,因此需要设计路径搜索算法来引导管道机器人遍历油管的每一个部分。常见的搜索算法包括:右手法则、左手法则和中心法则等,本系统暂拟定使用右手法则,其搜索过程如下:(1)管道机器人顺着右边走,只要右边存在没有走过的入口则向右转。(2)有多个未走过的入口坐标入栈(3)无未走过入口时返回栈顶坐标格方向转换算法:管道机器人在管道检测中存在则绝对与相对两种类型的方向,其中绝对方向的参照物是整个油管系统,相对方向的参照物是管道机器人自身。其相互关系的转换算法如下表所示:相对方向绝对方向管道机器人前方D

24、ir管道机器人右方(Dir + 1)% 4管道机器人后方(Dir + 2)% 4管道机器人左方(Dir + 3)% 4管道红外探伤的数据模型:对不同损伤的红外信号返回值进行统计和分析,将其特征定义在检测程序中,提高检测的准确度。第二章IAR开发环境的搭建2.1 安装IAR开发工具,本系统开发使用的是4.22版本。2.2 安装LM LINK 驱动。将LM LINK的USB接口连接到电脑上,在设备管理器中找到未能识别的USB设备,点击更新驱动程序,安装光盘里下“FTDI”的驱动。安装完成后在“设备管理器”可以看到如图 2.1 所示的信息,这表示驱动已经成功的安装 好了。图 2.12.3 安装Lum

25、inary驱动库 从Luminary官网下载最新驱动库,保存到本地(F盘) 根据数据手册的要求安装该驱动库IAR安装目录下1.将F:PDL-LM3S-1928DriverLibewarm目录下的“standalone.xcl”文件复制一份,然后粘贴到“C:Program FilesIAR SystemsEmbedded Workbench 4.0 Kickstartarmconfig”目录下。并改名为“lnk_LM3.xcl”。2.在“C:Program FilesIAR SystemsEmbedded Workbench 4.0 Kickstartarminc”下, 新建一个“Luminar

26、y”文件夹,复制驱动库头文件,然后粘贴到新建的“Luminary”文件夹下。3.在“C:Program FilesIAR SystemsEmbedded Workbench 4.0 Kickstartarmlib”建一个“Luminary”文件夹,F:PDL-LM3S-1928DriverLibsrcewarmExe下的“driverlib.r79”复制到该目录下。驱动安装完成。2.4 EWARM的项目配置在创建一个新的工程之后需要对其进行配置。具体配置过程参见广州周立功单片机公司的IAR使用指南 :http:/ 第三章 机器人底层驱动的实现3.1 红外传感器测距机器人上共有5组红外传感器,每

27、组红外传感器由红外红外线发射和红外线接收组成,机器人上使用的是收发一体化红外接收头,其型号为IRM8610S。红外传感器的硬件连接如 图3.1图 3.1 红外传感器模块的硬件电路WI与RF1组成红外线发射电路,控制红外发射的端口连接到微控制器,5个传感器分为两组,RF1、FR3、FR5共同连接到PE0端口,RF2、RF4共同连接到PB0端口。红外接收头U1-U5的输出信号分别连接到微控制器的PB1-PB5端口。IRM8610S集成自动增益控制电路、带通滤波器电路、解码器电路及输出驱动电路。如图3.2所示。图3.2 IRM8610S内部电路IRM8610S传感器内部的带通滤波器的中心频率为38K

28、Hz,所以驱动发射红外线的载波信号为38KHz时传感器最灵敏,其调试信号的周期应为1200s的方波。IRM8610S检测到信号是,输出有效电平,有效电平维持时间TWL的范围是400sTWL800s。由于IRM8610S内部含有一个中心频率为38KHz的带通滤波器,因此可以通过调整载波信号的频率来控制红外传感器的灵敏度,从而实现对距离的检测。本系统使用LM3S615的PWM模块产生载波信号,使用系统定时器产生调制信号。PWM发生器产生载波信号配置代码如下:uint32Frequency;/载波频率定义Frequency = SysCtlClockGet()/Frequency;/根据设置的频率获

29、取PWM发生器的周期PWMGenPeriodSet(PWM_BASE,PWM_GEN_1,Frequency);/设置PWM发生器1的周期PWMPulseWidthSet(PWM_BASEM,PWM_OUT_2,Frequency/2);/设置PWM2输出的脉冲宽度PWMGenEnable(PWM_BASE,PWM_GEN_1);/使能PWM发生器13.2 步进电机控制1.步进电机内部结构机器人上有两个两相四线制步进电机,它由脉冲发生控制单元、功率驱动单元、保护单元等组成,如图,图中点划线所包围的二个单元可以用微机控制来实现,驱动单元可以与步进电动机直接耦合。图3.3步进电机驱动控制器2.步进

30、电机驱动电路管道机器人上有两相四线制的步进电机,本论文以其中一个电机为列,如图3.3为步进电机驱动电路,四个输入控制端口IN11。,IN12,IN21,IN22分别连接到LM3S615的PD0,PD1,PD2,PD3四个端口。其硬件连接如图3.4图3.3 步进电机硬件电路3. 驱动芯片步进电机的驱动芯片是BA6845FS,包含两个单独的H桥电路,IN11与IN12控制OUT11和OUT12输出;IN21和IN22控制OUT21和OUT22输出。真值表如下3.1表所示。IN11/IN21IN12/IN22OUT11/OUT21OUT12/OUT22模式LHHL正向HHL H反向LL开路开路停止H

31、L开路开路停止表3.1 BA6845FS 真值表4.步进电机驱动方式比较步进电动机又称为脉冲电机,它能将电脉冲转换为相应的角位直线位移 。步进电动机定子绕组的通电状态每改变一次,转子转一个确定的角度,为步进电动机的步距角。它与定子绕组的相数m、转子的齿数z、通电方式k有关,可用=360/mkz式表示。驱动步进电机的时序主要有单拍驱动,整步驱动,颁布驱动和微步驱动。本论文中主要介绍单拍驱动,整步驱动和半步驱动分别如图3.4(a)(b)(c)所示.3.4(a) 单拍驱动3.4(b)整步驱动3.4(c)半步驱动本系统采用第三种方式,即半步驱动方式。3.3 电池电压检测1.硬件电路机器人使用的是7.4

32、V的锂电池供电,由于步进电机比较耗电,如果电量不足就有失步的可能性,因此需要使用LM3S615上的A/D模块检测电池电压,LM3S615内部ADC模块是自带参考电压的10bitA/D转换器,参考电压为3V。其电路结构如图 3.5图 3.5 电压检测模块CON2为连接电池的插座,R9(10K)和R15(5K)组成一个分压电路,ADC0端口连接到LM3S615的ADC0口,电池的输入端口与分压电路之间还有一个二极管D1。电池电压(VCC)和输入到ADC0口的电压VADC之间的关系如下:VCC = 3*VADC + VD其中VD为二极管在电路中的压降,其值受电流大小和温度的高低的影响,取值范围为0.

33、2V-0.5V,本系统中根据实际测试0.35V。VCC = 3*VADC + 0.35这样只要使用LM3S615上的A/D模块检测出VADC的值就可以根据上式计算VCC的值。3.4 步进电机匀加减速控制加减速实时算法的核心是使用定时器中断,当定时器中断发生超时中断时,中断服务函数,推动电机走下一步,然后计算出下一步将要维持的时间,并以之设置定时器下一次的中断时间。当下一次中断来临时,再推动一下,并设置再下一步的时间,如此下去。研究电机匀加速运动,某一步的持续时间(即定时器的的计数值)Tn为:Tn = Cn/f其中Cn为第n步定时器的计数值,f为给定时器提供的时钟源频率,转速Vn(单位:秒/步)

34、:Vn = f/Cn加速度和减速度w(单位:步/秒2)为:W = 2(Vn+1 - Vn)/(Tn+1 + Tn) = 2f2(Cn-Cn+1)/Cn+1Cn(Cn+1+Cn)电机转过的步数n = 0tv(t)*dt = 0twt*dt = wt2/2进过n步所花的时间为Tn = (2n/w)1/2第n步的定时器计数值为:Cn = f*(tn+1-tn)由上式可知,第0步的计数值C0为:C0 = f*(2/w)1/2第n步的定时器计数值为 Cn = C0(n+1)1/2-n1/2)Cn/Cn-1 = (1+1/n)1/2-1)/(1 - (1-1/n)1/2)根据泰勒公式有 Cn/Cn-1 =

35、(4n-1)/(4n+1)Cn = Cn-1 - 2Cn-1/(4n+1)而匀减速为匀加速的逆过程。现根据上述公式分别列出两步C值的确切值与近似值,如表3.2 n精确的Cn/Cn-1近似的Cn/Cn1近似值误差 10.41420.60000.4485 20.76730.77780.0136 30.84300.84620.00370 40.88100.88240.00152 50.90410.90487.6610-4 100.95110.95129.4210-51000.99500.99509.3810-810000.99950.99559.3710-11表 3.2 Cn与Cn-1比值及误差从表

36、可以看出,除了C1/C0外,其他误差都很小。由于每一步延时时间是由当前一步计算出来的,如果C1的误差很大,那么后面的每一步的延时误差都会增大,因此需要把C1单独算出来。本系统中加速度和减速度都是1200步/秒2 ,给定时器提供的时钟源频率为50MHz,把事先计算好的加速和减速表存储在微控制器的ROM中,需要时直接查表即可。const uint32 GuiAccelTable120= 2041241,845482,657598,556430,490968,444210,408674,380490,357430,338110,321617,307323,294780,283657,273705,2

37、64732,256587,249150,242324,236030,230203,224787,219736,215011,210578,206409,202478,198763,195246,191909,188737,185718,182839,180090,177461,174944,172531,170216,167991,165851,163791,161806,159892,158044,156259,154533,152863,151246,149679,148160,146686,145255,143865,142515,141202,139925,138682,137471,

38、136291,135141,134020,132926,131859,130817,129799,128805,127833,126883,125954,125045,124155,123284,122431,121596,120778,119976,119190,118419,117663,116921,116193,115478,114777,114088,113411,112746,112093,111451,110820,110200,109590,108990,108400,107819,107248,106686,106132,105587,105050,104521,104000

39、,103487,102981,102483,101992,101508,101031,100560,100096,99638,99187,98742,98303,97869,97441,97019,96602,96191,95785,95384;3.5 姿势修正由于左右轮摩擦以及初始位置方向不正,要使管道机器人在直线的迷宫中正常运行,需要在前进的过程中不断调整姿势,以免碰到挡板。根据传感器的安装角度,可以将5个传感器(如图3.6)分为两组,U1、U3、U5为一组,分别用来检测左前右三个方向的的管道信息,U2、U4为一组,主要用来修正管道机器人的姿势。图3.6 五组传感器管道机器人在管道中理想的

40、姿势是处于管道的中央,且前进方向平行于管道,如图3.7所示。 图 3.7正常姿势管道机器人在管道中姿态不需要时时刻刻调整,只需当两侧都有管道时对机器人姿态进行纠正,这样可以使算法更加简洁高效,如图3.8(以左侧为例)。当发现左边信号强于右边时应向右转,当发现右边信号强于左边时应向左转。图3.8 左侧位置偏差示意传感器U1、U5不但要检测是否存在管道,还要在部分情况下检测机器人是否偏离太远,U3只需要检测正前方是否有路,U2、U4用来检测机器人的位置是否正常。根据需要,把每个传感器的检测结果用一个变量保存,用一个数据来表示5各传感器数据。GucDistance0GucDistance4一次表报传

41、感器U1-U5的状态。3.5 转弯转弯共有两种方式:一种是在前进中转弯(如图3.9),即一个电机快转,一个电机慢转。另外一种方式是在原地转弯,即车体先停在转弯口,然后一个轮正转,另一个轮反转。前进中转弯节约时间,效率高,原地转弯控制较为简单。本系统没有采用这两种常规方式,而是一轮停止,另外一个轮子加速,然后依靠机器人的姿势调整功能完成转弯,回到管道的中心图 3.9 连续转弯 图3.10 原地转弯第4章 管道搜索算法的实现4.1 坐标和绝对方向的建立把管道机器人所运行的管道看成一个个由方格组成的迷宫(初始设为16*16大小的迷宫格),为了让机器人记住所走过的各个迷宫格的信息,要对这256各迷宫格

42、进行编号,用直角坐标轴来建立坐标。机器人在管道中的方向定义如图4.1所示。将向上的方向定义为0、向右为1、向下为2、向左为3。图4.1 迷宫方向值定义4.2 相对方向与绝对方向的转换由于红外线传感器的位置和方向是随着机器人前进方向的变化而一起变化的。这是由于选择参照物的不同而引起的,由此引出了两个方向的问题:相对方向和绝对方向。相对方向:以机器人当前行走方向为参照的方向。绝对方向:以迷宫绝对坐标平面为参照的方向。这样就会经常遇到相对方向和绝对方向的互换。在本文中采取了以变量Dir记录机器人前进方向上的绝对方向值,即前方的绝对方向值始终为Dir。这样机器人的相对方向转换成绝对方向如表4.1 所示

43、。相对方向绝对方向机器人前方Dir+1机器人右方(Dir+1)%4机器人后方(Dir+2)%4机器人左方(Dir+3)%4表4.1 相对方向转换成绝对方向有时候系统还需要根据绝对方向(Dir_dst)和当前的绝对方向(Dir)求出方向偏差值(Dir),如式3-1所示。Dir = Dir_dst Dir 式3-1为了使Dir的值落在03的范围内,计算式进行式3-2的转换如下:Dir =(Dir_dst + 4 Dir)%4 式3-2这时就可以根据方向偏差值求出机器人的相对方向,如表4.2所示。绝对方向差值(Dir)相对方向 0机器人前方 1机器人右方 2机器人后方 3机器人左方表4.2 绝对方向转换成相对方向4.3坐标转换及墙壁资料的存储假设机器人已知当前位置坐标(X,Y),那么就可以求出在

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1