类人形机器人项目总体设计报告_第1页
类人形机器人项目总体设计报告_第2页
类人形机器人项目总体设计报告_第3页
类人形机器人项目总体设计报告_第4页
类人形机器人项目总体设计报告_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

类人型机器人项目总体设计报告编制单位作者版本发布日期审核人批准人目录1引言111背景112定义2121专门术语的定义2122外文首字母组词的原词组213参考资料22总体设计321开发与运行环境3211系统硬件运行环境3212系统软件运行环境322硬件功能描述323硬件结构(如图2所示)33硬件模块设计431机器人套件4311舵机4312机器人合金零件632舵机控制器电路64嵌入式软件设计741流程逻辑7411程序流程图7412程序流程图简述742算法8421主要计算方法8422源程序说明95系统调试与总结1151系统调试11511单个舵机的研究和控制11512单个舵机的研究和控制13513机器人下肢运动的动作分解及实现1352总结14521总结一(作者王刚)14522总结二(作者赵爱芳)16523总结三(作者刘丹)20524总结四(作者张瑞娜)22附录一系统源程序261引言类人型机器人是现在机器人研究领域的一个热点,无论是SONY公司不断更新的“阿西莫”机器人,还是每年在机器人世界杯上不断推陈出新的足球机器人,大家都把目光聚焦于更加拟人化的类人型双足行走机器人。基于双足平台的机器人要正常工作首先需要能够平稳的行走,而双足步行是步行方式中自动化程度最高、最为复杂的动态系统。它具有支撑面积小、支撑面的形状随时间变化较大,质心的相对位置高的特点,是最复杂、控制难度最大的动态系统。但由于双足机器人比其它足式机器人具有更高的灵活性,因此具有自身独特的优势,更适合在人类的生活或工作环境中与人类进行协同工作,而不需要专门为其对这些环境进行大规模改造。例如代替危险作业环境中(如核电站)的工作人员,在不平整地面上搬运货物等等。此外将来社会环境的变化使得双足机器人在护理老人、康复医学以及一般家务处理等方面也有很大的潜力。目前对双足行走机构的研究主要基于仿生学原理与动态控制原理,SONY公司的“阿西莫”主要基于仿生学原理,这种研究方式也是类人型机器人舞蹈比赛与人形组机器人足球比赛中常见的控制方式,因为这种控制方法容易上手,能够从最简单的步伐控制开始了解类人型机器人控制的基本原理。11背景本小组以类人型机器人为课题,着重研究类人型机器人的结构与控制原理,掌握舵机的控制方式,掌握双足步行机器人步伐调整原理。项目初期主要以上海英集斯公司的8自由度双足步行机器人为研究平台,以最基本的对单个舵机结构的研究及运动控制为起点,从而从每一个关节开始了解类人型机器人的组成,逐步过渡到多个舵机的联动控制,最终基本实现类人型机器人下肢的行走运动。项目任务提出者项目开发者王刚、刘丹、张瑞娜、杨亮、赵爱芳(按姓氏笔画由小到大排列)软件开发者王刚、杨亮、赵爱芳系统调试张瑞娜、刘丹项目用户每个爱好机器人的人。系统运行环境伟福系列单片机仿真器H51/L、单片机仿真软件WAVE6000、单片机最小系统电路板。12定义121专门术语的定义舵机又称伺服电机,是机器人动力及动作的来源部件。自由度机器人运动到空间的位置是由肢体关节各自独立运动的合成来确定的。机器人每个构件(如臂部、腕部等)相对于固定坐标系所具有的独立运动能力称为自由度。机器人自由度是衡量机器人技术水平的一个重要参数,自由度越多,机器人可实现的动作越复杂,通用性就越好。通常,机器人身上一个舵机代表一个自由度。时间片将某一段时间划分为若干等份,其中一小等份称为一个时间片,MCU可在不同的时间片执行不同的命令。122外文首字母组词的原词组107P在本文中代表AT89S52单片机的HPI(主机接口),即I/O口P1口。WM脉宽调制。ULSEIDTHOULATIN8SERVO代表8自由度双足步行机器人的8个舵机。TA机器人动作状态数。在程序设计的过程中采用状态机的设计思路,将机器人行走的每个动作设计为一个状态。_DJNUM机器人自由度,即舵机的个数。13参考资料1李朝青单片机原理及接口技术第三版M北京北京航空航天大学出版社,200592金钟夫,杜刚,王群,徐宗完AVRATMEGA128单片机C程序设计与实践M北京北京航空航天大学出版社,200813佟长福AVR单片机GCC程序设计M北京北京航空航天大学出版社,200614梁静强,许瑛,彭应龙双足步行机器人的结构及其控制系统设计D南昌南昌航空工业学院航空与机械工程系200335吴华波,钱春来基于AT89C2051的多路舵机控制器设计D嘉应学院200686时玮今日电子,ELECTRONICPRODUCTSCHINAJ北京北京交通大学2005107英集斯公司双足步行机器人使用说明书8HTTP/DLIBEDUCNKINET/KNS50/INDEXASPX2总体设计21开发与运行环境211系统硬件运行环境对于双足步行机器人,由于其本身8自由度的缺陷,使其只能在平整且粗糙的平面上平稳的行走。该系统设计采用的是基于AT89S52系列单片机的舵机控制电路板。图1舵机控制电路板212系统软件运行环境程序的软件设计阶段利用WAV6000系列单片机仿真器进行在线的编程调试,在PC机上编写,然后通过串口COM1下载至仿真器,实现在线编程调试功能。软件运行环境为WINDOWSXP。22硬件功能描述本系统硬件可划分为机器人套件和舵机控制器电路板两个部分。其中机器人套件包括机器人合金零件、舵机(8个)等,机器人合金零件主要用于构建机器人的躯干、四肢及各部位连接件,而舵机用于模仿人的关节,是机器人得以完成动作的基础。23硬件结构(如图2所示)硬件端口定义舵机控制器电路板上有P10至P17八个舵机接口,分别定义为(SERVO1至SERVO8);每个舵机输出口可以控制舵机转动(90至90)。图2机器人硬件结构3硬件模块设计从图2不难看出,该类人型机器人系统的硬件结构不是过于复杂,这是由舵机的控制特点而决定的。该系统主要由基于AT89S52单片机的控制电路发出8路PWM信号,分别对8路舵机进行控制,舵机的运动带动了机器人肢体的运动,将不同的动作进行组合便可实现机器人舵机控制电路执行元件(多路舵机)机器人执行动作的整体运动。31机器人套件311舵机1舵机概述又名伺服电机,是一种位置(角度)伺服的器件,适用于那些需要角度不断变化并可以保持的控制系统,在微机电系统和航模中,它是一个基本的输出执行机构。舵机的外形及其内部结构见图3。图3舵机的外形及其内部结构(2)工作原理PWM信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20MS,宽度为15MS的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。(3)标准的舵机由3条导线(如图4所示),分别是电源线、地线、控制信号线。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源,电压通常介于472V,一般取5V。注意,给舵机供电的电源应能提供足够的功率。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20MS(即频率电源线VC地线GND控制线图4标准舵机为50HZ)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用图5来表示。对于舵机,其转角为一个绝对位置,即给一定脉宽的信号,舵机会转动到固定的转角位置,不管其上一个时刻的位置如何。例如当输入信号的脉宽为20MS时,舵机便会转到135的位置,这个位置的定位是由舵机内部电路自动反馈校正完成的。(4)本系统中舵机的型号及相关参数MG995金属齿轮结构双滚珠轴承连接线长度300MM尺寸40MM20MM365MM重量62G技术参数无负载速度017秒/60度(48V)、013秒/60度(60V)扭矩11KGM04590135180舵机输出轴转角输入信号脉冲宽度(周期为20MS)25MS20MS15MS10MS05MS图5舵机输出转角与输入信号脉冲宽度的关系使用温度3060死去时间4US工作电压30V72V312机器人合金零件将机器人的合金零件与舵机进行连接组装便可得到机器人的躯干和肢体,对于不同机器人套件生产商,其零件的种类也不尽相同,本系统的零件主要有舵机连接件、左脚、右脚、有丝舵盘、无丝舵盘、电池盒等零件。具体组装图及组装步骤参见双足步行机器人使用说明书。32舵机控制器电路舵机的控制信号是一个占空比可调的PWM信号,该PWM信号可由FPGA、CPLD、模拟电路或单片机产生。采用FPGA成本较高,用模拟电路来实现则电路较复杂,不适合作多路输出。一般采用单片机作舵机的控制器,目前采用单片机做舵机控制器的方案比较多,可以利用单片机的定时器中断实现PWM,本系统采用的单片机是51系列中的AT89S52单片机(如图1所示)。AT89S52是一种低功耗、高性能CMOS工艺的8位微控制器,具有8K在系统可编程FLASH存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH。AT89S52具有以下标准功能8K字节FLASH,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0HZ静态逻辑操作,支持2种软件可选择节点模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。该控制板系一单片机最小系统开发板,直接从P1口输出8路信号分别控制8路舵机。该模块设计人杨亮4嵌入式软件设计41流程逻辑411程序流程图假设一个动作由个状态组成,舵机个数为;STAE_DJNUM建立一个行列的一个数组;T_DJNUM每一行都是一个状态所要求舵机应该到达的位置;一维数组用来储存每个舵机的实时位置;J假设舵机的初始值为89度,初始的目标位置为90度,并把这个状态定为第0个状态,只有初始化时执行这个状态。图6程序流程图412程序流程图简述这个只有两条腿的机器人,有8个自由度,即由8个舵机构成,控制这个机器人,就是要控制着8个舵机在合适的时间转到合适的位置,流程如下初始化,上电后,舵机的初始角度默认为89度(自己设定);读取第一个状态,STATE0;自增变量控制该执行的舵机号,每执行完一个舵机后自增加1;每个舵机的当前角度和目标角度进行比较,不相等,则加1或减1并计算计数初值,与此同时执行相应控制信号并启动定时器;相等,则短暂延时并启动定时器,等待下一个中断;概括的说就是整体的执行过程,就是8个舵机依次判断执行,是该转动还是等待,等待整个状态的完成,等待整个动作的完成。42算法421主要计算方法AT89S52中有三个16位计数器/定时器,在该系统的程序算法设计中利用单片机的定时器中断实现PWM,该方案将20MS的周期信号分为两次定时中断来完成(1)一次定时实现高电平定时;HT(2)一次定时实现低电平定时。L、的时间值随脉冲宽度的变换而变化,但,对于本HTL20HLTMSPWMCH1PWMCH2PWMCH3PWMCH6PWMCH8PWMCH7图7多路舵机控制的PWM输出时序20MSHT系统需要的脉冲宽度,由此可知的时间较长,为此可052HMSTLT将20MS分割为若干时间片(如图7所示),其中每一个时间片可以控制一路PWM输出,因此在每个舵机需要转到的最大角度为180时,20MS可以同时控制8路PWM输出,假如最大角度变小,如只有30,则可以同时控制24路。该方法的优点是,PWM信号完全由单片机内部定时器的中断来实现,不需要添加外围硬件。然而缺点是一个周期中的PWM信号要分两次中断来完成,两次中断的定时值计算较繁琐。422源程序说明对于12MHZ外部晶振工作下的AT89S52单片机,机器周期为1US,舵机的控制需要正脉宽为05MS25MS的矩形窄脉冲,在程序设计时设计了下面的算法,即找到舵机所要转到的角度与单ANGLE片机定时器初值之间的关系如下INITSINT5010/9UGEDAGLE(注式中500为初值的修正值。)则定时器的初值为0SIT63/256THEINITN5LUGD当找到与的关系后便可只需在所定义的数组中顺ANGLEIITDJSTAEG次添加每个舵机需要转到的角度了,数组如下所示数组中代表机器人第个动作第个舵机要转到的角度,依次MNSTN1212121,NMMNDJNSTSTTSTSTT机器人动作的状态数STATEM机器人的自由度为GN推想,理想情况下只要芯片存储空间足够大,可以很方便的扩展机器人的自由度和动作的状态数。然而实际情况往往受到单片机定时器及存储空间等各种因素的影响,无法扩展过多的舵机。在本系统中,是一个8自由度的机器人,故,而的值取决8NM于机器人执行的动作复杂程度,以下是本系统的数组表INTIDATADJ8890,90,90,90,90,90,90,90,90,90,90,106,94,90,90,106,90,90,90,106,94,120,60,106,88,90,90,80,94,120,60,80,88,90,90,80,94,90,90,80,88,120,60,80,94,90,90,80,88,120,60,106,94,90,90,106,90,90,90,106,94,90,90,106该数组总共由8行8列组成,表示是一个8自由度、8个动作状态的机器人,其中的每个数组元素分别代表某个舵机在机器人某个动作时转到的角度。数组中90为舵机上电后的初始位置,然后根据机器人需要的动作对其他状态的角度进行设置,如图8所示,图中“”表示应该转到90180之间的角度,“”表示应该转到090之间的角度。舵机的位置与目标位置的比较,因为两个位置都可以看作是一个宽度相同的一维数组,用循环的方法去比较对应的每一个舵机是否转到了目标位置。数组不能够直接比较大小,所以只好逐个比较每组对应数的大小,0_FORGDNUMBERGIJJSTA590190690后前290后前390790890490后前后前图8每个舵机关节转动时的角度变化直至全部相等,就表示这两个数组相等。5系统调试与总结51系统调试整个小组从2月初着手展开这项人形机器人的研究与控制,在一开始,可以说我们对机器人的所有硬件,以及控制思路完全都是空的,一切都是从零开始积累起来的。对于系统的调试,主要是从以下三个方面进行(1)单个舵机的研究和控制;(2)多个舵机的研究和控制;(3)机器人下肢运动的动作分解及实现。511单个舵机的研究和控制单个舵机的研究和控制主要的工作在于了解舵机的结构,工作原理,还有控制方法。当掌握并能够熟练控制单个舵机运行之后,那么就可以着手多个舵机的控制了。而多个舵机的控制主要就落在了程序的设计上,设计的要求稳定,精确,不能够出错。用程序实现舵机的控制,就必须了解舵机的控制方法。在探索舵机控制的过程中,我们也走入了一个误区。我们对PWM控制的了解,应该就是一定频率,一定占空比的矩形脉冲去控制,不同的控制是就是调节不同的占空比来实现,最初我们的考虑也是用通常意义上的PWM来控制。这样用程序实现,也就是连续的给予一定脉宽的PWM波。并且在上机调试后实现了其控制,但是这也只能算是表面上的实现。为什么说是表面上呢如果我们仔细思考一下,也许就会发现,这样做是不合理的。我们在一次控制中给出的一系列矩形波,它们的脉宽是不可能完全一样的,并且即使一样宽舵机在比较判断时自身给出的运动信号也不可能是完全一样的,那么这样的一系列连续信号加到舵机上之后,表面上舵机是不动的,但实际上舵机会有一个微小的摆动,那么机器人在实际控制中就会表现为有抖动现象。这样是不利于整体控制的。这么想了之后,我们也就慢慢想到了用单个窄脉冲来控制舵机。当然这是经过我们查找资料并请教别人得到的结果。在了解到这一点后,那么控制舵机就有了一个全新的思路了。只要给一个窄脉冲就可以控制舵机,用程序实现的时候就简单了,改变脉宽就能转到相应的位置。只要给每个舵机一个转到预定目标位置的窄脉冲,就可以完成相应的动作。但是在此时还是有一个未曾想到的问题,那就是,舵机本身的响应与执行速度是相当快的。给一个窄脉冲,就会以最快速度转到目标位置。如果每个舵机都以最快的速度转动,那将是很难想象会出现什么样的状况。以最快的速度转动,开始时要加速,转到的时候又要突然减速,稳定性肯定很糟糕。什么事情都不应该要求其一步到位的实现,事情的运作都是稳为第一前提的。那么该如何解决这个问题呢办法就是将一大步分解为有限多的小步,一小步一小步的向着目标位置转动,这样就会稳当多了。这样做的结果就是整体上和表面上转动速度慢了,稳当多了,实际的转动情况确实转一点,停一点,不是连续转动的,但给人的感觉却是一直在连续转动。整体运动控制就把不会再被惯性因素来极大地影响了。舵机的控制的学习经历了3个不同的阶段,相应的用来实现舵机控制的程序也经历了3个相应的阶段。起初我们是用一个舵机来实践的。第一阶段情况,我们直接给予一系列定周期的,占空比一定,总个数确定的脉冲信号,把两个角度60度和120度设为来回转到的目标位置,作用于舵机后,舵机就会不停地来回转动,但是速度比较快,算是可以动起来了。第二阶段情况,我们仅给舵机一个合适值的,高电平窄脉冲,当然这样的话,就不会再有周期和占空比的说法了。这样做最终的结果是,可以实现转动到预定的位置,但是速度依然很快,第三阶段,就是给舵机的窄脉冲的宽度是逐渐变化的,就像前面所说,这样做是为了使运动更好的趋于稳定。我们就让脉宽以1度为一小步的步幅缓慢前进,我们建立一个函数关系,把角度和时间联系起来,角度变化了,相应的脉宽就会跟着变化,这样的话,控制起来就方便多了。最终结果,可以让舵机缓缓转到相应的角度。以上就是单个舵机控制的认识与实践过程。512单个舵机的研究和控制在能够很好的控制单个舵机后,就该进行多个舵机的控制设计与实现了。多个的控制实际上就是对每一个的控制,51单片机本身的运算处理能力是有限的,所有舵机的并行控制执行是不保险的,所以只好串行控制执行。如果用多个定时器,由于运算速度有限,可能还没有运算结束就又中断了。这样就会发生紊乱,数据没有得到及时的处理,就该下一轮的执行任务了。所有的控制就落到了串行处理的流程上了。最终的流程设计在前面已经详细的说明了,这里就不再细说。总而言之,就是依次给每个舵机一个控制信号,所有舵机都执行一次后,判断是否所有的舵机都已经转到了相应的位置,如果转到了,就读取下一个状态并开始相应的执行;如果没有转到,就再执行一圈,然后判断,直到所有的都到位了。调试过程中还遇到一些实际问题,由于舵机的精度,以及单片机输出信号的误差等,实际结果与预想结果还是有很大的出入,比如说初始到90度位置,但是由于舵盘等原因,90读的位置并不是很理想,所以我们还需要不断地尝试与校准,寻找到一个较为理想的初始位置。动作设计也是同样的方法和过程。最终就能得到一个2维数组,这个数组每执行一次,就完成一个动作。对于这个机器人来说,就是前走一步。513机器人下肢运动的动作分解及实现从理论上而言,一个机器人的自由度越高,其肢体运动的灵活性就会越好,然而自由度加大提升了机器人动作分解的复杂程度和控制的难度,通常机器人能灵活行走的自由度数设置为12个,即每个腿6个自由度。而如前所述,本系统机器人下肢只有8个自由度,这极大地限制了机器人的运动,体现在机器人的运动上,即只能走直线,无法转弯。在机器人行走的过程中,稳定性至关重要,而如何调整机器人的重心又是决定稳定性的关键性因素。通过对行走过程动作的分析,机器人行走可分为如下几个步骤重心右移(先右腿支撑)、左腿抬起、左腿放下、重心移至双腿中间、重心左移、左腿抬起、左腿放下、重心移至双腿中间,共分8个阶段,即共8个状态,体现在程序中,所设计数组为8行的数组。这样的动作分解方法是由8个数目的自由度决定的,由于要调整重心,机器人行走的过程中总是会左右倾斜。52总结对于舵机的控制以及机器人的运动控制方面,在完成工作的过程中遇到了许许多多的问题,在此,小组成员分别对前段时间工作做出经验总结和原因分析。521总结一(作者王刚)要用单片机进行很精确的计时,那么就应该使用定时器,用空循环也可以实现计时,用空循环计数,虽然说计数个数很好算,但是用来精确计数,是非常不准确的。因为无法确定为了实现精确计数,最好尽可能的使用单片机的定时器来实现。当然,2个定时器的使用,在难度上会有增加,但只要注意区分,应用起来相对还是简单的。舵机的控制确实可以由一个单脉冲来实现其控制,但是实际问题是当我们这么控制时,相当于舵机以最快的速度转到目标位置,如果在实际控制时,运动惯性的存在,必然导致动作的抖动,甚至因为惯性将机器人甩出去。并且可能会因为静惯性太大,而无法执行动作。解决办法就是让其,能够实现小步子缓慢移动,不失连续性,并且实现从任意角度都可以以这样一个“小步子”到达预定的目标。)通用函数的实现将角度与计数周期联系起来,建立两者之间的函数关系。每个舵机设置一个角度变量,既要保持上一次目标角度(或者上次能够到达的角度),并通过上面的函数关系与这次的目标角度建立联系,经过优化运算以实现“稳定,准确”的到达既定目标。关于C语言编程的一点技巧(1)求取计数初值的方法,我们往往只知道的是需要计数的个数,转换为计数初值有点麻烦,但是有一种简单办法,那就是将计数个数的值进行取反运算,这样就直接简单的得到了。(2)定时器的模式1工作方式,当一次定时完成后,就需赋给初值,再次进行计数,但是,如果此时有一个另外的延时,延时后再来处理定时器,定时器会处于怎样的状态呢此时可以用开定时器,关定时器的方法。这样的话可以减少一些不必要的因执行某几条指令而耽误的时间。多个舵机控制的思路设计。多个舵机的控制,其由于单片机只能一次输出一个确定的信号,多个控制必然需依次输出每个舵机的控制信号,可行性在于,在我们设计单个舵机的转动时,每个信号给出后都需要一定的延时,来保证舵机能够转到相应的位置,如果每个舵机都需要给予一定的延时时间,那么整体的执行速度就会很慢了。但是,如果第一路输出后,转为低电平,并且接着执行下一个舵机,而此时其他路的执行时间就充当了作为第一路的延时时间,依次互补,就不需要刻意的延时,而又可以保证整体自信的速度。51单片机的RAM只有256字节,但是能用的只有128字节。如果在不使用一些一些特殊寄存器的前提下,可以把256字节的空间都当做RAM来使用。定义数据的时候,可以用INTIDATADJNUM,的命令来定义,这样的话256个字节就可以直接当做RAM来使用了,这样就极大地扩展了数据存储空间。对于一个系统来说,好多问题的解决都是符合常理的,我们要把问题的解决与平常的事理相联系。把常理融入到我们的实践过程中去,好多问题就可以得到很好的解决。我觉得系统的思想是相通的,不论从哪一个学科来说,所有的问题都是符合常理的。522总结二(作者赵爱芳)由前文可知,为了避免对硬件资源造成不必要的损失,我们对这个从未接触过的系统是按照循序渐进的方法慢慢摸索学习。下面我们将按照上面的思路将每一步的调试过程及结果一一详述一、调试1硬件的调试由于硬件部分只有舵机和最小系统,所以硬件的调试比较简单。首先是检查我们的最小系统工作是否正常。利用测试程序(测试程序代码见附录一)检测单片机的每个引脚电平的变化情况。当每个引脚都为高电平时,表明最小系统工作正常。其次是给舵机定个参考位置。由于每个舵机出厂时的位置不确定,为了防止在使用时因为机械的原因造成卡死而烧毁舵机,所以必须逐个校正,使每个舵机都保持统一的标准。在人型机器人中,为了在编程时简单一些,需要将每个舵机调整到以90度为中心。,因为这时不涉及舵机转动的稳定问题,所以只需要给舵机发送一个15MS的矩形脉冲即可。2软件的调试(1)单个舵机程序的调试因为以前从未接触过舵机,所以对其的编程可以说是一点都不熟悉。通过对单个舵机的研究,我们可以从中了解舵机的特性及基本机构功能。我们对单个舵机的预期目标是让它可以按照我们的意愿在允许的范围内任意转动。此时利用伟福仿真器可以在线调试程序。为了以防万一,我们选择使用示波器观察执行过程中的波形变化,只要波形的高电平脉宽在一定的时间内按照程序中的要求变化就可以了。当示波器上的波形符合要求时就可以用此信号控制单个舵机了,改变程序中舵机要转到的角度要求(也就是改变程序中舵机度数这个常量的数值),我们可以明显看到舵机的转动幅度不同。(2)多个舵机程序的调试在完成单个舵机的预期目标后。我们需要完成至少两个舵机连续运动的控制。此时只是为了适应一到多的过度,所以不需要过多的考虑动作。具体是使所有舵机不重复的完成各自动作后可以休息一定时间,然后再返回到原来的状态,休息一定时间后再重复以上动作。为了使程序有继续发展的空间,同时修改变化度数方便,我们将舵机所要转到的度数及舵机状态放到一个M行N列二位数组中(其中M表示每个舵机一次要转到的度数,N表示状态),改变数组中的数可以改变舵机转到的角度,增添舵机的状态可以改变舵机完成的动作。(3)多个舵机协同工作程序的调试在完成多个舵机程序的调试后,调整数据中需要工作的舵机个数很和状态,使之可以独立稳定的向前移动。二、总结1在系统调试组装中需要注意的问题(1)在调试舵机的过程中不能使之超过舵机转动的范围,比如说我们使用的舵机转动的范围为0180度,即所对应的高电平脉宽为05MS25MS。(2)在系统通电调试时,应先将电源接好检查无误后打开电源,然后在打开来最小系统的电源,开始调试。(3)在组装类人型机器人时,需要将舵机校准到同一个位置,也就是说使组装好的类人型机器人在中性轴在同一个水平面上。(4)在编类人型机器人的程序时应该注意每个关节的机械结构,把握好动作幅度,以防在运行调试时卡死而烧毁(5)在组装类人型机器人时应该先熟悉各部分的框架结构,然后在熟悉各关节的连接,最后按顺序组装。2在系统调试组装中遇到的问题就像在前面所说,我们以前没有接触过这个系统,所以我们从简单的观看别人组装的机器人的结果动作开始。然后利用别人搭建的硬件平台和我们熟悉的51最小系统开始我们的工作。因此暂时没有焊接和组装应将平台的工作,我们只需要查阅资料了解舵机的结构特性,然后再编程进行实际控制操作,从中总结经验,讨论遇到的问题,逐个解决。下面将总结遇到的问题及其解决方法。1)硬件问题虽然我们使用的是别人组装的硬件及最小系统,但在整个过程中系统的硬件还是出现了些小问题。(1)小系统的问题。在调试小系统时发现引脚的电平不符合要求,最下系统几乎不工作,首先是大概检查了一下线路,没发现问题,但是最小系统能有是什么问题呢然后,我们用万用表检测每一个焊点,以防有虚焊,然而,检查完后发现一切正常。最后我们使用51单片机课本上的方法检测晶振是否在工作,晶振正常,然后在检测单片机的好坏,当检测ALE端时输出频率正好是晶振频率的1/6,单片机也是好的,现在只能检查单片机是否在工作,检测PSEN端时,从示波器上看不出有脉冲数出,利用万用表检测这个引脚的电平为高电平不符合要求,在仔细观察下,才发现是将31脚和29脚弄反,当改正过来后,小系统工作正常。(2)舵机的问题。刚开始工作时,舵机工作正常。然而,当调试多个舵机的协同工作几次时,有一个舵机总是不听使唤。什么问题呢,是硬件问题还是软件问题检查程序后没有发现异常,应该可以推断是硬件问题了。为了确定是小系统还是舵机自身的问题。我将那个舵机的控制信号放到其他舵机上,其他舵机工作正常;将其他任意舵机信号加到那个舵机上,那个舵机依然不听使唤。可以肯定十多级的问题了。为什么这个舵机会产生这个问题呢我想可能是不停的调试使那个舵机的电位器触头滑动,找不到正确的位置,不管给怎样的脉冲信号,他都转到最大位置。所以只要换个好的舵机就可以解决问题。(3)组装中遇到的问题。在硬件组装过程中除过螺钉长度不够和缺少两个连接件外没有其他问题,只要注意上秒提到的组装问题就可以了。2)软件问题由于基本上没有硬件工作,所以刚开始就是编程。虽然我们组最后采用的是王刚同学的程序,但是我自己也在编程过程中遇到了一些问题,也试图将它们解决了。现在我就在软件中遇到的问题总结如下(1)函数调用问题。为了让程序调试方便,修改容易,在开始编程是就决定用模块化的函数调用思路来编程。然而,在具体的代码实现上却出现了一些问题。在编完程序后,用示波器观察波形,波形不符合要求,虽然产生了脉冲,但是脉冲的宽度却不随时间变化。利用单步跟踪,发现在每次中断调用舵机服务程序时,舵机需要转到的角度没有变化。也就是说,因为函数的形参是全局常量,随意他不随着程序的执行而变化,也就执行不到多及服务程序的中间,每次中断调用是赋给形参的都是初始值。解决这个问题用两种方法。一是不调用舵机服务程序,而是将他直接写在中断程序中。二是改变形参变量,那样程序就同王刚同学的基本相同了。(2)从一个位置向另一个位置转动的快慢。我们知道,当个舵机一个固定的脉宽,它将一最快的速度转到相应位置,但是实际控制时,由于运动惯性的存在,必然导致动作的抖动,甚至因为惯性将机器人甩出去。并且可能会因为静惯性太大,而无法执行动作。将一个动作分解为若干个小动作,目标是一个大的角度,但是执行时,可以让其以一个小角度,一小步一小步的转到目标地址。(3)中心轴不标准。本来舵机的中心轴不在标准位置,而给定的初始值为标准位置90度,所以产生了转动误差。还有就是角度往计数初值变化的式子中参数有点不合适,这两个因素就是最终导致初始化不正常。解决方法方法一通过改变数组中的初始值,慢慢的经过调试最终确定了最佳数据,及最佳角度。方法二通过改变程序中EXCHANGE函数中的参数,经过不断的调试,最终确定了一个比较合适的数值400,在这个数值下计算出来的角度是比较精确的,所以在这种前提下把数组中的数值设为90度,初始化即为最理想状态,即各个舵机的初始位置都在视觉所见的中心轴上。(4)数组大小问题。虽然王刚同学的思路很好,然而当加大数组时程序编译有错误。具体是当数组超过66时会发生编译不过去的现象。经过上网搜索,在定义数组时加了一个IDATA后能够编译通过。就其原因是因为51单片机虽然说有256的存储空间,可正式用的时候才能容128,所以加了IDATA之后地址范围从007F扩大到00FF,所以能够通过。三、心得体会在这一个月里,我虽然没有做多少工作,然而我学会了很多东西。首先不管你会得到咋样的结果,但是你至少应该努力的去做。就像我的程序虽然有很多逻辑上的问题,最后也没有使用,但是我至少知道了那些问题,也思考了如何去解决它。更重要的是我不会害怕去做它,也将自己的思路用程序实现了。其次不管你对一个问题的理解错对与否,在一个小组团队里,你都应该积极的讲出来,让大家讨论,这样不仅自己受益,同时说不定别热不会从中收到启发而解决另外的问题。就算这个小组解决不了,还可以听取小组外成员的意见,然后再想办法解决,想把发验证。再次就是要多动手,不管什么工作,做总比不做强。因为在做得过程中才遇到问题,才会想解决的办法。523总结三(作者刘丹)一、调试1舵机的调试单个舵机只要运行在所允许的角度范围,不至于卡死、烧毁就行。但是对于机械臂或机器人的腿而言,自由度越高就越难调试。在8自由度机器人整体调试时,由于每个舵机都不同,由于存在误差舵机的90度位置不一定就是中心轴上。如果在程序中初始值设为90度的话,不能准确的对每个舵机初始化。对舵机逐个校正,利用伟福仿真器在线调试程序通过改变初始值的角度,使中心轴趋于90度。这种方法不够精确,对整个过程仍然有影响,需要更多更准确的方法对舵机进行校正。2软件调试在软件的调试过程中遇到一个严重问题,单片机定时器及存储空间不足,单个舵机的程序占用接近2K的空间,8自由度的程序可想而知。在程序的编写中采用了二维数组表示机器人动作的状态。目前程序的结构不够明确,也不够精简,需要对程序进行改进和优化。3其它调试机器人在步行时的稳定在一定程度上与机器人的脚底板材料的摩擦系数有关。摩擦系数过小机器人走不稳,由于现有机器人的材质确定,只能在脚底附加一层摩擦系数较大的材料。摩擦对现有影响不是很大,可以根据需要改进。二、总结在双足机器人的学习与研究中,遇到了很多问题,通过查资料,请教别人,同组的讨论解决问题的同时也学会了很多,除了专业知识之外还有团队精神的培养。在刚接触到“两条腿”的时候,觉得想让它走路太难了,可能是没有接触过机器人,对它的硬件各方面都不了解。虽然是简单的动作都觉得是很难实现的。也正是因为如此,让我们这个没有接触过机器人的小团队更好奇、更感兴趣。学习是一个循序渐进的过程。PWM在利用脉冲宽度对舵机角度的控制上让我对机器人的神秘大大减少。可能对机器人运动相关知识了解的太少了。单个舵机在初步了解单个舵机的基本结构后,开始试图对单个舵机进行编程,实现的功能就是单个舵机连续的转到某一个角度。由于开始对PWM波和舵机工作原理的认识不够深刻,编程进入了一个误区。连续给舵机同等宽度的脉冲,舵机瞬间从90度达到135度。这不仅不符合机器人走路的要求而且对舵机的损坏比较严重。经过查阅资料对各方面的了解,对于单个舵机而言,只需给它一个固定脉冲,舵机就会转到固定的角度。如果只给一个你需要舵机转到的角度对应的脉冲,它的结果还是一样。经过讨论要让舵机连续的平稳的转到某一角度只能让它“一步一步”转。在程序中采用了循环语句使舵机一度一度(可根据需要改变)的转到所需角度。但是从调试的结果看出如果一步转的角度过大,舵机的连续性上不好,而且有明显的抖动现象。整体步行相对单个舵机而言,8个舵机连续工作更加复杂。为了使舵机的初始化更加准确,在舵机初始化测试时利用伟福仿真器在线调试程序通过改变初始值的角度对每个舵机进行校正,校正的标准是通过目测的,误差是肯定存在的。为了提高校正的精度,需要更精确的方法。在最后的调试过程中,机器人勉强可以走路,但是灵活性远远没有达到要求。尤其在初始化过程出现很不稳定的“踢腿”现象,即一个舵机瞬间转到所能达到角度的最大值。经过大家分析只能判定是舵机的问题。由于长时间使用舵机和不规范的使用使舵机磨损较大,使得给机器人带来很多不确定因素,调试过程更加困难。经过这一个月来的学习和研究,确实掌握了不少知识。专业上理解并掌握机器人相关的基础知识。从开始的对机器人的那种神秘感,对PWM的理解,对单个舵机结构的认识和编程,对机械臂的连续工作,双足机器人步行。一步步循序渐进掌握了不少知识,收获很多,虽然最终结果未达到预定的目标。虽然基本功能实现了,但是还有很多相关资料需要搜集,很多问题需要解决。在学习和研究的过程中,更能体会到团队的合作的必要和重要性。虽然我们只是一个小团队。在最初的搜集资料,一个人的力量是有限的,所看到的范围也是有限的。不可能对所有知识充分了解掌握,大家把搜集的资料共享效率就大大提高。对某个问题的认识也是如此,只有队员之间相互交流后才能确定谁的认识是正确的,谁的方案是最佳的。在很多问题上都需要大家来讨论,交流。看到自己的不足,大家优势互补。524总结四(作者张瑞娜)在一个项目的设计和完成过程中调试阶段是不可确少的。调试也分为硬件调试和软件调试,本项目的硬件调试主要是针对舵机的调试,软件主要是对程序的修改与优化。一、调试1硬件调试(1)舵机的校正每一个舵机的型号,初始角度都是不同的,也就是它的那个90度位置并没有在其所预定的位置,但在设计调试中为了使机器人的动作标准连贯,就要将每一个舵机的初始化角度调到统一的标准位置90度。下面是一个舵机的校准程序PWM1_P10EQUP10PWM波输出CYCLEEQU20000PWM的周期(单位微秒),则频率为50赫兹,周期为20MSCYCLE_HIGHEQU1200一个周期内,PWM端口为高电平的时间初始值)TIME_STEP_LENEQU50时间变化的步长即精度,即以005MS的步长变化ORG40HPWM_HIGH_LDATA40HPWM_HIGH_HDATA41HPWM端口为高电平时,定时器寄存器的值PWM_LOW_LDATA42HPWM_LOW_HDATA43HPWM端口为低电平时,定时器寄存器的值ORG0000HAJMPMAINORG000BHTIMER0OVERFLOWVECTOR定时器0溢出中断矢量)AJMPTIMER0_SERVER主程序MAINMOVR0,44HMOVR0,CYCLE_HIGHMOD256INCR0MOVR0,CYCLE_HIGH/256定时器初始化TIMER0MOVTMOD,0001HMOVPWM_HIGH_H,65536CYCLE_HIGH/256MOVPWM_HIGH_L,65536CYCLE_HIGHMOD256MOVPWM_LOW_H,6553620000CYCLE_HIGH/256MOVPWM_LOW_L,6553620000CYCLE_HIGHMOD256SETBPWM1_P10MOVTH0,PWM_HIGH_HMOVTL0,PWM_HIGH_LSETBET0允许定时器0中断SETBEA允许中断SETBTR0启动定时器0中断WAITSJMP循环查询中断中断服务子程序TIMER0_SERVERJBPWM1_P10,PWM_OUT_LOWSETBPWM1_P10MOVTH0,PWM_HIGH_HMOVTL0,PWM_HIGH_LJMPTIMER0_SERVE_RETPWM_OUT_LOWCLRPWM1_P10MOVTH0,PWM_LOW_HMOVTL0,PWM_LOW_LTIMER0_SERVE_RETRETIEND(2)动作的调整这部分其实就跟软件挂钩了,因为动作是由程序编程来实现的。具体分析见软件调试阶段。(3)初始化的校正本来舵机的中心轴不在标准位置,而给定的初始值为标准位置90度,所以产生了转动误差。还有就是角度往计数初值变化的式子中参数有点不合适,这两个因素就是最终导致初始化不正常。解决方法方法1通过改变数组中的初始值,慢慢的经过调试最终确定了最佳数据,及最佳角度。方法2通过改变EXCHANGE函数中的参数,经过不断的调试,最终确定了一个比较合适的数值400,在这个数值下计算出来的角度是比较精确的,所以在这种前提下把数组中的数值设为90度,初始化即为最理想状态,即各个舵机的初始位置都在视觉所见的中心轴上。2软件调试(1)动作调试此套动作是由一个二维数组实现的,该数组总共由8行8列组成,表示是一个8自由度、8个动作状态的机器人,其中的每个数组元素分别代表某个舵机在机器人某个动作时转到的角度。数组中90为舵机上电后的初始位置,然后根据机器人需要的动作对其他状态的角度进行设置。下面给出的动作数组是经过不断调试得到的90,90,90,90,90,90,90,90,90,90,90,106,94,90,90,106,90,90,90,106,94,120,60,

温馨提示

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

评论

0/150

提交评论