仿蜥蜴机器人设计与制作_第1页
仿蜥蜴机器人设计与制作_第2页
仿蜥蜴机器人设计与制作_第3页
仿蜥蜴机器人设计与制作_第4页
仿蜥蜴机器人设计与制作_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

摘要仿生技术出现至今已有数十载,而仿生学是应用生物学领域的一门分支学科,软硬件的相互结合赋予了机器人另一种形式的“生命力”。本次毕业设计是通过研究蜥蜴的外形和运动姿态所设计与制作的仿蜥蜴机器人。根据步态分析和自由度的计算,设计结构外形和基本运动姿态,通过电路设计和程序写入去控制各运动副的关节运动,并且通过仿真优化和上位机的调试优化得到能满足运动要求的仿蜥蜴机器人。关键词:仿生技术,电路设计,优化,关节运动

ⅡDesignandmanufactureoflizard-likequadrupedrobot——ControlsystemdesignAbstractIthasbeendecadessincetheadventofbionictechnology,andbionicsisabranchdisciplineinthefieldofappliedbiology.Thecombinationofsoftwareandhardwareendowsrobotswithanotherformof"vitality".Thisgraduationprojectisalizardrobotdesignedandmadebystudyingtheappearanceandmovementoflizards.Accordingtotheanalysisofgaitandthecalculationofdegreeoffreedom,thedesignofthestructureshapeandthebasicmotionposture,throughthecircuitdesignandprogramwritingtocontrolthejointmotionofeachmotionpair,andthroughthesimulationoptimizationandtheuppercomputerdebuggingoptimizationcanmeetthemotionrequirementsofthelizardrobot.Keywords:bionictechnology,circuitdesign,optimization,jointmotion

目录1.绪论 .绪论1.1研究仿生蜥蜴机器人的现实意义和目的代替人类在各种复杂和未知的工作环境中工作,国际社会对此表示赞成的声音越来越多,例如深海勘测,核辐射影响地区,对于恐怖组织所在地区,太阳系和各遥远星系人类所不可及之处。往小的方面说,需要机器人解放人类的劳动力,提高工作效率,例如负重搬运,运送物资,工厂生产,交通维护等都可以使用机器人代替人类社会工作。而四足机器人相比于两足机器人而言,具有更强的稳定性和良好的机动性,而相对于六足机器人而言,在构建和维护上又比六足更简单。而制作一台机器人的最终目的就是让它应用在我们的生活之中,模拟爬行动物的运动特征,通过机械结构和算法程序赋予其“生命”,使其能服务于人类社会,譬如赋予蜥蜴机器人自动避障和行走功能,便能使其具有基本避障神经元系统和运动特性,再赋予其图像识别和资料上传功能,便又具有勘测和记录的功能,我们可以根据所需要完成的目标而赋予其基本功能,所以研究仿生蜥蜴机器人的潜力十分巨大。1.2国内外的发展状况对于仿生蜥蜴机器人仿蜥蜴机器人的运动机构可以根据运动方式分为:传统的履带运动机器人,多足型传动机器人,多轮型传动机器人还有仿蛇爬形机器人,还包括近几年出现的水栖仿生机器人与多翼式仿生飞行机器人,未来可能出现的也许有喷射式机器人和磁力式机器人,或许还会出现打破传统力学机构的量子机器人和反重力机器人,这都是更高级的运动方式结构,而我们目前研究最多的方向还是在传统足式机器人,轮式机器人和履带机器人。第一个探索发展阶段是原始探索时期,此阶段通过对生物的物理外形和生物原型进行原始模仿,就比如飞机,原始的飞行器,通过模仿鸟类而制造,而且该阶段主要驱动力还是原始人力。直至科技不断发展,驱动系统装置不断更新换代和计算机技术的问世,从而进入第二个阶段—在2O世纪中后期, 第二个阶段主要是利用机电系统结合,通过编写控制程序实现生物功能例如行走,跳跃和爬行等。这是属于宏观上的仿生,不仅仅是仿形态而且也是仿行态,并实现较多的人为操控。快速的科技革新,使得人们进入了21世纪,人们开始从传统物理学和摩尔公式中继续摸索机器人的下一阶段第三阶段。在第三阶段中,通过对生物的不断深入研究和发现,生命机理的不断突破进展而进入了能将机械的结构跟生物体之间的部分特性进行巧妙融合,机械技术也在不断发展结合生物科学,这时候的计算机技术也在革新,当这三者巧妙的融合之后,仿生机器体也开始步入下一个发展阶段———第四个阶段。机械结构和生物性能进行部分的融合,亦如传统的机械结构与仿生材料之间的融合以及仿生驱动运动。随着对生物机理认识的不断发展,和计算机技术的不断革新,仿生机器人也往着下一阶段—第四阶段发展。第四阶段是属于机械结构与生命形式进行融合的类生命形态(传统意义上不算是生命),以科技赋予传统的机械体生物的部分特征与仿生形态,通过技术嵌入自主学习与思考能力,自我认知,还有运动姿态的生命特征,更与生物本身模仿更进一步,也随着人类对生命思维和意识还有神经系统神经元的不断深入。人类对机器人研究的不断探索如下图1-1所示。图1-1机器人研究发展趋势

目前所能了解到的仿生蜥蜴机器人相对而言数量十分有限,这个研究对象对于国际社会而言并不是热门选择。通过网上查阅资料可以依稀发现有研究这方面课题的科研项目,他们所研究的仿生蜥蜴机器人结构如下图1-2,图1-3,图1-4所示。图1-2仿生蜥蜴机器人A 图1-3仿生蜥蜴机器人B图1-4仿生蜥蜴机器人C生物,物理,机械的结合和仿生神经元系统控制成为科学家们研究的前沿方向。

