作为四足机器人动态控制的开山鼻祖,这本书是1986年出版的。书里介绍了从单足机器人扩展到四足机器人的控制算法,是最早的足式机器人动态控制算法之一,十分厉害。本文主要是对书中开创的控制算法进行总结。

Introduction To Running Machines

首先,作者没有直接考虑四足机器人的控制,反而先考察了单足机器人的控制方法。单足机器人通过跳跃的方式来动态保持机器人平衡。随后作者将这个单足机器人的控制方法扩展到两足以及四足机器人,展现出与之前研究的四足机器人静态步态研究不一样的发展路线。这种从单足到多足的控制策略演化,抛弃了步态对机器人的影响,直接从动态控制入手,简化了问题。
其次,相比起复杂的控制方法,作者使用了简单的控制率,并对要控制的机器人变量分别控制,降低的控制的难度。首先考虑的是一个2D平面跳跃机器人,拆分的机器人变量有:

  1. 跳跃高度。
  2. 前进速度。
  3. 机器人姿态。

通过分别控制这三个变量,整个控制算法被极大的简化了,同时作者的研究成果也显示出,该控制算法也可以扩展到多足以及3D机器人运动控制。

Hopping on One Leg in the Plane

首先,整个这本书的想法可以说都是来自一句话,就是:Running is like the bouncing of a ball,在球的碰撞过程中,通过弹性变形存储能量,并在恢复形状的过程中与地面的作用,重新获得跳跃的速度,而在空中,则收到重力作用向下掉落。跳跃机器人就是对这个过程进行控制。
其次,除了跳跃球的模型外,Running System就像倒立摆一样,通过一个支撑点支持着身体的重量。倒立摆从数学模型看就是没有静态稳定点的,若想一直维持倒立摆稳定,只能用控制的方法保持其动态稳定。
本书的作者为了简化机器人的控制问题,首先设计了一种平面跳跃机器人,如下图所示。通过一个球面式的运行结构,作者巧妙的实现了一个近似平面运动的机器人系统。
One Legged Hopping Robot
One Legged Hopping Robot
这个机器人的Hip关节使用简单的PD控制率,其中γ\gamma是Hip关节的角度:

τ=kp(γγd)kvγ˙\tau=-k_p(\gamma-\gamma_d)-k_v\dot{\gamma}

机器人的腿部则是一个可以伸缩的空气压缩弹簧,可以通过阀控制腿内部的气体压力,从而控制腿部的输出。
Leg Design
为了简化控制机器人的算法,作者将跳跃机器人的运动流程分为了四个步骤:

  1. Lift-Off
  2. Top
  3. Touch-Down
  4. Bottom

Robot Running Cycle

通过检测这几个运行环节,来切换不同的机器人控制算法,使得机器人可以完成跳跃运动。

Control of Running Decomposed into Three Parts

Robot Running State Machine
State Machine Change Conditions

Control Hopping Height

由于机器人腿部天然是空气压缩弹簧,因此控制机器人高度的部分需要结合机器人自带的被动机械震荡属性来设计。控制系统在Stance阶段提供一个固定的推力,由于系统自带的被动震荡属性,使得在运行一段时间后机器人的高度会趋于平稳,维持在一个固定值附近。通过改变固定推力的大小,可以调整机器人运行高度。

Control Forward Speed

作者观察到,机器人在腾空后落地时,足部的着陆点有一个中性位置,当机器人的落足点在这个中性位置之前或者是之后时,机器人下次起跳的速度会发生改变,这个可以类比人类跳跃,若是落脚点不合适,人就会向前或者是向后跌倒。因此在跳跃机器人中,作者使用落脚点位置来对机器人的速度进行控制。控制算法如下,其中xf0x_{f0}为中性点位置,TsT_s为Stance阶段的时间:

xf0=x˙Ts/2x_{f0}=\dot{x}T_s/2

xfΔ=kx˙(x˙x˙d)x_{f\Delta}=k_{\dot{x}}(\dot{x}-\dot{x}_d)

xf=x˙Ts/2+kx˙(x˙x˙d)x_f = \dot{x}T_s/2 + k_{\dot{x}}(\dot{x}-\dot{x}_d)

由这几个公式可以确定Hip关节的期望角度为:

γd=ϕarcsin(x˙Ts/2+kx˙(x˙x˙d))\gamma_d=\phi-arcsin(\dot{x}T_s/2 + k_{\dot{x}}(\dot{x}-\dot{x}_d))

由于系统震荡是机器人的固有属性,因此当腿部的Stiffness确定时,Stance阶段的时间长度就基本确定了。由此可以进行机器人速度控制。
Simplified Model
Screenshot 2022-09-18 215001
Screenshot 2022-09-18 215016

Control Body Attitude

机器人身体的姿态则是由Stance阶段Hip关节的力矩来控制,控制率如下:

τ=kp(ϕϕd)kvϕ˙\tau = -k_p(\phi-\phi_d)-k_v\dot{\phi}

依靠Stance阶段的摩擦力维持机器人保持站立状态。为了保证机器人控制的有效性,在机器人的Loading与Unloading阶段,机器人不进行姿态控制,因为这两个阶段下,机器人提供的压力不够,无法保证足部不打滑。

Summarize

由上述的三个简单的控制算法,即可完成平面跳跃机器人的运动控制。