谢邦晋
(闽江师范高等专科学校机电工程系,福建 福州 350018)
由于机器人的应用逐渐广泛,除了工业机器人,越来越多种类的机器人开始进入人类的社会,一般机器人移动的方式分为轮型、足型,使用轮型移动机器人优点是移动速度快与稳定性高,但是适应地形与跨越障碍上,还是以足型机器人较占优势,开发像人类一样以双足移动的机器人,是让机器人更加拟人化的条件之一。
为了使机器人能够步行移动,机器人在机构上,需要有灵活的足部机构,而当机器人在步行时,由于同一时间内只有一只脚接触地面,为了让机器人能够平衡,机器人的重心分配非常重要,控制机器人步态,需要控制与机构的研究,才能使机器人的步行移动更接近人类。
1970年代开始日本研究者开发出许多具有步行功能的机器人,至今几十年来对于机器人的步行控制,世界上许多专家学者已提出相当多的论文与研究报告。机器人步行控制的研究中,在1968年由南斯拉夫学者M.Vukobratovic提出了零力矩点(ZMP)这个理念,经由零力矩点(ZMP)的计算,只要机器人的零力矩点在安全范围以内,机器人即可保持平衡,80年代日本早稻田大学的加藤一郎实验室便依据此理论制作了WL系列机器人,还有Honda制作的Asimo也同样是利用零力矩点来达到机器人稳定的步行,零力矩点提出至今已50年,仍是机器人步行控制的主要方法之一。
另外有部分研究者提出以演算法来计算机器人步态,如模糊控制、类精神网络、基因演算法等方法,上述各种控制方法都是希望能够稳定机器人的步态,但是透过演算法控制的方法,在处理器的计算上需要发费一些时间,所以机器人移动的速度还是偏慢。
文章将以使用STM32晶片来制作伺服马达控制板,透过控制板来控制双足机器人的动作,双足机器人由RC伺服马达与结合模块组成。
本论文设计中的硬件架构分成三部分,由RC伺服马达控制板、机器人结构、电源供应组成如图一所示。RC伺服马达控制板由主控核心(MCU),伺服马达控制电路、降压电路所组成,机器人结构由RC伺服马达与结合模块组成,电源供应部分来源为锂电池并搭配稳压器对机器人与控制板供电。
图1 硬件构架图
主控核心意法半导体(STMicroelectronis)公司生产的STM32F103系列增强型微控制器,该系列微控制器的特点为内核使用了Cortex-M3核心,Cortex-M3是ARM公司开发的处理器,该处理器实现了低成本、缩减接触脚数量,并同时具有低功耗、高执行速度、先进的中断系统响应、支持多种通讯等功能。
RC伺服马达控制芯片的选用,依据需要选择中等容量的STM32F103Cx系列,完整型号为STM32F103C8T6,拥有64KFlash、4组计时器、37个IO脚与LQFP48封装形式,芯片外观与封装脚位如图2所示。
机器人的硬件部分,由RC伺服马达搭配结合模块制作成高自由度的双足机器人,机器人的灵活度取决于该机器人自由度的多少,自由度的意思为机构上可独立运动的数目,为了让机器人的步行更接近人类,所以设计了12个自由度的双足机器人机构,机器人关节为RC伺服马达,骨架部分则由结合模块组成,双足机器人机构如图3所示。
图2 芯片外观与封装脚位
图3 双足机器人机构
双足机器人的控制方式架构图如图4所示,RC伺服马达控制板由三组计时器输出PWM脉波讯号,由此PWM讯号控制RC伺服马达的转动,另外配合STM32F103C8T6的系统应答计时器产生计时中断,由此计时中断来达到RC伺服马达的控制。RC马达的控制是由产生一周期20 ms的PWM讯号来控制,由PWM讯号的脉波宽度来控制马达角度,由增加脉波宽度的方式就可以控制RC伺服马达的速度,以RC伺服马达从0度(0.5ms)旋转到180度(2.5ms)为例,假设每20ms周期的增加0.1ms的宽度。脉波宽度由0.5ms增加至2.5ms,每20ms增加0.1ms的宽度,RC伺服马达转动时间计算公式如:
每个周期增加的脉波宽度越大,RC伺服马达的转动速度就越快,除了调整脉波宽度的方式以外,还可以调整周期的方式来控制速度,但要注意RC伺服马达的规格。
图4 控制方式构架
控制RC伺服马达的PWM控制讯号,由微控制器内部的3组计时器提供,机器人的动作与速度由计时器产生的周期性中断来做控制,中断程序内将当前PWM讯号的宽度与机器人动作信息数据进行比较,若数据大于当前PWM讯号宽度值,执行PWM讯号宽度做加运算,反之做减运算,流程图如图5所示。
图5 流程图
当机器人要执行动作时,先执行初始化,将各轴的RC伺服马达的角度都设定为置中(脉波宽度1.5ms),此时机器人呈现站立姿态,载入机器人执行动作的数据阵列。
Intdata={{2500,2000,2200,2100,2400,1900,1900,1900,1900,2000,2300,2200},{1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500,1500}};
阵列中为一个第一维度为2,第二维度为12的二维阵列,第一维度代表机器人的动作数,第二维度代表12个RC伺服马达的脉波宽度,阵列中值的大小为500~2500,500代表0.5ms的脉波宽度;1500代表1.5ms的脉波宽度,2500代表2.5ms的脉波宽度,机器人在执行动作时,微控制器中断程序会将各轴的脉波宽度与数据阵列库的值做比较,当发现某个RC伺服马达的值与数据阵列比较不相符时,则对该RC马达的脉波宽度进行加减。由周期性的中断程序,可同时对每个RC伺服马达的脉波宽度做调整,当RC伺服马达达到动作所需的角度后,会维持该角度并等待其他RC伺服马达到达设定的角度,等全部RC伺服马达都到达设定的角度时,便会开始执行动作数据阵列的下一列。
人在步行时,可视为一种周期性的反复运动模式,依据这种周期性的运动模式,可以规划出步行的轨迹,人走路时,双手会自然地摆动,而且跟两腿走动的方向相反,这种互相协调的动作,是为了保持整个身体的平衡,但是双足机器人却没有这种调节平衡的动作,所以在设计双足机器人的动作时为了使 稳定,必须要考虑到机器人重心的分配,机器人的重心在抬脚移动的同时会跟着改变,如果机器人的重心没有调节好,那么机器人必定会跌倒,因此重心的调整对机器人的动作非常重要。
因此本次研究在机器人的动作设计上,不采用运算的方式算出机器人稳定的步伐,而是使用控制伺服马达角度的方式,来设计机器人的动作,这种机器人的行进动作属于静态平衡,所以机器人的步行状态可分为单脚支撑与双脚支撑,当机器人以单脚支撑时,为了保持机器人的平衡,重心必须落在支撑的脚掌内,在双脚支撑时,机器人的重心要落在双脚之间,只要注意重心的落点,就可以让机器人在步行时保持平衡,图6为双足机器人各轴的伺服马达编号。
机器人在动作前,为了使机器人站立,会先设定机器人的直立的动作,由伺服马达控制板对各轴送出宽度为1.5ms脉波,由于机器人在组装上会存在一些误差,所以还需对各轴做校正,各轴误差的角度如表1所示:
表1 机器人各轴误差角度
图6 伺服马达编号对照
RC伺服马达控制板的主控核心是使用STM32微处理器,其功能为输出12通道PWM信号,可控制多颗RC伺服马达,为了使RC伺服马达的控制更加的稳定与迅速,12组PWM信号由STM32芯片内部3组计时器产生,最高可扩展至16通道输出,在PWM信号宽度的控制上,开启预先装载功能可同时控制多组PWM信号的脉波宽度,在电源供应部分使用一种稳压器,供应RC伺服马达所需要的高电流,并配合系统滴答计时器来做RC伺服马达的速度控制。若能在伺服马达控制器上增加传感器如:陀螺仪、加速度计、姿态感应器等各种传感器,通过这些传感器使控制板在控制机器人的时候,能够对各种状况做出应对。