2.仿生蜥蜴机器人步态设计2.1行走原理根据研究蜥蜴的爬行机制,骨骼之间驱动力的相互传导,还有关节的自由度,设计了一个以八自由度为运动关节,其中分为两只前肢和两只后肢,前后肢的机理都是相同的,每一条肢体都分配了三个自由度,分别是肩膀和手肘和手腕,胯和膝盖和脚踝这两种位置。需要实现的基本运动功能为:“前进”,“后退”,“左转”,“右转”。根据研究蜥蜴的运动形态,如图2-1所示。图2-1蜥蜴的运动形态2.2自由度计算在对其进行自由度的计算,仿生蜥蜴机器人都是空间移动,但传统的自由度计算公式繁多,每个公式对应的情况都各不相同,每个公式也都有一定的缺陷和局限性,对于此仿生蜥蜴机器人而言,综合考量后觉得使用目前最常用的自由度计算公式会比较合适,此计算自由度的公式是由1943年间,原苏联的科学院通讯院士陀勃罗弗尔斯基,由约束理论为根基所建立的一种具有一个统一的平面,空间机构的自由度公式:[5]: (式2-1)其中,式子中的m代表各个运动机构在运动过程中受到的共同的约束数量,式子中的n代表活动的杆体数额,而k为运动副级别的数量值。通过对传统的计算公式简化,可以得到一个新等式: (式2-2)式中,P为机构各级别运动副的总数,λ为多余的自由度,N是空间封闭的闭环数。 可以通过计算代入参数得出PX=3,λ=0,所以N=0,因此不构成封闭环,所以得出以下算式: W=3-0-3*0=3 (式2-3)再通过计算,总自由度=每只脚的自由度*脚的数量=12;所以该仿生蜥蜴机器人的总自由度是12.如图2-2所示单独观察单条腿的3自由度运动结构机理:图2-2单条腿自由度的三维结构图2.3步态分析运动方式根据研究运动中的占空比β以区分而分成3种:行走时(β>=0.75),加速走动时(0.5<=β<=0.75),跑步时(β<0.5)。其中,步行时是属于稳定步态,加速走动还有跑步运动时都是属于非稳定步态,仿生蜥蜴机器人在稳定步态过程中,运动的任意时刻要有三条节肢与地面接触以支撑身体平衡,且机体需要在稳定占空比区间里做出调整,以使重心落在三足的支撑点构成的稳定区间内。 当稳定度达到一个相对值时候,仿蜥蜴机器人行走的速度也达到相对值时,这时运动运动损失的能量越少而得到运动步态越合适。仿蜥蜴机器人运动步态运动一个周期的时间可以细分为迈腿损失时间和调整重心损失时间,仿蜥蜴机器人运动的速度跟跨度值的大小有关,也与重心所在落点位置还有运动时间有关,当迈腿的时间变小时运动步态便越合适。当稳定阈值不变时,运动需要调整的重心改变值越小得出的步态运动效率会越高,而运动损失的能量跟运动周期中重心的偏移程度相关。 本次设计选用的是三角步态法,前进时让前肢左,后肢左和后肢右,与前肢右,后肢左和后肢所分别构成的三角形区域交叉进行,使重心落于其中,而后退时是让前肢左,前肢右和后肢左,与前肢左,前肢右和后肢右所分别构成的三角形区域交叉进行,使重心落于其中。机器人便能稳定运行。

3.硬件选型与电路设计3.1硬件选用 12个MG90S舵机,各3D打印零部件,ArduinoUNOR3,杜邦线若干,1个面包板。1个HC-SR04超声波测距模块,1个16路PWM舵机控制板。3.2硬件系统框图 设计与制作整个硬件电路系统,首先需要设计好硬件电路的系统框图,而硬件系统框图如图3-1所示。66V电源输入16路P16路PWM舵机驱动板舵机ArduinoUNOR3超声波测距模块超声波测距模块图3-1硬件系统框图3.3舵机选型 舵机属于一种位置伺服驱动装置,由于其的可中断特性与角度偏移可变特性多被应用在一些需要不断改变偏移角度和维持偏移量的控制系统装置中,例如无人机,遥控汽车,许多机械机构装置中都有舵机的存在。一般而言,控制舵机方式一般是使用定时器还有中断器搭配单片机控制的。当传统单片机所搭载的舵机数量增多时,各模块不足以完整控制多舵机运行,而传统的单片机驱动方式步骤繁多且复杂,精度也无法保证,控制将变得复杂多样,而本次毕业设计设计的是12路的舵机驱动电路,也自因此,本次毕业设计采用市面上流行的开源硬件Arduino来驱动舵机。这种利用闭环控制系统的机电产品,内部结构为小型的直流电机、变速的齿轮组、控制板和可调节电位器等机械部件组成,具有可以自由控制所需偏移角度值的特性(偏移舵角,一般而言舵角不超过180°),如图3-2所示。图3-2舵机结构 本次设计选用的舵机型号是MG90S型号舵机,选用此种舵机的原因是他作为机器人的专用伺服电机,工作时产生的扭力大且稳定,精度高,反作用力影响较小。且使用插线式控制,适合于多自由度机器人的组装。MG90S舵机外形如下图3-3所示。

图3-3MG90S舵机外形 舵机的控制方式:通过时基脉冲的刺激,当受到0.5~2.5ms的脉冲反馈时,舵机能分析反馈脉冲而转动所需的角度,如图3-4:图3-4舵机控制方式脉冲角度对应表3.4微处理器选型 本次毕业设计选用的单片机微处理器模块是Arduino,Arduino是属于意大利研发的一款开源的硬件模块,是属于教学使用的硬件模块,该模块的一般适用对象是部分希望尝试交互式的物理对象的实践人员和众多创客们还有部分有想法的艺术家所构建的,它的程序开发完全开源,可以免费下载。如下表3-1所示是各种Arduino微处理器产品的特点和物理特性,还有使用场景,价格,尺寸各参数分析。

