双足步行机器人自由度的确定
两足步行机器人的机构是所有部件的载体,也是设计两足步行机器人最基本的和首要的工作[1]。它必须能够实现机器人的前后左右以及爬斜坡和上楼梯等的基本功能,因此自由度的配置必须合理:首先分析一下步行机器人的运动过程(前向)和行走步骤:重心右移(先右腿支撑)、左腿抬起、左腿放下、重心移到双腿中间、重心左移、右腿抬起、右腿放下、重心移到双腿间,共分8个阶段。从机器人步行过程可以看出:机器人向前迈步时,髓关节与踝关节必须各自配置有一个俯仰自由度以配合实现支撑腿和上躯体的移动;要实现重心转移,髋关节和踝关节的偏转自由度是必不可少的;机器人要达到目标位置,有时必须进行转弯,所以需要有髋关节上的转体自由度。另外膝关节处配置一个俯仰自由度能够调整摆动腿的着地高度,使上下台阶成为可能,还能实现不同的步态。这样最终决定髋关节配置3个自由度,包括转体(roll)、俯仰(pitch)和偏转(yaw)自由度,膝关节配置一个俯仰自由度,踝关节配置有俯仰和偏转两个自由度。这样,每条腿配置6个自由度,两条腿共12个自由度。髋关节、膝关节和踝关节的俯仰自由度共同协调动作可完成机器人的在纵向平面(前进方向)内的直线行走功能;髋关节的转体自由度可实现机器人的转弯功能;髋关节和踝关节的偏转自由度协调动作可实现在横向平面内的重心转移功能。
机器人的转体(roll)、俯仰(pitch)和偏转(yaw)定义如图1所示[2]。
图1 步行机器人方向示意图
其中,定义y轴方向为前进方向,z轴方向为机器人的身高方向。
机器人的自由度总体配置如图2所示。
图2 自由度总体配置图
动力源的选择
目前市场上,有很多种电动机向机器人提供能源:直流电机、交流电机、步进电机、伺服电动机。由于双足步行机器人要求的精度要求比较高,而交直流电机通电就转,断电就停,比较难进行机器人的位置控制;步进电机虽能按一定的精度工作,但它本身是一个开环系统,精度达不到要求。因此,本文选择使用伺服电动机。
在本文中使用的是价格比较便宜的伺服电动机—舵机。舵机最早出现在航模运动中。在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。电动舵机的工作原理如图3所示。其中,舵机控制器一般采用pid控制,以满足舵机动静态指标要求;伺服功率放大器一般由脉冲宽度调制器(pwm)和开关控制电路组成;直流伺服电机是电动舵机的执行元件,可采用有刷或无刷直流电机;减速机构一般采用蜗轮蜗杆或丝缸减速机构。
由于本研究制作的机器人是桌上型的重量很轻的作实验用的小型双足步行机器人。因此机器人的各关节是选择使用舵机驱动。
图3 电动舵机工作原理方框图
附表 rc伺服电机的参数
此类电机的特点就是体积小、重量轻且控制简单,另外价格也较便宜。 附表示出了电机的参数。
步行机器人每条腿的自由度为6。各关节的驱动使用的是北京汉库科技有限公司的hg14-m的大力矩舵机。
机构的设计
根据本课题的要求,本文设计了机器人的机构,其主要特点有以下几点:
布置对称性
步行运动中普遍存在结构对称性。goldberg[3]等人研究了步行运动中的对称性,发现机身运动的对称性和腿机构的对称性之间存在相互关系。在单足支撑阶段如图4,对称性的机身运动要求腿部机构也是对称的;在双足支撑阶段如图5,机身对称性运动未必需要腿部机构的对称性,除非有额外的约束条件。根据这点,笔者在结构设计时也采用对称性布置[4]。
框架的设计有效的利用了rc伺服电机的尺寸大小,并使电机的活动范围能尽量符合各关节的活动范围。
采用多关节型结构。行走机构能实现平地前后行、平地侧行、转弯、上下台阶、爬斜坡等功能。
整个结构采用1mm的铝合金(ly12)钣金材料,这种材料重量轻、硬度高、强度虽不如钢,但却大大高于普通铝合金。且这种材料具有弹性模量、密度比高的特点。
由于机器人的各关节是用rc伺服电机驱动,为了减小机器人的体积、减轻重量,机器人的结构做成是框架型的。框架的设计有效的利用了rc伺服电机的尺寸大小,并使电机的活动范围能尽量符合各关节的活动范围。
控制系统
方案构思
由于本机器人机构采用了12个舵机,本控制系统就是要实现能同时驱动这12个舵机的功能。由前面的叙述知道,舵机的控制信号为周期是20ms的脉宽调制(pwm)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0~180°,呈线性变化[5]。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
图4 单腿模型图
图5 两足步行机器人双腿模型图
传统产生pwm波的方法是通过大量的分立元件来实现的,所产生的脉冲频率和宽度往往不是很准确,很难做到对舵机的精确控制。目前,产生pwm波的方法有很多种:最直接的方法就是用单片机本身所带的pwm口产生波形,但该方法受mcu内部资源的限制,仅能实现2~4路pwm波的输出,对于需要多路舵机的场合显然是不够的。另一种方法就是利用分时复用的思想利用单片机一个中断产生7路控制futaba舵机用pwm波的方法。该方法虽然实现了7路舵机的控制,但也仅能实现7路舵机的控制,并且仅针对特定舵机的控制,控制精度也不高,在一些重要场合的应用受到了限制;还有一种方法就是利用单片机纯软件的循环计数的方法或者,利用硬件定时,软件计数相结合的方法,在不增加任何硬件接口的前提下,实现了多路pwm波的输出[6],然而此方法大量占用mcu运算时间,基本不能再处理其它的事务,并且精度不高。
另外,目前一些数字信号处理芯片片内就集成了pwm波形产生的功能,只需要进行寄存器参数的设置就可得到pwm的输出。但在一些只需要简单电机控制的场合,从成本考虑不需要较为昂贵的数字信号处理芯片。
本文采用一片51的单片机和一片复杂可编程逻辑器件(cpld)实现了pwm的产生。由于cpld具有他特有的并行处理能力和大量的io接口,可以同时控制几十甚至上百个舵机同时工作,可以为后续的工作留出一定的空间,但由于cpld不具备事务处理能力,实际应用中还需要mcu协同工作,本文使用51系列的单片机和cpld协同控制舵机,另外,使用了单片机,还可以为后续的传感器反馈处理留出空间。
图6 控制系统结构图
控制系统所图6所示,选用“上位机+串口+下位机”的控制系统解决方案。上位机控制软件的主要功能是对预定的机器人动作进行规划和位置插补,再按照一定时间间隔和次序进行发送给下位机,实现机器人关节位置和近似的速度控制;下位机主要功能是接收上位机发送的位置信号,根据信号要求产生pwm波,控制机器人各个关节舵机运动,使机器人按动作规划完成溜冰动作。相应的,下位机主要由完成串口通信、数据的调度和12个舵机驱动模块构成[7]。
图7 cpld的12路舵机驱动原理图
图7为cpld的12路舵机驱动原理图,cpld通过一个简单的接口与51单片机进行通信,把要驱动的12个舵机的pwm信号数据存入到数据存储区,从而通过数字pwm生成器驱动12个舵机转到需要的角度,当需要转换到下一个角度时,通过与51单片机的接口,从51单片机中传送新的pwm信号数据到数据存储区中进行更新,这样数字pwm生成器就会驱动舵机转过一个新的角度。
硬件设计
电源
为了避免舵机的供电电源产生的电压波动对控制电路的干扰,控制电路与舵机的电源要进行隔离,即分开供电。控制电路电源使用的是一个9v输出的ac-dc变压电源经7805芯片后提供的5v电源,而舵机的电源提供了一个接口,外接一个6v的直流电源。
控制芯片
控制芯片模块包括单片机、时钟电路、复位电路、外部程序存储芯片扩展以及大规模cpld芯片。单片机采用atmel公司的at89s52,它是8位的高性能嵌入式控制器,其内部集成了8k的可在线编程的flash存储器;256字节的ram,可寻址64字节,具有32根i/o口、3个可编程定时器、8个中断源、6个中断矢量、1个看门狗定时器。时钟电路给系统提供时间基准,设计时采用11.05296mhz晶振。同时,本设计还扩展了一片8k×8位的外部存储芯片2864。cpld芯片采用的是altera公司的epm7128。
串行通信
串行通信模块主要用于at89s52单片机与pc机之间的串行通信。由于pc机的com口符合rs-232标准, at89s52单片机上的串行接口是cmos电平,在rs-232与cmos电平通信时,需要电平转换,因此,设计时利用max232芯片来作电平转换。
舵机的驱动控制
12路舵机的控制信号来自cpld芯片的i/o口(引脚30、31、33、34、35、36、37、39、40、41、44、45)。为了防止干扰,13路舵机控制信号和驱动电路应经过tlp-521光电隔离,通过隔离出来的控制信号,还必须接入lm324比较器,以消除毛刺,增加信号的稳定性,提高信号的输出电流,以便舵机能够正确工作不至于产生不必要的抖动。
图8所示为控制系统的硬件电路板线路设计图。
图8 机器人控制器线路图
结语
在本文中,探讨了舵机的安装方法,框架的设计以及制作了能通过伺服电机控制运动的一种经济型的双足步行机器人。另外,实现了用单片机与cpld控制12个rc伺服电机的设想。
今后,将研讨运用逆运动学的原理,通过预先给定机器人各个部位的运动轨迹,通过运算确定好各关节的旋转角度然后通过控制系统得控制算法,以实现机器人的实际行走过程。