资源描述
1 引言机器人是作为现代高新技术的重要象征和发展结果,已经广泛应用于国民生产的各个领域,并正在给人类传统的生产模式带来革命性的变化,影响着人们生活的方方面面。对于步行机器人来说,它只需要模仿人在特殊情况下(平地或己知障碍物)完成步行动作,这个条件虽然可以使机器人的骨骼机构大大降低和简化,但也不是说这个系统就不复杂了,其步行动作一样是高度自动化的运动,需要控制机构进行复杂而巧妙地协调各个关节上的动作。双足机器人的研究工作开始于上世纪60年代末,只有三十多年的历史,然而成绩斐然。如今已成为机器人领域主要研究方向之一。最早在1968年,英国的MosherR试制了一台名为“Rig”的操纵型双足步行机器人1,揭开了双足机器人研究的序幕。该机器人只有踝和髋两个关节,操纵者靠力反馈感觉来保持机器人平衡。19681969年间,南斯拉夫的M.Vukobratovic提出了一种重要的研究双足机器人的理论方法,并研制出全世界第一台真正的双足机器人。双足机器人的研制成功,促进了康复机器人的研制。随后,牛津大学的Witt等人也制造了一个双足步行机器人,当时他们的主要目的是为瘫痪者和下肢残疾者设计使用的辅助行走装置。这款机器人在平地上走得很好,步速达0.23米/秒。日本加藤一郎教授于1986年研制出WL12型双足机器人。该机器人通过躯体运动来补偿下肢的任意运动,在躯体的平衡作用下,实现了步行周期1.3秒,步幅30厘米的平地动态步行。法国Poitiers大学力学实验室和国立信息与自动化研究所INRIA机构共同开发了一种具有15个自由度的双足步行机器人BIP2000,其目的是建立一整套具有适应未知条件行走的双足机器人系统。它们采用分层递解控制结构,使双足机器人实现站立、行走、爬坡和上下楼梯等。此外,英国、苏联、南斯拉夫、加拿大、意大利、德国、韩国等国家,许多学者在行走机器人方面也做出了许多工作。 国内双足机器人的研制工作起步较晚。1985年以来,相继有几所高校进行了这方面的研究并取得了一定的成果。哈尔滨工业大学自1985年开始研制双足步行机器人,迄今为止已经完成了三个型号的研制工作。其中HIT为12个自由度,实现了静态步行和动态步行,能够完成前后行、侧行、转弯、上下台阶及上斜坡等动作。目前,该校正致力于功能齐全的双足机器人HIT的研制工作,新机器人包括行走机构、上身及髋部执行机构,初步设定32个自由度。国防科技大学也进行了这方面的研究。在1989年研制成功了一台双足行走机器人,这台机器人具有10个自由度,能完成静态步行和动态步行。国防科技大学还将工业机器人的轨迹示教方法用到了两足步行机器人的步态规划中,形成了步行机器人的步态示教规划技术。值得一提的是,北京理工大学研制成功我国首例拟人机器人BRH-01,该机器人身高1.58米,体重76公斤,具有32个自由度,每小时能够行走1公里,步幅0.33米。除了能打太极拳,这个机器人还会腾空行走,并能根据自身的平衡状态和地面高度变化,实现未知路面的稳定行走。它在系统集成、步态规划和控制系统等方面实现了重大突破,标志着我国双足机器人研究已经跨入世界先进行列。国内其它院校如清华大学、上海交通大学、北京航空航天大学等高等院校也在近几年投入了相当的人力、物力,进行智能双足机器人的研制工作。我校也开始了这方面的研究工作,不过我们的工作处于研究的初级阶段。为了促进机器人技术在我国的发展,全国各地尤其是部分高校举办了各种类型的机器人大赛。中国机器人大赛是由中国自动化学会机器人竞赛工作委员会和科技部高技术研究发展中心主办的一个全国性的赛事。其中最为引人瞩目的舞蹈机器人项目,足球机器人项目就是为了促进双足步行机器人的发展而设立的。由于步行机器人的实现目前还存在很多技术难题,前几届全国机器人大赛基本上是以轮式机器人为主,步行机器人参赛才被列入议程不久。由此可见,双足步行机器人的发展还有一段很长的路要走。研制双足步行机器人的重要内容是对其进行建模分析、步态规划、控制分析等。基于上述原因,本课题拟进行双足步行机器人的基本设计与研究,研制具有高度稳定性的双足步行机器人平台,为研究得后续工作和进一步的拟人机器人研制奠定基础,所设计的机器人以ATmega1280单片机微控制器为核心技术芯片,完成行走、下蹲、倒地、起身、前滚翻、后滚翻等简单动作,同时通过一些必要的传感器组件完成其对前方道路情况的探测和判断,以达到避障效果。2 双足智能机器人总体分析要设计和开发一个步行机器人,首先应该对其进行总体分析和设计,确定步行机器人的功能、基本结构和系统配置等。2.1 功能定位这款机器人不仅能够满足实验室科研的需要,而且应该是一款很适合学生参与、研究、学习的机器人,能够满足互相学习的需要。现在希望制作出一个成本相对较低的机器人,研制双足步行机器人能够满足这方面的要求。 基于上面几点的考虑,决定开发一款双足智能机器人,首先使其能够完成一些基本动作,既开始时先走3步、立正、然后卧下(身体向前)、向前翻跟斗3次,再起立、向前走3步、立正、然后卧下(身体向后)、再向后翻跟斗2次、再起立、然后以轻快步履走向终点、要在指定5分钟或少于指定时间内完成所有动作,及要走到终点,同时要求其对前方道路情况的探测和判断,用以避障。2.2 自由度的配置机器人可以有很多不同类型的关节,有线性的、旋转的、滑动的或球铰链型的。人体的髋关节和踝关节类似小运动范围的球关节,能够使人灵活行走,实现前后左右拐弯等行走动作,方向灵活,但需要控制的自由度多、难度大,所以在机器人结构中不常用。但是单纯用旋转关节来实现多自由度的设计势必给空间布置和安装增加了难度,而且同时又考虑到关节驱动件驱动能力、运动效率和设计成本,以及设计审美性等因素。该双足智能机器人设计的目的是要实现拟人下肢多自由度得平稳行走,在实现这个功能的前提下为降低设计的难度,我们按照目前世界上各研究机构普通采用的下肢10个自由度的关节配置形式,来实现行走功能所必须的各关节自由度分布,具体自由度配置为单腿髋关节2个,膝关节1个,踝关节2个。髋关节用于摆动腿,实现迈步,并起到了辅助平衡作用。膝关节主要用来调节重心的高度,及改变摆动腿的着地高度,使之与地形相适应。踝关节用来和髋关节相配合实现支撑腿的移动,以及调整与地面的接触状态。基于郑元芳博士的理论,来规划自己所要设计的双足机器人的自由度。为了实现这款双足步行机器人的稳步行走,可以规划其运动过程,假设机器人行走步骤:先走3步,立正,然后卧下,向前翻跟斗3次,再起立,向前走3步,立正,然后卧下(身体向后),再向后翻跟斗2次,再起立,然后走向终点,遇到障碍物,能向左拐。则从机器人步行步骤可以看出:机器人向前迈步,髋关节的前向旋转自由度起作用,同时配合踝关节可实现支撑腿的移动;这样,所设计的双足步行机器人有10个个自由度,每条腿5个自由度,即踝关节有2个自由度,膝关节有1个自由度,髋关节有2个自由度,包括前向、后向自由度。其结构图见下图1。图1自由度的分配踝关节和髋关节采用十字交叉结构。十字交叉关节又叫万向联轴节,常用于汽车方向盘底盘转向机构,可以实现互相垂直方向的两个自由度运动,这种机构可以减少关节耦合程度和非线性。研究表明:至少要有髋、膝、踝这三个关节,双足稳定行走才能成为可能。髋、膝、踝关节对于稳定有效的行走来说是不可少的。髋关节用于摆动腿,实现迈步并使上躯体前倾或者后仰,使之在步行过程中起辅助平衡作用。膝关节主要用来调整重心的高度、并用来调整摆动腿的着地高度,使之与地形相适应。踝关节和步行功能有关,它用来和髋关节相配合实现支撑腿和上躯体的移动,而且还可以调整脚掌与地面的接触状态。如果踝关节被固定,将会缺乏与地面触觉感知的能力,前后向稳定性很差。2.3系统结构设计根据确定的自由度配置方案以及选用的微型伺服马达、传感器、控制板,设计机器人的零件。本着结构简单、尽量采用通用零件、外形美观等原则,对机器人的机构及外观进行优化。2.3.1 布置对称性本文设计的机器人机构,其主要特点有以下几点:(1) 步行运动中普遍存在结构对称性。Goldberg3等人研究了步行运动中的对称性,发现机身运动的对称性和腿机构的对称性之间存在相互关系。在单足支撑阶段,对称性的机身运动要求腿部机构也是对称的;在双足支撑阶段,机身对称性运动未必需要腿部机构的对称性,除非有额外的约束条件。根据这一点,我们在结构设计时也采用对称性布置。(2) 框架的设计有效地利用了舵机的尺寸大小,并使舵机的活动范围能尽量符合各关节的活动范围。(3) 采用多关节型结构。行走机构能实现平地前后、平地侧行、转弯、上下台阶等功能。(4) 整个结构采用1mm的铝合金(LY12)钣金材料。(5) 由于机器人的各关节是用舵机驱动为了减小机器人的体积、减轻重量,机器人的结构做成是框架型的。框架的设计有效地利用了舵机的尺寸大小,并使舵机的活动范围能尽量符合各关节的活动范围。 实物图见下图2所示 。 图2 狭窄足双足机器人机械结构简图2.3.2 驱动方案的选择实现行走的基本问题是对机器人各关节位置、速度的伺服控制和协调控制。如果把连杆以及关节想象为机器人的骨骼,那么驱动器就起到肌肉的作用,它通过移动或转动连杆来改变机器人的构型。驱动器必须有足够的功率对负载加速或者减速。同时,启动器本身要精确、灵敏、轻便、经济、使用方便可靠且易于维护。目前机器人的驱动方式主要有液压驱动、气压驱动和电机驱动三种方式。液压驱动方式虽然具有驱动力矩大、响应速度快等特点,但是成本高、重量大、工艺复杂,且有发热问题。气压驱动易于高速控制,气动调节阀的制造精度要求没有液压元件高、无污染,但是位置和速度控制困难,并且其工作稳定性差,压缩空气需要除水。液压驱动与气压驱动不能实现试验系统自带能源的目标,直接决定了这两种驱动方式难于应用到双足机器人系统中。电机驱动具有成本低、精度高、可靠且维修方便等特点,容易和计算控制系统相连接,目前的双足机器人大都采用这种方式。舵机是一种最早应用在航模运动中的动力装置,是一种微型伺服马达,它的控制信号是一个宽度可调的方波脉冲信号,所以很方便和数字系统进行接口。只要能产生标准的控制信号的数字设备都可以用来控制舵机,比如PLC、单片机和DSP等。而且舵机体积紧凑、便于安装、输出力矩大、稳定性好、控制简单。根据所需的驱动力矩要求和性价比方面的考虑,我们决定选用辉盛公司生产的12公斤大扭力全金属齿轮舵机。该类型舵机价格适中且规格参数能够满足双足机器人的各项性能要求。因此在综合了开销,性能等一系列因素后我们选择了MG945。经过尝试,我们得出了舵机转动角度与脉冲的对应关系:90度对应的差不多是1.6ms的脉冲,也就是说一个1.6ms的脉冲MG945就转到90度,而0度对应的是0.8ms脉冲,180度对应的是2.1ms脉冲。2.3.3 避障传感器原理智能关节机器人为了能在未知或时变环境下自主地工作.应具有感受作业环境和规划自身动作的能力。为此.必须提高机器人对当前感知环境的快速理解识别及实时避障的能力。实时避障是实现智能化机器人自主工作能力的关键技术.也是国内外智能机器人近期发展的一个热点.其显著特征是具有传感器信息反馈.可以实现很好的智能行为。红外传感器是一种比较有效的接近觉传感器,经常被国内外学者应用在多关节机器人避障系统中,用来构成大面积机器人“敏感皮肤”,覆盖在机器人手臂表面,可以检测机器人运行过程中的各种物体。传感器发出的光的波长大约在几百纳米范围内,是短波长的电磁波。红外传感器具有以下特点:不受电磁波的干扰、非噪声源、可实现非接触性测量。另外,红外线(指中、远红外线)不受周围可见光的影响,故可在昼夜进行测量。同声纳传感器相似,红外线传感器工作处于发射/接收状态。这种传感器由同一发射源发射红外线,并用两个光检测器测量反射回来的光量。由于这些仪器测量光的差异,它们受环境的影响非常大,物体的颜色、方向、周围的光线都能导致测量误差。但由于发射光线是光而不是声音,可以希望在相当短的时间内获得较多的红外线传感器测量值。测距范围较近,大致为30cm以内。3 双足智能机器人步态规划步态规划是双足智能机器人研究中的一项重要工作,步态规划的好坏将直接影响机器人行走过程中的稳定性、所需驱动力矩的大小以及姿态的美观性等多个方面,同它也直接影响到控制方法及其实现的难易程度。3.1步态规划的基本原则步态规划4工作既可以在关节空间内也可以在直角坐标空间内进行,无论在哪个空都有很多不同的规划方法。事实上,许多方法可以在两种空间内通用。直角坐标空间的轨迹规划比较实用和直观,可以得到一条可控且可预知的路径,人们很容易看到机人末端执行器的轨迹,但计算复杂不易规划。而且,难以确保不存在奇异点(发生机器轨迹穿入自身,及轨迹到达工作空间之外等)。显然,对于指定的像直线运动那样的径,必须在直角坐标空间内进行规划,才能生成直线。如果不要求机器人跟踪指定的径,那么关节空间的轨迹规划更容易计算从而产生出实际的运动。实际上,所有用于节空间轨迹规划的方法都可用于直角坐标空间的规划。最根本的差别在于,直角坐标间轨迹规划必须反复求解逆运动学方程来计算关节角。对于关节空间轨迹规划,规划数生成的值就是关节量,而直角坐标空间轨迹规划函数生成的值是机器人末端执行器位姿,它们需要通过求解逆运动学方程才能转化为关节量。双足步行机器人的步态规划,是指机器人行走过程中其各组成部分运动轨迹的划,比如说,脚掌何时离开地面、摆动相中整个脚掌在空中的轨迹、何时落地等。关键之就在于所规划的轨迹必须满足零力矩点(ZMP)稳定条件,否则,机器人不能稳定步行步态规划要解决的问题主要有:1. 保证机器人本体不和环境或者自身发生干涉,从而导致无法实现预定的轨迹。2. 保证机器人的稳定性。机器人的稳定性问题一直是困扰两足步行机器人发展的重要问题,由于各个关节间的藕合作用,很难设计出理想的ZMP轨迹5。现在使用的步态规划方法主要有如下几种:(1) 基于实验的规划方法这种规划方法基于力学的相似原理,基本过程如下:让人模仿机器人行走(如果机器人有几个自由度,那么人在模仿行走的时候也尽量只动相应的关节),同时对此人的行走过程进行正面和侧面的录像,然后对这些录像进行分析,得到此人在步行过程各个主要关节的角度变化与时间的函数,然后根据力学相似原理把这些函数相似地推广到机器人的关节变化上。(2) 基于能量原理的规划方法这种方法来源于一个生物学假设:人经过千百万年的进化,其行走方式是能量消耗最低的,而且还能保持步行的稳定性。如果机器人也能满足这个假设,则其行走方式将与人一样或很接近。根据能耗最小原则可以建立一个变分方程,并最终得到机器人的轨迹方程。(3) 基于力学稳定性的规划方法在机器人行走过程中,其ZMP点必须落在某个区域范围之内,只有这样才能保证步行机器人稳定地行走。实现方法有两种:a. 计算出理想的ZMP轨迹,然后推导出各个关节的运动函数以实现理想行走。b. 先大致规划出双足和躯干的运动轨迹,然后进行ZMP计算,最后选出稳定性最好的结果作为控制方程。相比前一种方法,后一种可以较快地得到规划结果。在保证了机器人基本性能的前提下,尽量减少控制的工作量,降低成本。所以本文将采用第二种方法,结合三次样条插值和机器人的逆运动学规划进行机器人步态的参数化设计。3.2步态规划的具体方法 合适的步态设计是机器人实现动态行走的关键。在计算各关节轨迹之前,首先要建立机器人所在的空间坐标系。坐标系的 x轴指向机器人的正面,y轴由右侧指向左侧,z轴垂直向上,原点0位于后脚完全落地时踝关节在地面上的垂直投影处。当机器人沿着直线往前走时,由于只考虑前向运动,双脚和 腰部在侧方向( y轴)上的位置是不变的,因为设定条件为机器人在水平地面行走,且脚面抬起高度为0,所以z轴位置不变。因此,仅仅讨论在 x平面内的轨迹。机器人所在的空间坐标系如图3 所示 。图3 机器人的空间坐标系双足机器人完整的步行过程包括三个阶段6 (1) 起步阶段:由初始的双腿并立静止状态变化到行走状态,一条腿向前跨出了半步距离,髋部速度从零上升到恒定值; (2) 整步阶段:两条腿交替地向前跨出一步距离,髋部速率保持不变; (3) 落步阶段:后腿向前跨出半步,落在与另一条腿并行的部位,髋部速度减少到零,恢复成双腿并立静止状态。主要讨论整步的轨迹计算。前向运动的规划步骤如下: (1) 确定步速和步长; (2) 设定初始参数,计算踝关节和髋关节轨迹 ; (3) 根据踝关节和髋关节轨迹计算膝关节轨迹; (4) 计算ZMP轨迹; (5) 改变参数值,返回第 2步; (6) 选取具有最大稳定性的轨迹。 步态规划的流程图如图4所示。图4 双足机器人的步态规划流程图双足步行机器人行走控制的关键是根据踝关节和髋关节的运动轨迹确定膝关节的运动轨迹。在脚面抬起高度为0的情况下,膝关节的轨迹由步幅唯一决定,而步幅和步速则可唯一确定出髋关节的轨迹,其步态周期图如图5所示。图5 步态周期图因为单支撑和双支撑是一个交替的过程,双腿支撑需要有一定时间来保证ZMP点由后脚移动到前脚,所以我们取双支撑的时间间隔为20%个周期。从上图可以看出在一个完整的步态周期里包括了两个双支撑和两个单支撑时间段,双支撑占20%个周期,单支撑占80%个周期。对于单腿来说整个周期里只有一个摆动周期,占40%个周期,支撑周期由一个单支撑和两个双支撑组成,占60%个周期。根据机器人自身结构特点,在行走时采用“平行步态7”,如图所示。机器人采用这种步态行走时,两脚的落脚痕迹是相互平行的,实现这种步态行走的机器人对其自由度要求较少,但对稳定平衡提出了较高的要求。 4 控制系统的硬件设计4.1 主控制板主板选用南阳理工学院自动化实验室自行开发的Arduino MEGA控制板,该主板是以ATmega1280单片机微控制器为核心,包括电源模块、USB下载模块、ISP下载模块、电机驱动模块、外部晶振以及各种I/O接口。主板如图6所示。图6 主控制板为了满足对机器人主控制平台的需求,我们设计了基于Arduino开发平台的机器人主控制板。机器人主控制板的原理图如附录1所示。进行PCB设计时的技巧和方法如下: (1) 传输线拐角要采用45角,以降低回损。 (2) 要采用绝缘常数值按层次严格受控的高性能绝缘电路板。这种方法有利于对绝缘材料与邻近布线之间的电磁场进行有效管理。 (3) 要完善有关高精度蚀刻的PCB设计规范。要考虑规定线宽总误差为+/-0.0007英寸、对布线形状的下切(undercut)和横断面进行管理并指定布线侧壁电镀条件。对布线(导线)几何形状和涂层表面进行总体管理,对解决与微波频率相关的趋肤效应问题及实现这些规范相当重要。 (4) 突出引线存在抽头电感,要避免使用有引线的组件。高频环境下,最好使用表面安装组件。 (5) 对信号过孔而言,要避免在敏感板上使用过孔加工(pth)工艺,因为该工艺会导致过孔处产生引线电感。如一个20层板上的一个过孔用于连接1至3层时,引线电感可影响4到19层。 (6) 要提供丰富的接地层。要采用模压孔将这些接地层连接起来防止3维电磁场对电路板的影响。 (7) 要选择非电解镀镍或浸镀金工艺,不要采用HASL法进行电镀。这种电镀表面能为高频电流提供更好的趋肤效应此外,这种高可焊涂层所需引线较少,有助于减少环境污染。(8) 阻焊层可防止焊锡膏的流动。但是,由于厚度不确定性和绝缘性能的未知性,整个板表面都覆盖阻焊材料将会导致微带设计中的电磁能量的较大变化。一般采用焊坝(solder dam)来作阻焊层。4.2硬件电路总体结构(1) 主芯片Arduino MEGA控制板采用的是Atmega1280 9AVR芯片(如图7所示),图7 Atmega1280内部结构图该芯片具有如下特点: 128字节的系统内可编程Flash(具有在写的过程中还可以读的能力,即RWW)、4K字节的EEPROM、8K字节的SRAM。 54个通用I/O口、32个通用工作寄存器、实时时钟RTC。 6个灵活的具有比较模式和PWM功能的定时器/计数器(T/C)。 4个USART、面向字节的两线接口TW、SPI串行端口I。 16通道10位ADC(具有可选的可编程增益)。 具有片内振荡器的可编程看门狗定时器。 与IEEE 1149.1规范兼容的JTAG测试接口(此接口同时还可以用于片上调试) 六种可以通过软件选择的省电模式。空闲模式时CPU停止工作,而SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态; ADC噪声抑制模式时PU和所有的I/O模块停止运行,而异步定时器和AD继续工作,以减少ADC转换时的开关噪声。 Standby模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式则允许振荡器和异步定时器继续工作。器件是以Atmel的高密度非易失性内存技术生产的。片内ISP Flash可以通过SPI接口、通用编程器或引导程序多次编程。引导程序可以使用任何接口来下载应用程序到应用Flash存储器。在更新应用Flash存储器时引导Flash区的程序继续运行,实现RWW操作。通过8位RISC CPU与系统内可编程的Flash集成在一个芯片内,ATmega1280为多嵌入式控制应用提供了灵活而低成本的方案。下图8为ATmega1280实物图。图8 ATmega1280芯片上述这些特点使采用AVR单片机的应用系统不仅具有运行速度快、结构简单、功能强大的特点,而且具有高可靠性和良好的经济型。Arduino软件可以直接进行C/C+语言程序开发,绕开了复杂难懂的汇编,从而可以进行更有效率的系统设计开发工作。(2) 外部晶振Arduino MEGA控制板采用外部16MHZ晶振。通过MXTAL1和MXTAL2与主芯片相连接。晶振两端分别使用22pF电容与GND连接。(3) ISP下载模块ISP(in-system programming,在线系统编程),是指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。其优点在于,不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无需再取下芯片。ISP是Flash存储器的固有特性(通常无需额外的电路),Flash几乎都采用这种方式编程。因此通过ISP可以对芯片进行熔丝位的配置及Flash编程,EPROM的烧录等操作。(4) USB下载模块Arduino MEGA控制板采用USB下载方式,通过FT232RL芯片与主芯片进行通信连接及程序的下载,实现USB转串口功能。硬件接口电路如下图9所示。图9 USB下载接口电路(5) 各种I/O接口Arduino MEGA控制板包括数字I/O接口,ADC模拟量接口,PWM接口,通信接口。其I/O口有:端口A(PA7.PA0)、端口B(PB7.PB0)、端口C(PC7.PC0)、端口D(PD7.PD0)、端口E(PE7.PE0)、端口F(PF7.PF0)、端口G(PG4.PG0)。除端口G之外其余端口为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电 路拉低时将输出电流。复位发生时端口为三态。端口也可以用做其他不同的特殊功能。(6) 电源模块Arduino MEGA控制板采用电池供电,一路通过LM2576-5.0进行电压转换,转换后的电压为5.0V,供主芯片以及各种传感器使用,另外一路直接从电源引出到直流电机驱动模块以供电机工作。LM2576的特点: 最大输出电流:3A; 最大输入电压:LM2576为40V的,LM2576HV至60V; 输出电压:3.3V,5V或12V的,15V和形容词(可调),可选; 振东频率:52kHz; 转换效率:75?88(即不同的输出电压差的效率); 控制方式:脉宽调制; 工作温度范围:-40+125 工作模式:低功耗/正常模式,可以是外部的控制; 工作模式控制:TTL电平兼容; 所需外部元件:仅四个(不可调)或六个(可调); 保护装置:热停机和电流限制; 包装:为了- 220或TO - 263。电池供电电压理论上为7-40V DC,但由于电源模块采用的电容耐压值均为25V,所以尽量使用25V以下电池进行,电路图如图10所示。图10 电源电路(7) 整体电路结构图如下图所示。硬件系统以ATmega1280为控制核心,通过在PC上把编程软件编译好的程序经过FT232下载到ATmega1280上。主芯片通过10路PWM控制双足共10个伺服舵机完成行走和前后翻动作,并利用红外避障传感器实现避障功能。最终实现需要完成的各项动作。硬件结构图如图11所示。图11 硬件结构图4.3避障传感器设计红外传感器主要是为了机器人避障用,具体工作过程:LM567的中心频率为38kHz,为红外发射管提供38kHz的脉冲信号,使红外发射管发出38kHz的光波;当有障碍物时,红外接收管输出38kHz频率的压值变化信号(无障碍物时输出高电平),由LM741电压放大后输入LM567,当LM567接收到38kHz频率的数据时,输出低电平,从而判断出前方的障碍物,如下图12所示。图12红外传感器检测过程如下图13所示,CKr是单片机输出的38KHz的方波(使用其硬件PWM),通过调节PWM的占空比,从而实现调节感知障碍物距离的功能。U2是红外线接收头,使用红外线接收头具有相当的灵敏度,可以检测到200mm以外的物体,确保机器人不会撞向障碍物。图13 红外避障传感器4.4 舵机选型本设计所选舵机为辉盛公司生产的12公斤大扭力全金属齿轮舵机。该类型舵机价格适中且规格参数能够满足双足机器人的各项性能要求。因此在综合了开销,性能等一系列因素后我们选择了MG945。经过尝试,我们得出了舵机转动角度与脉冲的对应关系:90度对应的差不多是1.6ms的脉冲,也就是说一个1.6ms的脉冲MG945就转到90度,而0度对应的是0.8ms脉冲,180度对应的是2.1ms脉冲。MG945参数如表1所示。表1 MG945参数表参数名称工作速度工作电压 扭矩重量尺寸参数值0.24秒/60度3.0V-7.2V12kg/cm62g40.8X20X37.3mm本设计需要使用10个舵机,其接口为硬件开发板PWM1-PWM10接口,接口引脚见图16总电路图所示。一个舵机内部包括了一个小型直流马达、一组变速齿轮组、一个反馈可调电位器和一块电子控制板。其中,高速转动的直流马达提供了原始动力,带动变速齿轮组,使之产生高扭力的输出,齿轮组的变速比愈大,舵机的输出扭力也愈大,也就是说越能承受更大的重量,单转动的速度也愈低。一个微型伺服马达是一个典型闭环反馈系统,其原理可由下图14所示:图14 舵机的工作原理示意图 减速齿轮组由马达驱动,其输出端带动一个线性的比例电位器作位置检测,该电位器把转角坐标转换为一比例电压反馈给控制单元,控制单元将其与输入的控制脉冲信号比较,产生纠正脉冲,并驱动马达正向或反向地转动,使齿轮组的输出位置与期望值相符,从而达到舵机精确定位的目的。舵机的控制信号是脉冲位置调制信号,周期一般为20ms,当方波的脉冲宽度改变时,舵机转轴的角度发生变化,角度变化与脉冲宽度的变化成正比。一般舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用下图15所示。图15 控制信号脉冲宽度与输出轴转角的关系图 伺服马达的瞬时运动速度是由其内部的直流马达和变速齿轮组的配合决定的,除了和电压有关外,还和转动的角度和负载有关。但其平均运动速度可通过分段停顿的控制方式来改变,例如,需要让舵机的输出端从目前的A位置转到B位置,可以在两个位置之间,选取n个中间位置(C、D、E、F、G),然后,让舵机从A开始,经过CDEFG最终转到B;通过选取中间位置的数量和每个位置的停顿时间,可以比较准确地控制舵机的转速曲线。4.5整体电路原理图根据本章以上的设计选用最终的电路图为下图16所示。图16 系统整体电路图5 控制系统的软件设计为了实现模型样机的实验调试,在硬件基础上进行了系统软件设计,通过对实际机械系统运动控制理论研究,规划了一套简便的调试方案以验证样机设计的合理性,并进行对预订步态的相应关节控制调试和可行性验证。5.1 Arduino-0017简介Arduino是一个能够让你的计算机更好地感知和控制外世界的物理计算(physical computing)平台,它基于一个源码开放的微控制器电路板,并提供了相应的集成开发环境来进行软件的开发。Arduino能够被用来进行交互式对象(interactive object) 的开发,例如从一组开关或者传感器中获得用户输入,或是控制一组灯光、马达或其他物理输出设备。用Arduino开发的项目即能够单独运行,也能够同运行在计算机上的其他软件(如Flash、Processing或Max/MSP)进行通信,从而共同完成相应的任务。Arduino具有自己的编程语言,它是基于Processing的多媒体编程环境Wiring(另一个非常类似的物理计算平台)的一种实现。Arduino-0017软件主界面包括4部分,从上到下依次为:菜单、编辑窗口、信息窗口和提示栏,其操作主界面如图17所示。基于创用CC开放原始码的电路图设计,基于创用CC开放原始码的程式开发环境,也可依需求自己修改,遵照姓名标示。Arduino可使用ICSP线上烧入器,将bootloader烧入新的IC晶片。可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制。可简单地与感测器,各式各样的电子元件连接(EX:红外线,超音波,热敏电阻,光敏电阻,伺服马达,等)支援多样的互动程式(EX: Macromedia Flash、Max/Msp、VVVV、PD、C、Processing、等),使用低价格的微处理控制器(ATMEGA 8-168) NT$120NT$150,USB介面,不需外接电源,另外有提供9VDC输入。应用方面,利用Arduino,突破以往只能使用滑鼠,键盘,CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。Arduino管脚说明:(1) Digital I/O数字式输入/输出端共113。(13个数字输入输出口DIO,其中10个PWM输出,可做模拟输出口使用AO)l(2) Analog I/O模拟式输入/输出端共05。(5个模拟输入口AI)(3) 支持USB接头传输数据及供电(不需额外电源)。(4) 支持ICSP在线刻录功能。支援TX/RX端子。(5) 支持外部ADC电压基准AREF端子输入。(6) 支持6组PWM端子(Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)。(7) 输入电压:USB接口供电,无须外部供电。5V12V DC外部供电。l(8) 输出电压:5V DC输出。(9) 采用Atmega168-20PI/PU,最新的Arduino 2009支持Atmega328-20PI/PU。图17 Arduino-0017 操作界面5.2 程序设计在程序设计过程中,首先需要对端口进行设置,以及进行开发板的选择。创建、命名、保存后,对熔丝位进行设置。下面为PonyProg2000 软件中的“熔丝位和程序及数据存储器锁定位”设置窗口问题说明。 进行熔丝位设置时应注意一些问题:(1) 在SPI 串行编程模式下SPIEN 熔丝位不可访问;(2) CKOPT 熔丝功能由CKSEL 位设置决定;(3) BOOTSZ1-0 默认为最大Boot 大小 ;(4) 当对RSTDISBL熔丝位编程,并行编程使用其他熔丝位或执行其他编程模式;(5) 对于默认时钟源,SUT1-0的默认值给出最大的启动时间;(6) CKSEL3-0的默认设置导致了片内RC振荡器运行于1MHz CKOPT、CKSEL3.0、SUT1.0 为系统时钟配置(包括唤醒脉冲和复位延时时间选择设定)熔丝位。设置好熔丝位后就可以进行程序的编写、调试、编译,具体程序见附录。程序设计采取模块化设计思想,按照图18示的流程图,每个模块完成各自指定的功能。 5.2.1主程序主程序按照规则要求完成对各个功能模块的逻辑调用和时序的调用开始时在可以躲在障碍物的情况下,先走3步、立正、然后卧下(身体向前)、向前翻跟斗3次,再起立、向前走3步、立正、然后卧下(身体向后)、再向后翻跟斗2次、再起立、然后以轻快步履走向终点、要在指定5分钟或少于指定时间内完成所有动作,及要走到终点。当系统开始后进行初始化,机器人呈现立正状态。紧接着红外传感器检测是否有障碍物,如有障碍物则执行避障子程序,否则执行正常的行走子程序(其中行走子程序包括前进和前后翻动作),然后判断是否走完所需要的动作,如完成则程序结束,否则返回红外检测处开始执行,程序重复执行最终完成设定的动作。其主程序流程图见图18所示。 图18 主程序流程图5.2.2避障程序避障是系统重要的一项功能,当红外传感器检测到有障碍物时则开始执行避障子程序,在子程序中判断是哪个方向有障碍物,如果前方有障碍物且机器人执行前进则要向左迈一步,然后接着检测是否有障碍物,如有则重复刚才的动作直到没有障碍物,然后跳出避障子程序继续执行主程序。传感器检测的状态和要执行如何避障的策略见避障子程序流程图,如图19所示。图19 避障程序流程图5.2.3行走程序机器人要完成的行走任务为:先走3步、立正、向前翻跟斗3次、向前走3步、再向后翻跟斗2次、然后以轻快步履走向终点。行走的各阶段都有其标志位,当进入行走子程序时,开始判断此时要执行的动作是前进、向前翻还是向后翻,判断完后执行相应的动作并返回主程序并继续检测障碍物。其行走子程序流程图如下图20所示。图20 行走程序流程图通过程序的编写和联机调试并最终在场地上行走,机器人能够很好的完成所设定的任务,当加入适当的障碍物时,机器人也能够检测到并最终避开障碍物完成设计任务。结束语随着科技的发展,双足智能步行机器人的研究登上了一个新的台阶。ASIMO、SDR-4X的研制成功标志着双足步行机器人已经从研究领域迈进了家用领域。而ROBOCUP双足步行机器人比赛的顺利举行,又为大学、科研机构进行双足机器人的研究开辟了一个新的方向。我国双足机器人研究重点放在大型的双足步行机器人上,为此,研制开发能够参加国际性比赛的双足步行机器人,提高我国双足机器人理论研究和样机研制水平,特别是机构学、运动学和动力学等基础理论的研究水平,为国争光,十分有意义。为使理论成果具有更强的实用性,课题研究过程中做了大量机器人资料搜集和整理工作,在此基础上构建起双足机器人总体研究框架,并做了一系列双足机器人基础性研究工作,包括动力学建模、步态规划和控制分析等。具体内容包括:(1).通过分析国内外双足机器人的样机研制状况和理论研究水平,掌握国内外双足机器人的研究现状及发展趋势,明确了双足步行机器人的研究意义,确定课题的研究方向和研究内容。(2).确定了课题的研究任务是设计可以完成智能行走,下蹲、倒地、起身、前滚翻、后滚翻等动作的双足机器人,在此基础上确定其所需关节、自由度,并对其进行结构分析。为了让设计出的机器人完成预定的行走,下蹲、倒地、起身、前滚翻、后滚翻等动作,在设计和调试过程中会遇到一些问题,我们就需要针对其稳定性,平衡性,易调性,避障性,干扰等方面进行简要分析和改进。有一种隐患会导致机器人在行进过程中反复出现断电又接通的情况11,使得机器人不能正常的连贯的工作,这多数是因为焊接的电路板上的零件有松动,主要是电源连接方面。这就要求细致的焊接板子,防止一切断路和短路情况的发生。参考文献1 陈立新,两足步行机器人步态及运动稳定性分析D.现代机械,1995 (3):30-352 谢涛,徐建峰.仿人机器人的研究历史、现状及展望J.机器人,2002(7):26-353 J.Knani,Dynamic modelling of flexible robotic mechanisms and adaptive robust control of trajectory computer simulationPart IJ.Applied Mathematical Modelling ,2002:16-224 张学允,双足步行机器人动态步行研究D.哈尔滨工业大学,2001:34-455 Ishida T,KurokiY.Sensor system of a small biped entertainment robotJ.Advanced Robotics ,2004 (10)6 刘志远,两足机器人的动态行走研究D.哈尔滨工业大学,1991:37-567 谭冠政,朱剑英,尉忠信.国内外两足步行机器人研究的历史、现状及发展趋势J.机器人,1992, (3):32-458 吴 玉,姜复光.机器人工程导论M.哈尔滨工业大学出版社,1999:123-1459 徐元吕,工业机器人M.中国轻工业出版社.1999:234-25610 周伯英,工业机器人设计M.北京机械土业出版社.2005:124-13711 严冰,李晓翠.基于双足机器人的设计实现以及相关改进J.科协论坛. 2009(5)l2 李元宗,机器人学讲义D.太原工业大学. 2001:83-11513 蹼良贵,纪各刚.机械设计M.高等教育出版社. 1996:126-14814 余达太,马香峰.工业机器人应用M.冶金工业出版社. 2003:78-9515 蔡白兴,机器人学M.清华大学出版社.2002:168-24516 刘鸿文,材料力学M.高等教育出版社.2003:55-68附录(1) .主板电路图(2). 程序清单#include #define number 6 #define first 4MegaServo servonumber;int a=13,b=13;int pos1=90,pos2=90,pos3=90 ,pos4=90,pos5=90,pos6=90,k=0;int be=5;int tm=10;int flag=0;void setup() int i; for(i=0;inumber;i+) servoi.attach(i+first); void first_step1() to_pos1(2,5,60,106,a); to_pos4(0,1,3,4,2,64,63,68,68,89,b);/68-70 / to_pos3(0,1,3,4,70,68,68,68,13); /偏右 to_pos1(2,5,89,95,a); /* to_pos1(2,5,60,105,13); to_pos4(0,1,3,4,2,68,68,68,68,89,14);/70-68 to_pos1(2,5,89,95,13);*/ /* to_pos1(2,5,60,106,15);/107 to_angle(2,89,1); to_pos3(0,1,3,4,68,65,64,64,14); to_pos1(2,5,92,93,15);*/ void first_step21() to_pos1(2,5,60,105,a); to_pos4(0,1,3,4,2,64,63,70,68,90,b);/68-70/0.65-64 / to_pos3(0,1,3,4,70,68,68,68,13); /偏右 to_pos1(2,5,89,95,a); /* to_pos1(2,5,60,105,14); to_pos4(0,1,3,4,2,70,70,70,68,89,12);/0.70-68 to_pos1(2,5,89,95,14);*/ void second_step20() to_pos1(2,5,103,60,a); to_pos4(0,1,3,4,5,107,109,108,105,94,b); to_pos1(2,5,89,95,a); void second_step() to_pos1(2,5,103,65,a); to_pos4(0,1,3,4,5,108,109,108,105,94,16);/0-106-104 / to_pos3(0,1,3,4,106,109,108,105,13); /偏右 to_pos1(2,5,89,95,a); /* to_pos1(2,5,102,65,13); to_pos4(0,1,3,4,5,106,109,108,105,94,18); to_pos1(2,5,89,95,13);*/ /*to_pos1(2,5,105,65,15); to_angle(5,95,5); to_pos3(0,1,3,4,103,104,105,102,15); to_pos1(2,5,91,95,20); */void init_end() to_pos1(2,5,105,65,14); to_pos3(0,1,3,4,87,88,91,89,13); to_pos1(2,5,89,94,15);void three_step() first_step1(); second_step(); first_step1(); init_end();/*初始化角度*/void init_start() to_pos6(0,1,2,3,4,5,87,90,89,91,89,94,10);/ to_pos2(1,2,4,88,89,89,10); /to_pos2(0,3,5,87,91,94,10);/*/void loop() if(k=0) init_start(); delay(500); three_step(); zhengfang(); three_step(); delay(100); daofang(); first_step1(); k=1; second_step(); first_step1(); void zhengfang() flag=1; int i; for(i=0;i3;i+) init_start(); to_pos3(0,3,1,4,52,129,115,60,10);/12-10 to_pos3(0,3,1,4,44,139,135,40,10); to_pos3(0,3,1,4,24,159,155,20,10); to_pos3(0,3,1,4,4,179,175,0,10); to_pos1(3,4,150,0,3); to_pos1(3,4,30,173,3); to_pos1(3,4,0,173,5); to_pos1(0,1,30,173,3); to_pos1(0,1,135,2,3); to_pos1(0,1,162,2,5); to_pos3(0,3,1,4,87,91,90,89,10);/11-10 /* to_pos1(0,3,4,179,10); /较好,速度慢 to_pos1(1,4,175,0,10); / to_pos3(0,3,1,4,4,179,175,0,12); to_pos1(3,4,150,0,3); to_pos1(3,4,30,175,3); to_pos1(3,4,0,175,3); to_pos1(0,1,30,173,3); to_pos1(0,1,135,2,3);
展开阅读全文