表3-1Arduino各种类参数对比Arduino版型ArduinoUNOArduinoDUEArduinoLeonardoArduinoMegaArduinoADKArduinoMicroArduinoYun微处理器ATmega328AT91SAM3X8EATmega32u4ATmega2560ATmega2560ATmega32u4ATmega32u4工作电压(电压/输入电压)5V/7~12V3.3V/7~125V/7~125V/7~125V/7~125V/7~125VCPU频率16MHZ84MHZ16MHZ16MHZ16MHZ16MHZ16MHZEEPROM[KB]114411SRAM[KB]2962.5882.52.5Flash[KB]32512322562563232Analogport(input/output)6/012/212/016/016/012/012/0Digitalport(IO/PWM)14/654/1220/754/1554/1520/720/7USB接口A-BMicroMicroA-BA-BMicroMicroUART1424422尺寸75*55mm108*54mm75*55mm108*54mm108*54mm45*20mm75*55价格区间(¥)100-200300-400100-200300-400400-500100-200500-600特点ArduinoUNO是Arduino主控制器件系列中的经典款,Arduino后的新产品都是以ArduinoUNO作为原型参照的ArduinoDUE是第一款基于32位ARM的Arduino主控硬件,基于AtmelSAM3X8ECPU的微控制处理器ArduinoLeonardo是一款低成本的主控制器。不仅拥有两个控制串口,而且数字和模拟口均比ArduinoUNO多ArduinoMega拥有54个数字口,16个模拟口,是一款具有超多IO口的Arduino主控制器。MegaADK是一款基于Atmega256的主控制器,其于Mega最大的区别在于-其完全兼容于GOOGLEADKArduinoMicro是基于Atmega32U4的超小型主控板。具有超小尺寸,ArduinoMicro可兼容小型面包板上。ArduinoYun是一块基于ATmega32u4和AtherosAR9331的主控器。Atheros支持基于Linux分支OpenWRT平台下Linino系统。适用场景适合于初学者使用DUE不像其他Arduino主控产品,工作电压是3.3V,所以其不兼容于5V的shield和外设低成本的特点适用于Arduino爱好者多使用于需要外接较多传感器的场景多使用Android手机的USB数据通讯场景多使用于对尺寸有较多要求的Arduino设计师多使用于基于Arduino的物联网开发人员 对于综上所述的硬件部分对比分析,本次毕业设计选用的微处理器模块是ArduinoUNOR3模块,是考虑到Arduino是开源硬件,易于二次编程开发,选用的ArduinoUNOR3模块具有USB通信功能,可以通过USB线直接连接电脑,通过软件“arduino”编程,软件编程语言环境属于类似Java、C语言的Processing/Wiring开发环境,与其它Arduino类产品对比更加简洁和容易使用,而此毕业设计对于产品而言无特殊需求,因此选择价格相对低廉,便于操作的UNO系列产品。而ArduinoUNOR3的外形如图3-5所示。图3-5ArduinoUNOR33.5舵机控制板选型 本次毕业设计选用16路PWM舵机驱动板作为控制从机,选用此舵机控制板因为这是一款具有16条通道的12比特的PWM通信的舵机模块,搭配了PCA9685芯片,功能强大,特点是可以只需要使用两个引脚通过I2C就可以驱动16个舵机,通过级联的方式叠加,可以最高级联控制62个舵机驱动模块,所以总共可以一次性驱动992个舵机。可以很好的节省主机空间资源。级联的方式如下图3-6所示:图3-6多驱动板级联(提供更大的拓展性) ArduinoUNOR3可以直接连接单个舵机驱动,但是如果舵机数量增加,ArduinoUNOR3只有12个引脚(2号引脚到13号引脚),本次实验所需的舵机数量正好为12个MG90S舵机,但如果直接使用ArduinoUNOR3外接12个舵机的情况下,因舵机的驱动电压维持在5~6伏特之间而需要相对而言更大的电压才能使得多个舵机同时正常工作,因此就需要外接更大功率的电源去供电使其正常工作,但大电源直接连接ArduinoUNOR3有可能烧坏硬件板,而且ArduinoUNOR3的IO口输出电流太低,无法全功率驱动舵机,对于处理器和外接硬件会造成一些难以预测的问题。 因此综合考量,这时候就需要使用舵机控制器——这款16路的PWM舵机驱动板,首先用ArduinoUNO连接舵机驱动板,再通过外接电源给16路PWM舵机驱动板供电去驱动外接的12个MG90S舵机。 接线图如下图3-7所示。图3-7硬件系统接线图(1)下列是微处理器和舵机控制机的接线方式:1.+5V——>VCC2.GND——>GND3.SDA——>SDA4.SCL——>SCL(2)下列是16路PWM舵机驱动板的主要参数: 1.电压:舵机供电5-7V(电压可以稍高点)。 2.逻辑电路电压:3-5V。 3.通信接口:使用I2C通信方式,引脚是SCL,SDA。 4.OE反使能脚:该引脚是低电平使能,正常情况该引脚不用连接模块,因为如果不接模块内部会自动默认接地使能。 5.运行环境频率:40-1000HZ。3.6电源选型 舵机采用USB供电的方式,通过arduino微处理器外接USB电源线到电源,再把舵机和ArduinoUNOR3共地接到外接电路中,因为舵机在不同的电压下工作扭力不同,电压如何过低,舵机产生扭力不够大以无法正常工作,达到实验目的,但电压太高又容易损坏舵机和硬件电路,所以电池的电压选择不能太高,本次实验选用4个1.5V锂电池并联成一个6V电源。3.7超声波测距模块选型 对本次毕业设计选用的超声波测距模块型号是HC-SR04,超声波模块的工作原理:向模块前方发射超声波,通过媒介传播过程中碰到前方物体,声波会进行反射,此时该超声波模块会对反射声波进行吸收和分析,得出时间差,根据声速运算得出物体的距离。 下列是该产品的各项功能参数如下:能够测量距离范围为2~450cm距离分辨率为0.3cm工作测量角度为15deg正常测量频率为40Hz(频率最快达到每25ms测量一次)

