六足机器人毕业设计论文.doc_第1页
六足机器人毕业设计论文.doc_第2页
六足机器人毕业设计论文.doc_第3页
六足机器人毕业设计论文.doc_第4页
六足机器人毕业设计论文.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 目录目录 插表清单插表清单iii 插图清单插图清单iv 第一章第一章 绪论绪论 1 1.1 机器人的发展历史.1 1.2 机器人的定义和基本组成.2 1.2.1 机器人的定义.2 1.2.2 机器人的基本组成:.2 1.3 移动机器人概述.3 1.4 移动机器人分类.4 1.5 多足机器人的发展现状.5 1.6 本设计的主要工作.7 1.7 本章小结.7 第二章第二章 六足仿生机器人的结构分析及设计六足仿生机器人的结构分析及设计 8 2.1“六足纲”昆虫的运动原理8 2.1.1 步态的参数描述.8 2.1.2 三角步态运动原理.9 2.2 六足仿生机器人机械结构分析.10 2.3 本章小结.11 第三章第三章 六足仿生机器人的步态分析和设计六足仿生机器人的步态分析和设计 11 3.1 六足步行机器人坐标定义.12 3.2 六足机器人的稳定性分析.14 3.3.1 稳定性分析14 3.3.2 稳定裕量计算.14 3.4 六足仿生机器人的直线运动步态设计.16 3.4.1 步态规划.16 3.4.2 步态动作分析.16 3. 5“三角步态”定点转弯步态设计.19 3.6 本章小结.21 第四章第四章 六足仿生机器人的控制系统设计六足仿生机器人的控制系统设计 22 4.1 功能分解.22 4.2 控制系统的硬件设计.23 4.2.1 微处理器 at89s52 简介.23 4.2.2 舵机模块设计24 4.2.3 避障模块设计25 4.3 控制系统软件设计.27 4.3.1 单个舵机控制方法.28 4.3.2 多舵机控制.32 4.3.3 六足仿生机器人全方位步态程序设计.37 ii 4.4 软件的抗干扰及可靠性设计.40 4.5 本章小结.41 第五章第五章 软硬件联调软硬件联调 42 5.1 keil c51 开发系统基本知识.42 5.2 proteus 仿真软件基本知识42 5.2.1 proteus 介绍.42 5.2.2 proteus 的仿真.43 5.2.3 proteus pcb43 5.3 调试结果.43 5.2 相关数值测试.44 5.3 本章小结.45 第六章第六章 结束语结束语 46 6.1 论文总结.46 6.2 论文写作的感想.46 6.3 本章小结.46 参考文献参考文献 47 致谢辞致谢辞 48 iii 插表清单插表清单 表 1-1机器人fred delcomyn的参数.6 表 2-1 本设计机器人相关参数.9 表 4-1 i/o引脚分配表.23 表 4-2 时基脉冲与舵机角度对应表24 表 4-2 探测障碍物的传感器与单片机引脚对应关系表.25 表 4-3 舵机与六足机器人足对应关系表.36 表 4-4 舵机与单片机端口的对应关系表.36 表 5-1 关系数值表.44 iv 插图清单插图清单 图 1-1fred delcomyn六足仿生机器人.6 图 1-2gengh机器人.6 图 1-3 drrob系列高级机器人.7 图 2-1 本设计的六足仿生机器人.10 图 2-2机器人腿部实物.10 图 3-1 腿部组图简图11 图 3-2 机器人腿部坐标示意图.12 图 3-3 腿部简图.12 图 3-4步行机器人任一时刻姿态图.13 图 3-5 三角步态稳定图14 图 3-6 六足步态示意图.15 图 3-7(a、b、c、d)定点转弯步态示意图.16 图 4-1 基本功能框图.21 图 4-2 pdip封装图.23 图 4-3 微动开关示意图. 25 图 4-4 微动开关安装位置图. 25 图 4-5 硬件设计仿真图.26 图 4-6 系统软件的总体流程.27 图 4-7 舵盘的位置线性变化图.28 图 4-8 舵机的控制脉冲图.28 图 4-9 控制脉冲程序流程图.29 图 4-10 8 路信号舵机控制脉冲图.31 图 4-11 12 个舵机控制流程图.33 图 4-12 舵机位置示意图.36 图 4-13 直行程序流程图.37 图 4-14 转弯程序流程图.38 图 4-15 避障程序流程图.39 图 5-1 硬件仿真结果图.44 1 第一章第一章 绪论绪论 机器人的应用越来越广泛,几乎渗透到人们生活的各个领域。机器人技术在八十年 代后期已经形成比较完整的体系。它将机构学、电子技术、控制理论、计算机技术、传 感器技术和人工智能等相关学科融合为一体,不断吸收其他学科诸如材料、能源科学的 最新成果,形成了一门独立的高科技学科机器人学。机器人学是一种高度综合和交 叉的新兴学科,涉及的领域很多,诸如机械、电气、工艺、力学、传动、控制、通信、 决策、生物、伦理等诸多方面,是当代研究十分活跃、应用日益广泛的领域。机器人应 用情况,是一个国家工业自动化水平的重要标志1。 1.11.1 机器人的发展历史机器人的发展历史 早在三千多年前的西周时代,我国就出现了能歌善舞的木偶,称为“倡者”,这可 能是世界上最早的“机器人”。 在近代,随着第一次、第二次工业革命,各种机械装置的发明与应用,世界各地出 现了许多“机器人”玩具和工艺品。这些装置大多由时钟机构驱动,用凸轮和杠杆传递 运动。 1920年,捷克作家k.凯比克在一科幻剧本中首次提出了robot(汉语前译为“劳伯”) 这个名词。现在已被人们作为机器人的专用名词2。 1950年美国作家阿西莫夫提出了机器人学(robotics)这一概念,并提出了所谓的 “机器人三原则”,即: 1.机器人不可伤人; 2.机器人必须服从人给与,但不和(1)矛盾的指令; 3.在与(1)、(2)原则不相矛盾的前提下,机器人可维护自身不受伤害。 本世纪50、60年代,随着机构理论和伺服理论的发展,机器人进入了使用化阶段。 1954年美国的g.c.devol发表了“通用机器人”专利;1960年美国amf公司生产了柱坐标 型versatran机器人,可作点位和轨迹控制,这是世界上第一种用于工业生产上的机器人。 70年代,随着计算机技术、现代控制技术、传感技术、人工智能技术的发展,机器 人得到了迅速发展。1974年cincinnati milacron公司开发成功多关节机器人;1979年, unimation公司又推出了puma机器人,它是一种多关节、全电动驱动、多cpu二级控制; 采用val专用语言;可配视觉、触觉、力觉传感器,在当时是一种技术先进的工业机器人。 现在的工业机器人结构大体上是以此为基础的。这一时期的机器人属于“示教再现” (teach-in / playback)型机器人。只具有记忆、存储能力,按相应程序重复作业,但 2 对周围环境基本没有感知与反馈控制能力。这种机器人被称作第一代机器人。 进入80年代,随着传感技术,包括视觉传感器、非视觉传感器(力觉、触觉、接近 觉等)以及信息处理技术的发展,出现了第二代机器人有感觉的机器人。它能够获得 作业环境和作业对象的部分有关信息,进行一定的实时处理,引导机器人进行作业。第 二代机器人已进入了使用化,在工业生产中得到广泛应用。 第三代机器人是目前正在研究的“智能机器人”。它不仅具有比第二代机器人更加 完善的环境感知能力,而且还具有逻辑思维、判断和决策能力,可根据作业要求与环境 信息自主地进行工作。 1.21.2 机器人的定义和基本组成机器人的定义和基本组成 1.2.11.2.1 机器人的定义机器人的定义 由于研究的侧重点不同,对于机器人的定义,国际上目前尚未有明确的统一标准。 通常情况下,可将机器人理解为:机器人是一种在计算机控制下的可编程的自动机器, 根据所处的环境和作业需要,它具有至少一项或多项拟人功能,另外还可能程度不同地 具有某些环境感知能力(如视觉、力觉、触觉、接近觉等),以及语言功能乃至逻辑思 维、判断决策功能等,从而使它能在要求的环境中代替人进行作业。 1.2.21.2.2 机器人的基本组成:机器人的基本组成: 1. 机械本体 机器人的机械本体机构基本上分为两大类:一类是操作本体机构,它类似人的手臂 和手腕,配上各种手爪与末端操作器后可进行各种抓取动作和操作作业,工业机器人主 要采用这种结构。另一类为移动型本体结构,主要目的是实现移动功能,主要有轮式、 履带式、足腿式结构以及蛇行、蠕动、变形运动等机构。壁面爬行、水下推动等机构也 可归于这一类。 2. 驱动伺服单元 机器人本体机械结构的动作是依靠关节机器人的关节驱动,而大多数机器人是基于 闭环控制原理进行的。伺服控制器的作用是使驱动单元驱动关节并带动负载超减少偏差 的方向动作。已被广泛应用的驱动方式有,液压伺服驱动、电机伺服驱动,近年来气动 伺服驱动技术也有一定进展。 3. 计算机控制系统 各关节伺服驱动的指令值由主计算机计算后,在各采样周期给出。主计算机根据示 教点参考坐标的空间位置、方位及速度,通过运动学逆运算把数据转变为关节的指令值。 3 通常的机器人采用主计算机与关节驱动伺服计算机两级计算机控制,有时为了实现 智能控制,还需对包括视觉等各种传感器信号进行采集、处理并进行模式识别、问题求 解、任务规划、判断决策等,这时空间的示教点将由另一台计算机上级计算机根据传感 信号产生,形成三级计算机系统。 4. 传感系统 为了是机器人正常工作,必须与周围环境保持密切联系,除了关节伺服驱动系统的 位置传感器(称作内部传感器)外,还要配备视觉、力觉、触觉、接近觉等多种类型的 传感器(称作外部传感器)以及传感信号的采集处理系统 5. 输入/输出系统接口 为了与周边系统及相应操作进行联系与应答,还应有各种通讯接口和人机通信装置。 工业机器人提供一内部plc,它可以与外部设备相联,完成与外部设备间的逻辑与时实控 制。一般还有一个以上的串行通讯接口,以完成磁盘数据存储、远程控制及离线编程、 双机器人协调等工作。一些新型机器人还包括语音合成和识别技术以及多媒体系统,实 现人机对话。 1.31.3 移动机器人概述移动机器人概述 移动机器人是机器人学的一个重要分支,其研究始于60年代末期,斯坦福研究院的 nils nilssen和charles rosen等人,在1966年至1972年中研制出了取名为shakey的自主 式移动机器人。目的是研究应用人工智能技术,在复杂环境下机器人系统的自主推理、 规划和控制。与此同时,最早的操作式步行机器人也研制成功,从而开始了机器人步行 机构方面的研究,以解决机器人在不平整地域的运动问题,设计并研制出了多足机器人。 70年代末,随着计算机的应用和传感器技术的发展,移动机器人研究又出现了新的高潮。 特别是在80年中期,设计和制造机器人的浪潮席卷全世界。一批世界著名的公司开始研 制移动机器人平台,这些移动机器人主要作为大学实验室及研究机构的移动机器人实验 平台,从而促进了移动机器人学多种研究方向的出现,90年代以来,以研制高水平的环 境信息传感器和信息处理技术,高适应性的移动机器人控制技术,真实环境下的规划技 术为标志,开展了移动机器人更高层次的研究.自主移动机器人技术是一门综合性很强的 高科技学科,涉及到机械、计算机、自动控制、人工智能、力学等广泛科学领域中的许 多前沿技术.自主移动机器人研究已被列入世界各国的高技术发展计划。如美国国防高级 研究计划局的“战略计算与生存能力”工程,日本能产省的“极限环境下作业的机器人” 发展计划、欧洲共同体的“尤里卡”计划,以及我国的“863”高科技计划中,都把有害 环境如核工厂和战场使用的移动机器人作为重要的研究内容。而以自主移动机器人为对 象或应用领域的,基于自适应、学习、进化机理,具有高级生命行为的自主系统的研究 与研发,已成为21世纪初信息科学与生命科学富于挑战性的交叉研究领域之一。3 4 1.41.4 移动机器人分类移动机器人分类 移动机器人是机器人的一个重要分支,早期的移动机器人无论是控制方法或智能水 平都较低,只能做出一些简单的推理、判断和决策。近年来,随着机器人技术及相关领 域技术的发展,特别是计算机技术的发展,机器人领域的研究取得了长足的进步,其智 能水平也大大提高,逐步由以前的遥控式向半自主式和自主式过渡,工作条件也由室内 向室外、简单向复杂过渡。其中自主式移动机器人由于其高度的自主性,正在越来越多 的领域得到广泛的应用,特别是在军事侦察、宇宙开发、扫雷排险、防核化污染等恶劣 的环境中有着广泛的应用前景。另外,随着生产自动化技术的发展,移动机器人在柔性 自动化制造生产线上和无人化工厂中也得到了广泛的应用。当前 ,由于生产自动化程度 的提高,对机器人提出了各种各样的需求,要求能够实现各种功能,其中移动机器人成 为机器人研究领域的热门方向。对于移动机器人来说,它有多种不同的分类方法,按不 同的分类方法可将移动机器人分为不同的种类: (一) 按自主水平来分: 1、遥控式移动机器人 移动机器人的执行动作和运行轨迹完全由人通过遥控来控制,机器人不进行任何判 断和决策,只是执行人发出的命令。不具备任何自主性。 2、半自主式移动机器人 智能水平介于遥控和自主式移动机器人之间,具备一定的感知、判断和决策功能, 但对一些复杂任务仍需在人工干预下才能顺利完成。 3、自主式移动机器人 按人预先设置的任务命令,根据己知的环境信息进行路径规划,同时在行进过程中 不断获取周围的局部环境信息,自主地做出判断和决策,随时调整移动机器人的运行路 径并执行相应的动作和操作。整个过程不需人为参与,由机器人自主进行。 (二)按移动方式来分: 1、轮式移动机器人:轮式机器人动作稳定,操纵简单,其移动速度和方向容易控制. 在无人工厂中用来搬运零部件或做其它基本任务用的很多,适合于平地行走。按轮数的 多少又可分为二轮、三轮、四轮式三种。 2. 履带式移动机器人:履带式移动机器人的移动机构支撑面积大,接地比压小,适 合松软或泥泞场地作业,下陷度小,滚动阻力小,对路况具有较强的适应性,同时具有 较强的爬坡能力和负载能力。 3、多足移动机器人:足式移动对崎岖路面具有很好的适应能力,足式移动方式的立 足点是离散的,可以在可能到达的地面上选择最优支撑点,即使在表面极度不规则的情 况下,通过严格选择足的支撑点,也能够行走自如。足式移动方式具有主动隔振能力, 允许机身运动轨迹和足运动轨迹解祸,保持机身运动具有高稳定性.因此,足式步行机器 人的研究已成为机器人学中一个引人注目的研究领域。 5 4、 特种移动机器人:根据具体的应用目的,还有其他种类的移动机器人,如墙壁清 洗机器人、爬缆索机器人以及管内移动机器人等,这些机器人是根据某种特殊目的设计 的机器人。 (三)按控制体系结构来分: 1、功能式(水平式)结构机器人; 2、行为式(垂直式)结构机器人; 3. 混合式机器人。 (四)按功能和用途来分: 1、医疗机器人, 2、军用机器人, 3、助残机器人, 4、清洁机器人等。 (五) 按作业空间来分: 1、陆地移动机器人, 2、水下机器人, 3、无人飞机和空间机器人等。 1.51.5 多足机器人的发展现状多足机器人的发展现状 早在上世纪80年代,美国的著名机器人学家mcghee开始着手研发四足仿生机器人以 来,多足仿生机器人一直成为大量学者的研究对象。研发人员开始纷纷研究多足机器人 的模型和样机,并一步步攻关一个个难题。4 多足机器人六足仿生机器人的一个最大的优点是对行走路面的要求很低,它可以跨越 障碍物、走过沙地、沼泽等特殊路面,因此可以用于工程探险勘测、反恐防爆、军事侦察 等人类无法完成的或危险的工作,并且机器人的足所具有的大量自由度可以使机器人的运 动更加灵活,对凹凸不平的地形的适应能力更强。于是以mcghee等人为代表的对多足机器 人的远动步态进行了研究并提出了方案。随后,国内外的众多学者便开始研究多足机器 人的运动步态和控制。最后在lee设计了具有独特独特结构的sero六足仿生机器人,它把 整个机器人的步态进行了规划,实现了机器人的前进、后退和转弯。同时,在国内,中 科院沈阳自动化研究所、清华大学、等单位也先后展开了机器人的研究,并取得了较大 的成果。 6 图1-1fred delcomyn六足仿生机器人 图1-1是模仿美国的一种叫perip laneta americana的蟑螂而设计的仿生机器人,机 器人的整个身体比例约是该蟑螂的12到17陪左右。其参数如表1-1 表1-1机器人fred delcomyn的参数 参数 机器人名称 国别 尺寸(m) 长*宽*高 各部位比例 髋*股节*胫节 体重(kg) fred delcomyn 美国 0.58*0.14*0.231:1.1:1.511 随着机器人技术的不断完善,多足机器人也别运用到各个领域里面,图1-2为mit的 仿生机器人,这个名为gengh的机器人是mit于1989年设计并制作的,主要用于火星的不 规则地面的探测。 图1-2gengh机器人 同样,在国内也渐渐出现了一批设计和生产仿生机器人公司和个人,图1-3是德普施 科技有限公司的drrob系列高级机器人产品5。该机器人以1个曲柄摇杆机构和连杆机构 作为腿部和六足,以12个直流伺服电机作为驱动元件。利用德普施科技有限公司的六足 机器人包搭接出的六足机器人如图1-3所示。 7 图1-3 drrob系列高级机器人 1.61.6 本设计的主要工作本设计的主要工作 机器人系统是一个跨学科的综合系统,涉及很多学科的知识。本文对现有的机器人 分析机械结构,在此基础上,进行该机器人运动步态的研究,分析其步态稳定性,给出 不同步态下的机器人落足点的位置矢量表达式,按照计算机控制系统的特点,根据六足 步行机器人的机械结构和关节运动的协调性、准确性的控制要求,确定六足仿生机器人 控制系统的设计和实现不同步态的控制策略。对六足仿生机器人控制系统的硬件电路和 软件流程给出详细介绍,并进行相关测试,验证整体设计方案的正确性和可靠性. 论文主要内容有: 1、以自行设计的六足仿生机器人为研究对象,分析其机械结构,按照“六 足纲”昆虫的运动原理,进行步态分析,确定机器人的步态规划。 2、分析适合机器人行走的运动步态形式,规划典型直线行走步态和定点转弯步态, 确定步态规划中每种状态的机器人足端位置矢量,进行机器人稳定性分析, 3、根据六足步行机器人的机械结构和关节运动的协调性、准确性的控制要求,设计 六足仿生机器人控制系统,确定对机器人腿部十二个舵机的控制方案,使机器人根据目 的地的方位,实现不同步态的控制策略。 4、完成六足仿生机器人控制系统的硬件设计和软件设计。 1.71.7 本章小结本章小结 本章主要是对机器人有一各概况,着重介绍了机器人的发展及国内外的一些机器人 的发展成果,并交代了本次设计的设计背景,为后续的设计指明了方向。 8 第二章第二章 六足仿生机器人的结构分析及设计六足仿生机器人的结构分析及设计 “六足纲”昆虫(蟑螂,蚂蚁等等) 在平坦无阻的地面上快速行进时,多以交替的三角 步态运动1,即在步行时把六条足分为两组,以身体一侧的前足、后足与另一侧的中足作 为一组,形成一个稳定的三角架支撑虫体,因此在同一时间内只有一组的三条足起行走作 用:前足用爪固定物体后拉动虫体前进,中足用以支撑并举起所属一侧的身体,后足则推动 虫体前进,同时使虫体转向,行走时虫体向前并稍向外转,三条足同时行动,然后再与另一 组的三条足交替进行,两组足如此交替地摆动和支撑,从而实现昆虫的快速运动 ,我们将 这种步态定义为“三角步态”6。 2.1“2.1“六足纲六足纲”昆虫的运动原理昆虫的运动原理 2.1.12.1.1 步态的参数描述步态的参数描述 “六足纲”昆虫体的腿可以看作两状态器件:腿的悬空相和腿的支撑相。腿的悬空相 (transfer phase)指腿抬离地面的阶段,悬空相状态记为“1”。腿的支撑相(support phase)指腿支撑在地并推动机体向前运动的阶段,支撑相的状态记为“0”。运动周期t 指周期步态中某一腿运动一个完整循环所需要的时间。周期步态指各腿的运动周期相同, 且任一腿的运动周期不随时间而变化.“六足纲”昆虫在运动过程中,可以以不同的周期 进行运动.有荷因数 (dutyf actor)指腿i支撑在地面上的时间占整个运动周期的比例: 以下有荷因数用q q表示,q=q=腿i的支撑相时间/腿i的周期;qi=腿i的支撑时间/腿i的周期 若qi=0,i=1,2,2k(2k为总足数),则步态称为规则步态(regular)腿i的相对相位, 9 指第i足的触地时刻相对于第一足的延时在一个运动周期中的比例 si=(ti-t1) /t 0sil。 步距 ( stride length),指一个完整的腿循环中机体重心移动的位置。 腿行程 (leg stroke),指支撑相时足端相对于机体移动的距离。 腿节距 (leg pitch),指横向运动时,机体同一端上相邻腿运动主平面之间的距离。 行程节距(stroke pitch),指纵向运动时,体同一端上相邻腿行程中点的间距。行间距, 指横向运动时,机体前后足对行程中点的间距。 推程时间tp,指腿在支撑相的持续时间。 回程时间tr,指腿在悬空相的持续时间。 平均速度 ,指机体的平均运动速度。 由此可以导出行程r、步距a和有荷因数q之间的关系式是r=a*q.静态稳定六足步行机 器人,由于要求q1/2,所以trtp ,即平均速度上限取决于tr。行走系统采用波形步 态时,机体每一侧各腿的迈步动作形成一种由后向前的波形式.自然界六足昆虫在所有速 度范围内都采用波形步态. 2.1.22.1.2 三角步态运动原理三角步态运动原理 1、 “六足纲”昆虫的三角步态运动原理 机体运动根据有荷因数(dutyf actor)的大小可分为3种情况: (1 )q q = 1 /2 : 在三摆动腿着地的同时,另外三支撑腿立即抬起,即任意时刻同时 具有支撑相和摆动相。 (2 )q q 1 / 2: 机体移动较慢时,摆动相与支撑相有一短暂的重叠过程,即机体有 六条腿同时着地的状态。 (3 )q q #define uchar unsigned char #define uint unsigned int uint a,b,c,d; /*a 为舵机 1 的脉冲宽度,单位 1/1000 ms */ /*c、为中间变量*/ /*以下定义输出管脚*/ sbit p12=p12; sbit p37=p37; /*主程序*/ void main(void) 31 tmod=0x11; /*设初值*/ p12=1; a=1620; b=1620; /*数值 1620 即对应 1.5ms,为舵机的中间 90 度的位置*/ c=a;d=b; th0=-(a/256); tl0=-(a%256); th1=-(b/256); tl1=-(b%256); /*设定定时器初始计数值*/ ea=1;/*开中断*/ et0=1; tr0=1;ex0=1 px0=0; pt0=1;/*设定中断优先级*/ for(;) /*在这个 for 循环中,可以根据程序需要 在任何时间改变 a、b 值来改变脉宽的输 出时间,从而控制舵机*/ /*以下函数为定时器中断函数*/ /*定时器 1,控制舵机 1,输出引脚为 p12,可自定义*/ void timer0(void) interrupt 1 using 1 p12=!p12; /*输出取反*/ c=20850-c; /*20850 代表 20 ms,为一个周期的时间*/ th0=-(c/256); tl0=-(c%256); /*重新定义计数初值*/ if(c=508 else c=20850-a; /*判断脉宽是否在正常范围之内*/ 程序中的 1620、2540 等数字为定时器初值。 32 4.3.24.3.2 多舵机控制多舵机控制 用上述方法采用一个定时器来控制舵机轴的转角,可以很容易实现。但如果要控制 12 个之多的舵机,显然是不够现实的。要设计一个即能控制多个舵机,又能尽可能用定 时器来精确控制的舵机控制算法。 从舵机的控制信号(图 4-8)可以知道,变化的时间为 t 的范围从 0.52.5ms 之间, 也就是说每一个舵机控制信号至少有 17.5ms 必是低电平且不会发生变化。设 p0 端口上 接有 8 个舵机。如果在 20ms 内,首先引脚 p00 置高电平,t ms 后引脚取反,电机转轴将 转到 t ms 对应的角度。因为 t 的最大取值为 2.5ms,所以无论 t 值为多少,在 2.5ms 后 将 p00 置成高电平将不会影响 p00 对电机 1 的控制,t ms 后 p00 取反,按照相同方法依 次置 p01、p02、p03、p04、p05、p06、p07 置高后取反。不论电机要转过的角度是多少, 对不同引脚控制时间间隔为 2.5ms,那么在 20ms 内最多可以控制 8 路信号 (20ms/2.5ms=8) 。舵机控制脉冲如图 4-10 所示: (a) (b) 图 4-10 8 路信号舵机控制脉冲图 运用这种思想方法可以实现对 8 路舵机独立控制和同时控制。具体的实现方法有两 种,一种是采用延时方法来产生脉冲,另外一种是用定时器的方法。延时的方法不仅占 用大量的 cpu 时间,而且最多也只能控制 8 个舵机。所以本设计采用后者。 33 at89s52 单片机有三个定时器,其中定时器 0 和定时器 1 两个为常用定时器。本设计 将 12 个电机分成两组,分别由两个定时器,定时器 0 和定时器 1 控制13,其中定时器 0 控制电机 16,定时器 1 控制电机 712。单片机内部两个定时间器同时使用,且设置了 同一优先级时,二者肯定在某一时刻会产生冲突这就要求在中断程序执行时间尽可能短, 即使产生冲突也不会影响其功能实现。 如图 4-10(b)是 8 个舵机在一个周期内电平变化 16 次。每个定时器控制 6 个电机, 在一个周期内必须产生 12 次定时器中断(6 个电机 12 次电平变化) 。定时器在计数时不 占用 cpu 时间,且两个定时器可以并行工作,所以两个定时器在忽略中断执行时间时, 对电机控制几乎是并行的。也就是在一个周期时间里(20ms)控制了 12 电机的运动。12 个电机控制占用 cpu 的时间为执行 24 次中断程序的时间。 下面是本设计的 12 个舵机控制流程图(图 4-11) 。端口 p0.0p0.5,p1.0p1.5 是舵 机控制端口。 34 图 4-11 12 个舵机控制流程图 对流程图的说明: 初始化:舵机的变化角度为 0180 度,它的初始状态在 0 度位置,那么电机只能朝 一个方向运动。所以初始化的时候,将所有电机的位置定在 90 度的位置。初始化中定时 器初值可以任意的。 flag1 ,flag2 为两个标志位。进入中断后首先判断标志位,再进入标志位对应的执行程 序。 flag1=1 时:p00=1;定时器重置初值,定时时间为 p00 高电平持续时间 t1,flag1+,break 结束中断程序 flag1=2 时:p00=0;定时器重置初值,定时时间为(2.5ms-t1) flag1+,break 结束中断 程序 35 flag1=3 时:p01=1; 定时器重置初值,定时时间为 p01 高电平持续时间 t2,flag1+,break 结束中断程序 flag1=4 时:p01=0;定时器重置初值,定时时间为(2.5ms-t2) flag1+,break 结束中断 程序 flag1=5 时:p02=1; 定时器重置初值,定时时间为 p02 高电平持续时间 t3,flag1+,break 结束中断程序 flag1=6 时:p02=0;定时器重置初值,定时时间为(2.5ms-t3) flag1+,break 结束中断 程序 flag1=7 时:p03=1; 定时器重置初值,定时时间为 p03 高电平持续时间 t4,flag1+,break 结束中断程序 flag1=8 时:p03=0;定时器重置初值,定时时间为(2.5ms-t4) flag1+,break 结束中断 程序 flag1=9 时:p04=1; 定时器重置初值,定时时间为 p04 高电平持续时间 t5,flag1+,break 结束中断程序 flag1=10 时:p04=0;定时器重置初值,定时时间为(2.5ms-t5) flag1+,break 结束中断 程序 flag1=11 时: p05=1; 定时器重置初值,定时时间为 p05 高电平持续时间 t6,flag1+,break 结束中断程序 flag1=12 时:p05=0;定时器重置初值,定时时间为(20ms-(t6+5*2.5) ,flag1=0;,break 以上是定时器 0 产生 6 路舵机控制信号的过程。 详细程序如下: /* 中断 0 */ void timer0(void) interrupt 1 switch(flag1) case 1:p00=1;th0=-(t1/256);tl0=-(t1%256);break; case 2:p00=0;th0=-(2540-t1)/256);tl0=-(2540-t1)%256);break; case 3:p01=1;th0=-(t2/256);tl0=-(t2%256);break; case 4:p01=0;th0=-(2540-t2)/256);tl0=-(2540-t2)%256);break; case 5:p02=1;th0=-(t3/256);tl0=-(t3%256);break; case 6:p02=0;th0=-(2540-t3)/256);tl0=-(2540-t3)%256);break; case 7:p03=1;th0=-(t4/256);tl0=-(t4%256);break; 36 case 8:p03=0;th0=-(2540-t4)/256);tl0=-(2540-t4)%256);break; case 9:p04=1;th0=-(t5/256);tl0=-(t5%256);break; case 10:p04=0;th0=-(2540-t5)/256);tl0=-(2540-t5)%256);break; case 11:p05=1;th0=-(t6/256);tl0=-(t6%256);break; case 12:p05=0;th0=-(8150-t6)/256);tl0=-(8150-t6)%256);flag1=0;break; default:flag1=0 flag1+; 定时器 1 中断服务程序: /* 中断 1 */ timer1(void)interrupt 3 switch(flag2) case 1:p10=1;th1=-(t7/256);tl1=-(t7%256);break; case 2:p10=0;th1=-(2540-t7)/256);tl1=-(2540-t7)%256);break; case 3:p11=1;th1=-(t8/256);tl1=-(t8%256);break; case 4:p11=0;th1=-(2540-t8)/256);tl1=-(2540-t8)%256);break; case 5:p12=1;th1=-(t9/256);tl1=-(t9%256);break; case 6:p12=0;th1=-(2540-t9)/256);tl1=-(2540-t9)%256);break; case 7:p13=1;th1=-(t10/256);tl1=-(t10%256);break; case 8:p13=0;th1=-(2540-t10)/256);tl1=-(2540-t10)%256);break; case 9:p14=1;th1=-(t11/256);tl1=-(t11%256);break; case 10:p14=0;th1=-(2540-t11)/256);tl1=-(2540-t11)%256);break; case 11:p15=1;th1=-(t12/256);tl1=-(t12%256);break; case 12:p15=0;th1=-(8150-t12)/256);tl1=-(8150-t12)%256);flag2=0;break; default:flag2=0; flag2+; 从上面的流程图可以知道定时器的初值将决定舵机轴的转角。那么 12 个初值对应 12 个舵机轴转过的角度。改变舵机轴的转角实际上只要改变定时器的初值。将赋予定时器 初值做成一个赋值函数_set_time(),12 个参数对应 12 个引脚的输出脉宽,也是对应了 37 12 个舵机轴的位置。 4.3.34.3.3 六足仿生机器人全方位步态程序设计六足仿生机器人全方位步态程序设计 六足机器人的舵机位置示意图如图 4-12 所示 图 4-12 舵机位置示意图 舵机与六足机器人足对应关系如表 4-4 所示,舵机与单片机端口的对应关系如表 4- 4 所示。 表 4-4 舵机与六足机器人足对应关系表 a 足舵机 1 舵机 2d 足舵机 7 舵机 8 b 足舵机 3 舵机 4e 足 舵机 9 舵机 10 c 足舵机 5 舵机 6f 足 舵机 11 舵机 12 表 4-5 舵机与单片机端口的对应关系表 单片机端口 p00p01p02p03p04p05 电机舵机 1舵机 2舵机 3舵机 4舵机 5舵机 6 单片机端口 p10p11p12p13p14p15 电机舵机 7舵机 8舵机 9舵机 10舵机 11舵机 12 注:偶数电机转轴为垂直运动,奇数电机转轴为水平转动 前进动作过程分解为每一个舵机运动为: 动作一:a、e、c 抬起即 2,6,10 电机向上运动 动作二:a、e、c 向前,1,5,9 电机向前运动 动作三:a、e、c 放下即 2,6,10 电机向下运动 动作四:d、b、f 抬起 4、8、12 电机向上运动 动作五:a、e、c 向后 1、5、9 电机向后运动 动作六:d、b、f 向前 3、7、11 电机向前运动 动作七:d、b、f 放下 4、8、12 电机向下运动 38 动作八:同动作一。 以上是完成前进一步的 8 个基本动作。程序流程图如图 4-13(a)。 (a ) (b) 图 4-13 直行程序流程图 (注:向上、向下、前、后运动等指舵机轴相对本体平面的运动。 ) 后退的动作与前进动作基本相同,只是奇数编号的舵机与前进时运动方向相反。程 序流程图如 4-13(b)。 详细程序如下: 左转弯各舵机运动的过程如下:完成左转弯的过程是将前进过程略做修改: a、e、c、b 不做前后运动,只是上下运动。 动作一:d、b、f 抬起 4、8、12 电机向上运动。 动作二:d、f 向前 7、11 电机向前运动 动作三:d、b、f 放下 4、8、12 电机向下运动 39 动作四:a、e、c 抬起即 2,6,10 电机向上运动 动作五:d、f 向后 7、11 电机向后运动 程序流程图 4-14 所示: 注:向上、向下、前、后运动等指舵机轴相对本体平面的运动。 (a) (b) 图 4-14 转弯程序流程图 右转与左转的基本相同,流程图 4-14(b)所示。 程序设计的基本思路为:当碰到障碍物时,首先要纪录当前的状态,包括各个舵机 的转轴位置和当前的动作即前进 8 个基本动作中的哪一步。然后通过调用后退、左右转 子函数来避开障碍。最后要恢复碰到障碍物前的那个状态,继续执行前进函数。 状态纪录函数为 status();它存在的意义是使程序完全的模块化了。如果没有纪录当 前状态,那么前进和后退、左右转等函数就无法完全独立开来,这样不利于程序编写, 也就无法体现出 c 语言结构化程序设计思想的优势。在前进每一个基本动作之后将检测 一次传感器的状态,如果有障碍物 status 将纪录当前所有需要纪录的状态后,转入执行 避障程序。 避障程序执行流程图如图 4-15 所示。 40 图 4-15 避障程序流程图 4.44.4 软件的抗干扰及可靠性设计软件的抗干扰及可靠性设计 抗干扰是可靠性设计的一个主要方面。影响单片机系统可靠安全运行的主要因素来 自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺 影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产 品的质量和产量,重则会导致事故,造成重大经济损失14。 分析其原因:电源电压的波动; 电源电压叠加的噪声; 电磁干扰; 软件故障; 硬件电路故障。 41 以上的各种干扰都有可能导致程序失控,程序失控会致使单片机跳入死循环而形成 死机,这时应该引导程序失控的单片机尽快的复位来脱离死机状态。由于程序失控的发 生是随机的事件,而且还可能造成一些随机的破坏,因此程序失控后很难从脱离处回复, 处理和解决的方法:程序运行时,在ram中埋一些标志。在每次程序复位时,通过判 断这些标志,可以判断各处不同的复位原因;还可以根据不同的标志直接跳到相应的程 序,这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过,这 种方法非常有效也很有意义。上电复位是开机操作,建立上电标志,并进行系统的完全 初始化,程序跑飞后软件陷阱回复应该进行相关资源的检查与修复,以防止系统运行出 错,另外,根据系统特点,需要保留一些过程数据,不得进行完全初始化,这样就保证 了程序运行的连续性。 4.54.5 本章小结本章小结 本章在前面章节分析的基础上,进行六足机器人控制系统的设计,完成了控制系统 的总体设计,实现了控制系统的硬件电路设计和软件程序设计,其中详细分析多舵机控 制方式的实现,并给出了部分程序的详细清单。 42 第五章第五章 软硬件联调软硬件联调 本次设计的软件调试采用的是 keil c51 开发系统,下面将简单的介绍下关于 keil c51 开发系统的一些基础知识。 5.15.1 keilkeil c51c51 开发系统基本知识开发系统基本知识 keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统, 与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易 用。用过汇编语言后再使用c来开发,体会更加深刻。keil c51软件提供丰富的库函数和 功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生 成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇 编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍 keil c51开发系统各部分功能和使用15。 keil c51单片机软件开发系统的整体结构c51工具包的整体结构,其中uvision与 ishell分别是c51 for windows和for dos的集成开发环境(ide),可以完成编辑、编译、 连接、调试、仿真等整个开发流程。开发人员可用ide本身或其它编辑器编辑c或汇编源 文件。然后分别由c51及a51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生 成库文件,也可以与库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由 oh51转换成标准的hex文件,以供调试器dscope51或tscope51使用进行源代码级调试,也 可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如eprom中。使用独 立的keil仿真器时,注意事项仿真器标配11.0592mhz的晶振,但用户可以在仿真器上的 晶振插孔中换插其他频率的晶振。 仿真器上的复位按钮只复位仿真芯片,不复位目标系 统。 仿真芯片的31脚(/ea)已接至高电平,所以仿真时只能使用片内rom,不能使用片 外rom;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到 扩展有外部rom(其cpu的/ea引脚接至低电平)目标系统中使用。 5.25.2 proteusproteus 仿真软件基本知识仿真软件基本知识 5.2.15.2.1 proteusproteus 介绍介绍 proteus 是英国 labcenter electro-nics 公司开发的一款电路仿真软件,软件由两 部分组成:一部分是智能原理图输入系统 isis(intelligent schematic input system) 和虚拟系统模型 vsm(virtual model system);另一部分是高级布线及编辑软件 ares(adv-ancd routing and editing software)也就是 pcb15. 43 5.2.25.2.2 proteusproteus 的仿真的仿真 proteus 可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 可提供 30 多种元件库,超过 8000 种模拟、数字元器件。可以按照设计的要求选择不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论