自平衡人形机器人动作控制器的设计
扫描二维码
随时随地手机看文章
自平衡人形机器人的多关节协调控制一直是机器人学研究的难点和热点,目前采用的最多的是在大的反馈控制环路中对机器人进行关节空间的控制,这种控制方式结构紧凑,实时性强,但在以控制器为核心的辐射式控制链路上,所有信息的交换都集中在机器人主控制器上,当机器人处于复杂的环境中时,可能会有过多的信息需要处理,这种复杂程度往往是不可预知的,因此机器人的稳定性也不能保证。
机器人主控制器是机器人的核心处理器,是提高人形机器人的信息处理能力的主要部件。其主要任务是控制机器人在空间的运动位置、姿态、轨迹、操作顺序和操作时间,因此必须保证主控制器能够为解决复杂信息处理而稳定可靠地工作。机器人动作控制器是为解决机器人动作控制而设计的,它将主处理器发出任务处理命令分配到3个16位超低功耗单片机(MSP430F149)上去执行,实现多层次的控制管理。该人形机器人具有多关节,多自由度,自平衡的控制需求,需要动作控制器在机器人系统控制中起到关键性的作用。
1 动作控制器的设计
1.1 体系结构
自平衡人形机器人需要获取不可预知的环境信息以及自身姿态信息进行综合运算并及时进行自身姿态的调整。机器人的这种行为特点决定了机器人的整体控制结构要采用反馈控制。如图1所示,描述了这种反馈控制结构的硬件实现。
同时,在图1中可见从机器人主控制器到执行元件(舵机)之间,有一层动作控制器的结构。这一层结构的任务是实现控制命令到舵机控制信号之间的功能转换,这种体系结构的设计,就是借鉴计算机系统结构中的分层结构体系思想。采用这种分层的结构,实现了软件和硬件、命令和动作的相对隔离。其突出的优点体现在能够使主控制器专注于数据的处理,而对下行设备只负责发送指令,对于硬件的复杂的操作时序,由动作控制器负责产生。
1.2 实现过程
1.2.1 硬件实现
为满足机器人整体控制体系结构中指令到执行的层次性要求,动作控制器需要完成命令解析,信号驱动等任务。如图2描述了动作控制器内部的结构,其主要由串行总线、3个可并行工作的16位单片机、信号驱动部分构成。这种结构能够从总线接收命令,单片机进行指令解析并输出控制电信号,外部电路对控制信号驱动放大,从而分别实现对执行舵机的控制。图3为动作控制器中一个单片机工作模块的硬件原理图。
[!--empirenews.page--]
动作控制器主要由3个MSP430F149并行工作,每个MSP430F149控制8个舵机,总共实现对24个舵机的控制。每个MSP430F149有定时器TA和定时器TB两个模块,其中定时器TA通过比较模式输出2路PWM波控制2个舵机,定时器TB通过比较模式输出6路PWM波控制6个舵机。而且定时器工作在比较模式下时,能在一次设置完成后,不需要CPU干预的情况下持续进行PWM输出,同时保证各路信号之间没有干扰,因此一路比较输出即可独立控制一个舵机,动作控制器可实现对多达24个舵机的控制,对多关节人形机器人提供足够的控制通道。
采用比较输出PWM波形的方法相比较采用中断方式的控制方法,具有简单,输出PWM波形稳定,整个控制系统的鲁棒性高等特点。该课题也曾采用过中断控制方式,但用示波器观察输出的PWM波形,波形极不稳定。而且中断嵌套过多之后,单片机程序很容易跑飞,完全不能满足控制系统的稳定性要求。而采用文中所述动作控制器的设计方法后,比较输出的PWM波波形稳定,而且单片机也没出现死机或跑飞的现象。
MSP430F149输出为3.3 V TTL电平,而舵机控制信号要5 V TTL电平,在实际电路设计中要进行电平转换。考虑到舵机的控制信号对功率没有要求,必要加专用驱动芯片,而采用CMOS工艺的CD4081四2输入与门进行电平转换,利用其门电路输入电压门限宽的特点即可解决电平转换的问题。
舵机动态工作时,需要脉冲式的电流,通过普通的电源供电,实验表明:由于舵机瞬时供电不足,致使舵机力矩不够,运动不能达到预先的姿态效果,在反复探索后,决定采用电容的快速放电特性来提供瞬时大电流,由于舵机数量大,设计时在舵机电源处并接大容量电容,总容量0.22F×6。正常小电流工作时,电容被充电处于饱和,当需要瞬时大电流时,电容能快速放电,从而保证舵机正常稳定的工作。
3个MSP430F149分别控制部分关节上的舵机,这要求3个MSP430F149充分协调一致的工作。因此采用总线通信方式,将3个MSP430F149挂接到串行通信总线上,并留出总线接口,以接收主控制器的命令。
1.2.2 软件实现
动作控制器的软件设计,是以硬件为基础,接收主控制器的命令,对命令进行解析,并控制产生具体的PWM波形对舵机进行动作控制。图4描述了动作控制器中软件的实现流程。
[!--empirenews.page--]
机器人的动作方式,方向,幅度等全部是由主控制器通过对外部信息的获取而产生的输出,这种输出是基于命令格式的,而机器人最终的一切行为都是一系列舵机的配合运转,从命令到执行,这其中就是动作控制器起到了关键作用。
基于上述要求,动作控制器的首要任务就是接收命令。虽然在硬件上采用了多机通信的模式,但并不采用传统的通信协议(每个从机都具有一个独立的地址),而是对动作控制器上的3个MSP430F149定义完全相同的地址,这样就会使其接收到完全相同的命令。这样进行设计,原因在于要保证舵机响应的同时性,即是机器人动作的协调性提出的要求。如表1示例了主控制器与动作控制器的命令传输格式。来自主控制器的命令是一个数组序列,动作控制器上的每个MSP430F149都能完全接收到全部序列,而每个MSP430F149根据预先定义只使用这个序列中特定的子序列,这个子序列就是对应于这个MSP430F149所控制的舵机的命令,这样就可以保证同时性。
动作控制器的最终目的是产生PWM波,而这是通过写MSP430F149片内TA、TB模块的寄存器实现的。在解析函数进行一系列的解析运算后,产生出各舵机所需的PWM波形的脉冲宽度值,将这些值写入到相应的寄存器中,就可以产生需要的PWM波。
2 实验及结论
根据文中提出的动作控制器的设计思想与方法,制作出机器人动作控制器。按照设计的基本思想对动作控制器进行测试,测试中采用一个MSP430F425作为机器人主控制器,下行控制一个十二个关节的简易人形机器人。在MSP430F425中规划好机器人的步态,同时根据规划好的步态参数发送舵机动作命令。
实验中,首先实测舵机的精度,通过向特定定时器通道预装不同值,测量舵机响应角度,并以此数据拟合出舵机响应角度方程。实验中由于采用的MSP430F425资源有限,方程仅进行了线性拟合。
表2为测试机器人上一处关节的舵机测定数据,根据此数据拟合出以下方程:
舵机实际角度α=(X-3 000)/20+75.5运用拟合出的方程进行命令到舵机角度的解析,得到表3所示数据
从表中数据可以看出,在舵机的性能范围内(舵机的精度为0.5°~1°),控制是精确的。
同时,在舵机响应的及时性方面,也得到了保证。从主控制器发送命令到舵机响应开始运动共经历了命令传输、命令解析两大时间段。
命令传输在特定的速率下传输完所有命令数据用时4.5 ms,而命令解析即单片机内程序执行,其用时远小于1 ms。相比较,舵机的机械响应时间在百ms级,因此动作控制器保证了响应的及时性。
实验证明,在设计思想指导下的硬件和软件实现,充分符合既定的目标,体现在机器人的多关节能够协调动作,预先规划的步态能够很好的表现出来。
在机器人的实际控制系统中,动作控制器作为主控制器(ARM 9)的下级从属设备,完成其特定的管理范围内工作。在这种分层控制的体系结构下,自平衡的检测与控制达到了理想的效果。
3 结束语
由于自平衡人形机器人具有内在不稳定性和结构的复杂性,国内外机器人爱好者对其控制策略进行了多方面的探索,但通常都是采用反馈控制环路或者是分层体系结构的方法。采用这些传统的方式大体都是中央处理器(ARM、DSP等)接收收集到的信息,进行处理,再根据获取的信息运用一定的算法控制执行元件(舵机、直流电机等)。这类体系结构一般以惟一的处理器为核心,与外界直接进行信息交换,但其处理器的工作量大,在大量的处理中实时性难以保证。
而本设计对应的双足自平衡人形机器人采用了这两种经典结构的复合,其中执行控制器、主控制器和执行电机之间体现出了明显的层次结构,这种设计减轻了各层次的任务难度,明显提高了设备调试或故障排查效率,充分体现出这种体系结构的优越性。