正常运行电压为4.5~5.5伏特

正常运行电流为10~40毫安接线方式:VCC,trig(控制端),echo(接收端),GND。3.8硬件系统电路设计 通过AltiumDesigner设计电路原理图,先打开“新建”,再点击“库”-“原理图库”,新建一个文件库,对所需要的各个硬件模块进行电路原理图设计,添加引脚和命名,然后再在原理图模块中添加刚刚新建的文件库,下载到“库”文档中,便可以在原理图绘制模块编辑。如图3-8所示为该仿蜥蜴机器人电路设计原理图.图3-8硬件电路原理图设计4.开发软件介绍4.1ArduinoIDE4.1.1ArduinoIDE软件介绍ArduinoIDE是一款能写入,下载和上传代码的集成开发环境的软件系统,该应用系统里面功能主要包括一款文本编辑器模块用于编写程序代码,一个文本内容控制部分还有一个功能强大的调用工具栏。通过USB串口连接电脑串口,进行串行通信来下载软件编码到硬件中,连接Arduino和Genuino之后,就能上传程序和通信了。而对于初次接触Arduino的开发者而言,操作灵活性强,能够较容易去掌握这个软件的使用,能够进行图形化的编程测试,不需要太专业的单片机的操作背景。相对的而已,Arduino的电路原理图与设计图和软件核心的库都是开源的,在Arduino的开源协议背景下可以修改程序原本的设计和对应的编码。4.1.2ArduinoIDE界面展示 当打开ArduinoIDE的主页面如下图4-1所示,但驱动舵机需要打开servo的库文件才能正常使用Arduino去控制舵机驱动。图4-1ArduinoINE界面找到“项目”的选项,打开后选择“加载库”,可以看到servo库的选项,如图4-2,点击它。图4-2servo库文件位置打开servo库之后,会自动调用servo编程模板,参数模板如下,可自己更改。Servo库的界面如下图(4-3)所示。#include<Servo.h>//引入舵机控制库文件Servomyservo;//实例化一个舵机对象来控制舵机intpos=0;voidsetup(){myservo.attach(5);//引脚5为舵机控制接口}voidloop(){for(pos=0;pos<=180;pos+=1){//控制舵机角度从0°转到180°myservo.write(pos);delay(15);//延迟15毫秒}for(pos=180;pos>=0;pos-=1){myservo.write(pos);delay(15);}}图4-3servo库编程界面4.1.3ArduinoIDE数据类型 下表4-1是ArduinoIDE的数据类型统计。表4-1ArduinoIDE数据类型Boolean布尔Char字符Byte字节Int整数Unsignedint无符号整数Long长整数Unsignedlong无符号长整数Float浮点Double双字节浮点String字符串Array数组4.2LobotServoControlLobotServoControl是一款多个舵机同时控制的最多24路舵机控制程序软件,软件公司是LOBOT,LobotServoControl的操作相对而言十分容易,需要有串口通信功能的舵机驱动板还有多个舵机同时使用,可以通过移动条件上位机软件里的图形进行实时舵机编程,还有添加删除更新等功能模块可以选用,动作组的下载或是去除功能也十分全面。该软件对偏差的处理支持下载和复位偏差还有实时读取偏差。而舵机控制器是整个软件的核心部分,必须先熟练舵机控制器的操作方法才能安装我们的机器人,当设计仿蜥蜴机器人之前,首先是需要对所有舵机进行初始化的操作,这时候就需要使用LobotServoControl上位机软件更加方便我们对舵机进行复位和初始化的操作,这样才可以更加方便安装机器人。LobotServoControl软件界面如下图4-4所示。图4-4LobotServoControl软件界面4.3SolidworksSoildworks是一款基于Windows运行环境中的机械设计应用软件,适用于多数机械设计师和机械爱好者建模使用,以设计功能模块为主的CAD/CAM/CAE的建模软件,具有十分人性化的操作界面,其用户操作界面如图(4-5)所示。该软件功能也十分强大,搭配许多功能型插件和设计组件,自打问世以来一直都是世界领先的一流三维CAD绘图软件。插件内部包括有以下功能例如:绘制草图,设计工程图,建立装配体,设计各个零件模块,钣金设计,运动仿真和外形渲染等众多功能模块。图4-5Solidworks2016界面 通过solidworks这个三维建模软件对机器人的外形进行建模,在草图中绘制出所建零件的各尺寸再进行拉伸切除等操作,建立三维模型,再通过打印的选项将所建模的零件转换成STL文件,在网上购买提供3D打印服务的店铺,将文件发送给店家,便可得到零件的模型实体。4.4ALTIUMDESIGNER AltiumDesigner是一款功能齐全而且十分强大的专业设计PCB硬件电路的软件,使用不算复杂,对于初学者来说也比较容易上手,是一款隶属于Altium公司的电路设计软件,软件诞生至今不过数载,在美国电子工程师之中广泛流行后,传入世界再传入中国国内。这款软件是Protel软件的后身,该软件功能十分强大并且这是唯一的一款集齐所有应用方案的电子电路设计软件,具有市面上常见的电子产品需要的所有的设计和核心技术功能,像是PCB模型原理图,PCB设计,还有电路设计以及仿真等功能模块,打开AltiumDesigner的设计文件类型如下表4-2所示。

表4-2AltiumDesigner文件类型文件拓展名类型说明.PrjPCBPCB项目/工程文件.SchDoc原理图文件.Schlib/.SCHLIB原理图库文件.PcbDoc印制电路板文件PcbLib/.PCBLIBPCB封装库文件.intLib集合库软件打开界面如下图4-6所示。图4-6软件打开界面

软件使用PCB界面如下图4-7所示。图4-7AltiumdesignerPCB界面

5.控制系统软件设计5.1软件系统设计基本流程框图因研究的目标是仿蜥蜴四足机器人,运作形式是爬行机器人,以此为基本运动机构骨架。根据仿生蜥蜴机器人控制系统的控制要求,主控芯片模块选用ArduinoUNOR3作为控制控制主机,辅助以MG90S型号舵机作为机器人的控制自由度单元,再配以超声波测距模块作为机器人的“眼睛”模块,能够实现避障功能,以此共同搭建仿蜥蜴机器人的控制系统部分。再通过调试,直至蜥蜴机器人能保持平衡并且能稳定得完成周期的前进,后退,左转,右转。 先将蜥蜴机器人通电后,进行初始化操作。将全身各个舵机和超声波模块初始化操作,将Arduino主机,Lobotservocontrol从机,MG90S舵机和HC-SR04超声波测距模块复位,再通过电脑ArduinoIDE写入编好的三角步态程序,之后上传运行蜥蜴机器人行走过程中输出和接收都通过HC-SR04超声波测距模块获取和发送信息,再通过Arduino主机进行信息分析处理,协调和调整从机完成步态的控制。 HC-SR04超声波测距模块行走避障软件设计:当机器人超声波测距模块往前方发送声波,反射后接收处理得出前方物体距离机器人大于35cm时,则继续保持前进姿态。当机器人超声波测距模块往前方发送声波,反射后接收处理得出前方物体距离机器人小于或等于35cm时,则选择执行转向指令,执行指令后再发射和接受声波检测前方,若前方障碍物大于30cm时则保持前进姿态,若前方障碍物小于等于30cm时则继续转向。以此类推。

软件运行流程图如下图5-1所示:图5-1软件流程程序框图5.2运动组软件设计5.2.1运动组方案设计本次设计实验对象是仿生蜥蜴,根据前面第二章的自由度设计可以计算得出,运动组模型具有12自由度,运动姿态也属于“爬行”姿态。蜥蜴机器人的两侧分别具有两条足,重心的保持与占空比β有关,此蜥蜴机器人的每一个动作都需要抬起一只脚,和运动时需要有至少3只脚立于地面保持平衡,使重心落于那3只脚所构成的三角形稳定区间内,从而可以保持机器人的稳定和平衡姿态。对此仿生蜥蜴机器人的运动组设计需要同时用到ArduinoIDE和Lobotservocontrol两个软件。5.2.2舵机偏差调整 (1)先通过LobotServoContro软件对各个舵机进行编号,共使用12个舵机,将舵机编号为1~12。四足机器人的每条节肢分配了三个舵机,按照顺序把每个舵机编号。再通过Lobotservocontrol上位机软件的舵机进行排列,将机器人舵机和上位机的舵机排布顺序一致,分为4只腿,前肢左分配:(1号舵机,2号舵机,3号舵机),后肢左分配:(4号舵机,5号舵机,6号舵机),前肢右分配:(7号舵机,8号舵机,9号舵机),后肢右分配:(10号舵机,11号舵机,12号舵机)。如下图5-2和图5-3所示。图5-2编号12个舵机图5-3编制舵机编号图当组装好12个舵机和仿蜥蜴机器人模型零件之后,每个舵机都会存在中值偏差(中值为1500,偏差调整幅度为-100~+100),需要对舵机进行偏差调整,使得仿蜥蜴机器人启动时能保持平衡姿态。5.3动作组各参数5.3.1前进 前进迈前左腿的动作命名为动作组(1),前进时需要保持一条腿抬起30度左右,另外三条腿保持重心的稳定,所以需要前肢左起脚,1号舵机和2号,3号舵机旋转角度分别从中值角度1500度旋转到1686度,1523度,1515度。其他各部分舵机保持平衡姿态,动作组(1)号的具体参数如下: #1P1709#2P1198#3P1779#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505然后动作组(1)运行结束。下一步使得机器人前倾,需要5号舵机和11号舵机同时转动,使得机器人重心运动,同时前肢左收回中值,经过调试,运动组(2)号具体参数如下:#1P1500#2P1500#3P1505#41500#5P1198#6P1500#7P1500#8P1500#9P1500#10P1495#11P1244#12P1505这时机器人已经往前迈出一只脚,需要保持静态平衡状态,舵机需要回到原始初值,动作组(3)参数如下:#1P1500#2P1500#3P1505#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505同理迈出右足的参数运算如上所述。 右脚交替运动的动作组参数如下: 动作组(4):#1P1500#2P1500#3P1500#41500#5P1495#6P1500#7P1709#8P1198#9P1779#10P1495#11P1500#12P1505运动组(5):#1P1500#2P1500#3P1505#41500#5P1198#6P1500#7P1500#8P1500#9P1500#10P1495#11P1244#12P1505运动组(6):#1P1500#2P1500#3P1505#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P15055.3.2后退 后退的具体动作姿态与前进运动姿态恰是相反,不过因为重量不同,所以导致重心会不同。动作组参数如下所示:动作组(7):#1P1500#2P1500#3P1505#41128#5P1988#6P1198#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505动作组(8):#1P1500#2P1221#3P1505#41500#5P1500#6P1500#7P1500#8P1174#9P1500#10P1495#11P1500#12P1505动作组(9):#1P1500#2P1500#3P1505#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505动作组(26):#1P1500#2P1500#3P1505#41128#5P1988#6P1198#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505动作组(27):#1P1500#2P1221#3P1505#41500#5P1500#6P1500#7P1500#8P1174#9P1500#10P1495#11P1500#12P1505动作组(28):#1P1500#2P1500#3P1505#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1029#11P2012#12P1150

5.3.3转向 转向姿态分为左转和右转。 1.左转动作组参数: 动作组(10):#1P1150#2P1919#3P1105#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505 动作组(11):#1P1500#2P1498#3P1105#41500#5P1495#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505 动作组(12):#1P1500#2P1498#3P1105#41779#5P1988#6P919#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505 动作组(13):#1P1500#2P1498#3P1105#41500#5P1988#6P1500#7P1500#8P1500#9P1500#10P1495#11P1500#12P1505 动作组(14):#1P1500#2P1498#3P1105#41500#5P1988#6P1500#7P1012#8P1988#9P1221#10P1495#11P1500#12P1505 动作组(15):#1P1500#2P1498#3P1105#41500#5P1988#6P1500#7P1500#8P1500#9P1221#10P1495#11P1500#12P1505 动作组(16):#1P1500#2P1498#3P1105#41500#5P1988#6P1500#7P1500#8P1500#9P1221#10P1988#11P2012#12P1151 动作组(17):#1P1500#2P1498#3P1105#41500#5P1988#6P1500#7P1500#8P1500#9P1221#10P1988#11P1500#12P1505 2右转动作组参数:动作组(18):#1P1500#2P1498#3P1500#41500#5P1500#6P1500#7P1150#8P1942#9P1965#10P1500#11P1500#12P1505动作组(19):#1P1500#2P1498#3P1500#41500#5P1500#6P1500#7P1500#8P1500#9P1965#10P1500#11P1500#12P1505动作组(20):#1P1500#2P1498#3P1500#41500#5P1500#6P1500#7P1500#8P1500#9P1965#10P1919#11P2012#12P1105动作组(21):#1P1500#2P1498#3P1500#41500#5P1500#6P1500#7P1500#8P1500#9P1965#10P1919#11P1500#12P1505动作组(22):#1P1058#2P1988#3P1872#41500#5P1500#6P1500#7P1500#8P1500#9P1965#10P1919#11P1500#12P1505动作组(23):#1P1500#2P1498#3P1872#41500#5P1500#6P1500#7P1500#8P1500#9P1965#10P1919#11P1500#12P1505动作组(24):#1P1500#2P1498#3P1872#42035#5P1895#6P942#7P1500#8P1500#9P1965#10P1919#11P1500#12P1505动作组(25):#1P1500#2P1498#3P1872#42035#5P1496#6P1500#7P1500#8P1500#9P1965#10P1919#11P1500#12P1505

5.4程序代码5.4.1程序结构流程图 首先对于整个程序进行流程图分析,流程框图如下图6-1所示。图6-1主程序流程框图(1)程序调用与设置流程图#include<Servo.h> //调用servo库文件#include<LobotServoController.h> //调用LobotServoController库文件constintTrigPin=2;constintEchoPin=3; //定义SR04引脚,输入口对应Arduino2号引脚输出口对应3号引脚floatcm; //将“距离”参数转化为单精度浮点数存储voidsetup(){Serial.begin(9600);pinMode(TrigPin,OUTPUT);pinMode(EchoPin,INPUT);}voidloop(){//发一个10ms的高脉冲去触发TrigPindigitalWrite(TrigPin,LOW);delayMicroseconds(2);digitalWrite(TrigPin,HIGH);delayMicroseconds(10);digitalWrite(TrigPin,LOW);cm=pulseIn(EchoPin,HIGH)/58.0; //单位转化厘米cm=(int(cm*100.0))/100.0; //保留两位小数Serial.print(cm);Serial.print("cm");Serial.println();delay(1000);}voidloop(){while(1){}}

(2)动作组流程图: 其次对动作住进行分析,运动过程的流程框图分析如下图6-2所示。图6-2运动组流程框图5.4.2程序代码while(1){cm=dist(cm);if(cm>=30){gear.runActionGroup(1,1);delay(20);gear.runActionGroup(2,1);delay(20);gear.runActionGroup(3,1);delay(20);gear.runActionGroup(4,1);delay(20);gear.runActionGroup(5,1);delay(20);gear.runActionGroup(6,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println(“goahead”);}//保持前进指令elseif(cm<=30){gear.stopActionGroup(0,1);delay(200);//停止gear.stopActionGroup(11,1);delay(20);gear.stopActionGroup(12,1);delay(20);gear.stopActionGroup(13,1);delay(20);gear.stopActionGroup(14,1);delay(20);gear.stopActionGroup(15,1);delay(20);gear.stopActionGroup(16,1);delay(20);gear.stopActionGroup(17,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println("Turningleft");//左转cm=dist(cm);//获取前方距离delay(1000);if(cm>=30&cm<1000){gear.runActionGroup(1,1);delay(20);gear.runActionGroup(2,1);delay(20);gear.runActionGroup(3,1);delay(20);gear.runActionGroup(4,1);delay(20);gear.runActionGroup(5,1);delay(20);gear.runActionGroup(6,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println(“goahead”);//继续前进}elseif(cm<=30){gear.stopActionGroup(18,1);delay(20);gear.stopActionGroup(19,1);delay(20);gear.stopActionGroup(20,1);delay(20);gear.stopActionGroup(21,1);delay(20);gear.stopActionGroup(22,1);delay(20);gear.stopActionGroup(23,1);delay(20);gear.stopActionGroup(24,1);delay(20);gear.stopActionGroup(25,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println("Turningright");delay(500);//左转后发现前方有障碍,此时右转}if(cm>=30&cm<1000){gear.runActionGroup(1,1);delay(20);gear.runActionGroup(2,1);delay(20);gear.runActionGroup(3,1);delay(20);gear.runActionGroup(4,1);delay(20);gear.runActionGroup(5,1);delay(20);gear.runActionGroup(6,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println("goahead");}//继续前进elseif(cm<=30)//右转后发现前方有障碍{inti,a=2;i=1;while(i<a){gear.stopActionGroup(11,1);delay(20);gear.stopActionGroup(12,1);delay(20);gear.stopActionGroup(13,1);delay(20);gear.stopActionGroup(14,1);delay(20);gear.stopActionGroup(15,1);delay(20);gear.stopActionGroup(16,1);delay(20);gear.stopActionGroup(17,1);delay(20);i++;Serial.print(cm);Serial.print("cm");Serial.println("Turningleftonce");}//执行一次左转指令gear.runActionGroup(7,1);delay(20);gear.runActionGroup(8,1);delay(20);gear.runActionGroup(9,1);delay(20);gear.runActionGroup(26,1);delay(20);gear.runActionGroup(27,1);delay(20);gear.runActionGroup(28,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println("Turningback");//执行后退指令delay(800);/}}}

6.调试过程6.116路PWM舵机驱动板从机内部资源 首先需要在网上找到关于LobotServoControl这软件的库函数才能使用ArduinoIDE进行通信,所以第一步是下载到<LobotServoController.zip>这个库文件如图6-1,将其导入ArduinoIDE函数库中,才能使用舵机控制板与Arduino通信。图6-1Lobotservocontroller.zip 导入之后,需要从ArduinoIDE中调用此库函数,输入”#include<LobotServoController.h>”,(或者可以直接从“项目”——“加载库”中直接打开调用)。如图6-2所示。图6-2加载库中添加界面 添加完之后就可以使用LobotServoController的库文件了,再对LobotServoController进行定义,将LobotServoController定义为gear,输入“LobotServoControllergear;”,此时ArduinoIDE便能够调用LobotServoControl中的动作组了,调用通信程序为:myse.runActionGroup(x,y)(其中x为动作组编号,y为次数)。 舵机控制板与主机Arduino直接是进行串口通信,波特率为9600。6.2Arduino主机内部资源第一步对Arduino与超声波测距装置进行接线步骤,接线图如下图6-3所示。图6-3示范接线图各接线接口如下表6-1所示:表6-1接线接口对应表HC-SR04ArduinoTRIG——>12ECHO——>11VCC——>5VGND——>GND此硬件模块也需要下载库文件与Arduino进行串口通信,库文件名称为NewPing_v1.7.zip,在ArduinoIDE里如上述一样进行库文件的添加,添加成功后便可使用ArduinoIDE对HC-SR04超声波测距模块进行串口通信控制了。调用此库文件输入“#include<NewPing.h>”,再进行定义通信端口,(1)输入#defineTRIGGER_12(//此意味这定义通信端口为12);(2)再输入%defineECHO_PIN11(//此意味这通信端口为11);(3)再输入#defineMAX_DISTANCE30(//此意味着测距的最大距离为30cm,此数据可调整)。对数据进行不断调试和调整,寻找一个最佳值便可。6.3整体运行调试 对微处理器和舵机驱动板都进行初始化内部资源调试之后,再连接起来进行整体运行调试,通过3D打印的各机械结构进行组装,先在LobotServoControl中编写好动作组,例如抬起左脚,抬右脚,前进,后退等动作指令,通过ArduinoIDE程序编码导入Arduino微处理器中,再拔出电脑,连接6V电源,仿蜥蜴四足机器人便会按照ArduinoIDE中编写好的指令自动运动。这是设计所需要达到的目标。但在实际操作中,仿蜥蜴四足机器人的主板和舵机3D打印零件尺寸有出入,拼装起来遇到一些困难,但最终还是克服了此困难。接着在动作组方面的调试中,很难找到整体协调的步态,运动仿真的实际情况与理论情况几乎不同,蜥蜴机器人较难保持平衡姿态运动,步态调整特别困难,但经过对实物的不断调试和修改,使得蜥蜴机器人能够正常完成动作指令。

总结本次我的毕业设计制作的是《仿蜥蜴机器人设计与制作——控制系统部分》,通过对仿生蜥蜴机器人的研究,不断温习之前学过的一些知识,像是Arduino,Solidworks,AD等各种软件,也通过本次毕业设计接触到一些以前较少接触的硬件模块,例如HC-SR04超声波测距模块,MG90S舵机等,发现Arduino对于开发者和爱好者而言功能十分齐全和强大,可以使用其制作各种感兴趣的机械部件。像是机器人以前彷佛总是出现在科幻电影中,或是高新技术的代名词之一,但通过本次毕业设计去了解到机器人的运动机构,控制原理,步态分析之后,发现机器人制作只要沉下心去了解就可以去突破,虽然这次制作的仿生蜥蜴机器人对于机器人研究领域来说只是一个沧海一粟,但对我而言,确实阶段性的一次成长,研究中遇到的各种困难和无助,都是自己慢慢熬过去的,也发现自己大学四年的理论基础层次比较薄弱,认识到自己理论和实践方面的一些不足之处。在本次毕业设计中,因为疫情的影响,导致我和我的组员无法面对面沟通交流,只能在线上沟通,但实际的操作方面无法互相完全理解对方,沟通上会有点障碍,也是自己慢慢克服这些阻碍,一步一步完成的毕业设计。对软件模块方面也不够了解,比如许多软件都是第一次使用,例如通过Lobotservocontrol控制舵机驱动板,是自己慢慢去学习使用这个软件操作,和其他的一些不懂的方面也是不断翻阅文献资料进行学习了解的。当然对于很多控制方面和程序方面不懂的问题,也有请教老师和同学,对我帮助最大的应该是上届的一位师兄,细心的指导我编程方面的细节,或者说没有他的帮助我无法这么顺利的完成毕业设计。时光荏苒如白驹过隙,一转瞬就到了毕业季了,回想大学那青春洋溢的岁月,或许我们在学校里收获最大的不是书本上的理论知识,不是那费尽心血熬出来的论文课设,而是不断克服困难的勇气,从不会被困难吓倒便是我们最大的收获,只要下功夫,再难的艰难险阻都可以突破。这次毕业设计也让我突破了自己,受益良多!

参考文献[1]杨东超,赵明国,陈恳,等.机器人一般自由度计算公式的统一认识[J].机械设计,2002(8):24-27.[2]谢能刚,岑豫皖,王璐,等.仿生蜥蜴行为的三目标协同进化算法及机构设计应用[J].机械工程学报,2009(5):62-69.[3]宜昌城老张,刘少冉(插画).基于32路舵机控制板的乐高6足机器人制作手记[J].无线电,2013(6):25-28.[4]储忠,阮坚实,虞刚明.六足仿生机器人步态研究和运动控制器设计[J].伺服控制,2009(4):67-70.[5]王冉,孔敏,张孝芳.基于Arduino的机器人系统控制方法分析及应用[J].机械设计与制造工程,2017(10):46-48.[6]王国彪,陈殿生,陈科位,等.仿生机器人研究现状与发展趋势[J].机械工程学报,2015(13):27-44.[7]刘东来.基于Arduino技术平台的仿生机器人控制系统设计与研究[J].南方农机,2019(21):14-14.[8]李明喆.基于Arduino的智能避障机器人[J].电子技术与软件工程,2019(11):79-79.[9]陈学东,郭鸿勋,渡边桂吾.四足机器人爬行步态的正运动学分析[J].机械工程学报,2003(2):8-12.[10]谢杰腾,颜晓文.基于Android手机语音和Arduino控制板的机器人控制系统[J].物联网技术,2015(3):101-102.[11]陈又嘉.仿生智能“蜥蜴”机器人[J].科技创新与品牌,2013(6):78-78.[12]LiangWenWang,WeiWeiZhang,TuanHuiWang,CaiDongWang,FanNianMeng.DesignandSimulationofaSingleLegofaJumpableBionicRobotwithJointEnergyStorageFunction[J].ProcediaComputerScience,2020,166.[13]TianlinSong.TheControllingResearchofthe3DBionicSnake-likeRobotbasedontheArduino[C].HongKongEducationSociety.Proceedingsof2013InternationalConferenceonMechanicalEngineeringandMaterials(ICMEM2013).HongKongEducationSociety:智能信息技术应用学会,2013:582-585.[14]小黑.科学家设计6腿蜥蜴机器人有望用于勘测火星[N].上海科技报,2013-03-27(A03).[15]顾佳朋.仿蜥蜴水上行走机器人特性研究与仿真[D].河北工业大学,2014.

谢辞走的最快的总是时间,让人抓不住又来不及感叹,大学生活已接近告别的尾声,如同一曲华丽绝伦的音乐会渐渐曲终人散,四年的努力与付出,随着本次毕业论文的完成,被画下完美的句号。本次论文设计是在吴明友老师的悉心指导和严格要求下完成的,从选题到具体的写作部分,从格式到内容,从初稿到定稿无不凝聚着吴明友老师的心血与汗水,在我毕业设计的期间,吴明友老师给了我许多专业知识上的指导和一些富含创造性的推荐,我受益匪浅,严谨的学风和求实的态度让我深受感动,在这次疫情期间,吴明友老师特别担心我们无法顺利完成本次毕业设计,心系各位同学,特地开了很多次会议,强调目前的进度,为同学们解疑答惑,我相信每一个同学都会感谢吴明友老师这段时间给与我们的帮助。再次想吴明友老师表达我深深的感谢和最崇高的尊重。在完成毕业论文的这段期间,也因为爆发的疫情使得我不能够顺利地回到学校与各位同学和我的组员交流讨论,然而这并不影响我的同学和组员所给予我的帮助,我的身边始终围绕着我的家人,我的朋友,我的同学,也是多亏他们无私的关心我才能这么顺利的完成本次毕业论文,再次也向他们表达我深刻的敬意!路漫漫其修远兮,吾将上下而求索。我愿在未来的学习与工作道路上,用更加丰厚的成果来报答以前关心,帮助,支持不放弃我的老师和同学们!感谢在百忙之中抽出时间对本文进行审阅,评议和参与本人答辩的各位老师!祝老师们桃李满天下!

附录附录一.程序完整代码#include<Servo.h> //调用servo库文件#include<LobotServoController.h> //调用LobotServoController库文件constintTrigPin=2;constintEchoPin=3; //定义SR04引脚,输入口对应Arduino2号引脚输出口对应3号引脚floatcm; //将“距离”参数转化为单精度浮点数存储voidsetup(){Serial.begin(9600);pinMode(TrigPin,OUTPUT);pinMode(EchoPin,INPUT);}voidloop(){//发一个10ms的高脉冲去触发TrigPindigitalWrite(TrigPin,LOW);delayMicroseconds(2);digitalWrite(TrigPin,HIGH);delayMicroseconds(10);digitalWrite(TrigPin,LOW);cm=pulseIn(EchoPin,HIGH)/58.0; //单位转化厘米cm=(int(cm*100.0))/100.0; //保留两位小数Serial.print(cm);Serial.print("cm");Serial.println();delay(1000);}voidloop(){while(1){cm=dist(cm);if(cm>=30){gear.runActionGroup(1,1);delay(20);gear.runActionGroup(2,1);delay(20);gear.runActionGroup(3,1);delay(20);gear.runActionGroup(4,1);delay(20);gear.runActionGroup(5,1);delay(20);gear.runActionGroup(6,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println(“goahead”);}//保持前进指令elseif(cm<=30){gear.stopActionGroup(0,1);delay(200);//停止gear.stopActionGroup(11,1);delay(20);gear.stopActionGroup(12,1);delay(20);gear.stopActionGroup(13,1);delay(20);gear.stopActionGroup(14,1);delay(20);gear.stopActionGroup(15,1);delay(20);gear.stopActionGroup(16,1);delay(20);gear.stopActionGroup(17,1);delay(20);Serial.print(cm);Serial.print("cm");Serial.println("Turningleft");//左转cm=dist(cm);//获取前方距离delay(1000);if(cm>=30&cm<1000){gear.runActionGroup(1,1);delay(20);gear.runActionGroup(2,1);

温馨提示

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

评论

0/150

提交评论