[双足机器人如何行走?]

译文:how-do-biped-robots-walk

早在上个世纪七八十年代,双足行走就已经在机器人上实现了,但双足机器人一个重大里程碑是 1996 年 Honda 推出的 P2 仿人机器人,随后 P2 成了大名鼎鼎的 Asimo。P2 能够完成行走推车爬楼梯等任务。P2 的核心设计就是基于零力矩点 (ZMP) 反馈的步行控制。本文接下来就探究这背后的原理。

如果您是第一次阅读这篇博客,建议先观看 NHK 纪录片: ASIMO, HONDA, ROBOT, JAPAN, DOCUMENTARY, INTERVIEW,纪录片介绍了接下来将要解释的几个关键的概念。

线性倒立摆模型(LIPM)

机器人(固定或移动)通常是由多个执行关节连个多刚体模型。通常这样的系统的运动方程是高维的,但是可以分解成三个可行的假设:

  • 假设 1:机器人有足够的关节力矩来实现其运动;
  • 假设 2:质心(CoM)周围没有角动量;
  • 假设 3:质心周围没有角动量;

假设 2 和 3 解释了为什么 Honda P2 机器人总是胳膊保持静止并且弯曲膝盖行走。在这三个假设的约束下,双足机器人步行的运动方程就简化成了一个线性模型,即线性倒立摆

\[ \ddot{p}_{G}=\omega^{2}\left(p_{G}-p_{Z}\right) \]

其中 \(\omega^{2}=g / h\)\(g\) 是重力常量,\(h\) 是质心(CoM)的高度,\(p_{Z}\) 是 ZMP 位置。常量 \(\omega\) 称为线性倒立摆的固有频率。在这个模型当中,机器人可以被看成质量集中在一点 \(G\) 上,通过一条没有质量的腿与地面接触,触地点为 \(Z\)。直观上理解,ZMP 点就是机器人施加重量的点。所以,ZMP 点需要落在支撑区 \(S\) 内,机器人才能保持稳定。

从上免公式可以看出,机器人前进过程中,ZMP 往后移动,导致质心(CoM)加速向前(往前走一步,有可能导致往前摔倒)。同时,机器人摆动腾空的另一条腿来实现新的一步。当摆动腿接触地面,机器人的 ZMP 点就移动到了新的立足点了(质量转移到另一条腿),这就使得质心减速。然后不断重复上述过程。

现在有了系统模型,接下来就是规划和控制的问题。步态行走任务通常分解成两个子问题:

  • 步态模式生成:假设一个理想的模型,并且没有干扰,生成参考的 CoM-ZMP 轨迹;
  • 步态稳定性:尽可能地去拟合跟踪参考轨迹,使用反馈控制来消除干扰和修正模型误差;

步态模式生成

步态模式生成的目标时生成质心(CoM)的轨迹 \(p_{G}(t)\),对应 ZMP 点

\[ p_{Z}=p_{G}-\frac{\ddot{p}_{G}}{\omega^{2}} \]

ZMP 需要始终处于支撑区 \(S\) 内。如果机器人处于单脚支撑时,支撑区就成了单个点。如果机器人在平地上双脚着地,所有支撑区就形成一个凸包形状。如果地面不平,或者机器人由其他接触(例如用手倾斜靠在某处),则定义一个多接触 ZMP 区,但这就会是相当复杂的问题了。

线性模型预测控制

有很多方法可以用来生成步态模式。其中一个最突出的部分就是将模型表述为一个数值优化问题,在 2003 年 Kajita 等人提出了预览控制,随后就被 Wieber 等人扩展并演变成为了线性模型预测控制,同时还有足迹自适应CoM 高度变化。在 HRP-2HRP-4 机器人上就采用了这样的方法加持下,显著提升了步态模式生成的性能。

DCM 轨迹生成

另外一种方法就是将线性倒立摆的二阶动力模型分解成为 2 个一阶系统,定义 \(\xi\)

\[ \xi=p_{G}+\frac{\dot{p}_{G}}{\omega} \]

那么 LIPM 的动力模型可以重新写作

\[ \begin{aligned} \dot{\xi} &=\omega\left(\xi-p_{Z}\right) \\ \dot{p}_{G} &=\omega\left(\xi-p_{G}\right) \end{aligned} \]

第二个方程是一个稳定系统:有一个对 \(p_{G}\) 的负反馈增益 \(-(1)\),或者这么理解,如果 \(\xi\) 称为常数,那么 \(P_{G}\) 将慢慢收敛于它。\(\xi\) 就被称之为瞬时捕获点(ICP)。另一个方程是非稳定的:捕获点 \(\xi\) 与 ZMP 点 \(\boldsymbol{p}_{Z}\) 发散,这就是为什么 \(\xi\) 被称为发散运动分量 (DCM)。瞬时捕获点(ICP)的名称来自于,如果机器人在任意时刻 \(\forall t \geq t_{0}, p_{Z}(t)=\xi\) 站立到该点,它的 CoM 在\(t \rightarrow \infty\)\(p_{G}(t) \rightarrow \xi\), 最终会停下来(称之为“被捕获”)。

当 CoM 收敛到 DCM 时没就没有必要考虑上面第二个方程的动力学分解了。对步态控制器来说,控制 DCM 比控制 CoM 的速度和位置会更加有效率。步态模式生成可以专注于产生轨迹 \(\xi(t)\) 而不是 \(p_{G}(t)\)。因为方程 \(\dot{\xi}=\omega\left(\xi-p_{Z}\right)\) 是线性的,所以可以用几何解析求解。在 ASIMO、IHMC 的 Atlas 和 TORO 机器人上都是用了 DCM 轨迹优化的方法来生成步态模式。

现在我们有了参考的步态模式,接下来就需要让实体机器人执行,简单的开环控制并不适用,因为步态的动力学模型是发散的,所以必须要添加反馈。

步态稳定性

在 1996 年,Honda 的 P2 机器人有两个关键的进展:在硬件方面,脚踝和脚底之间加上了一个橡胶衬套,以吸收冲击力,并使地面反作用力得到柔顺的控制;在算法上,使用了 ZMP 反馈控制。根据 Asimo 平衡控制报告 中的术语,这种反馈方法用 DCM 表示成

\[ \dot{\xi}=\dot{\xi}^{d}+k_{\xi}\left(\xi^{d}-\xi\right) \]

其中 \(\xi^{d}\) 是根据步态模式的目标 DCM. 代入 \(\dot{\xi}=\omega\left(\xi-p_{Z}\right)\) ,上式可以写成 ZMP 形式

\[ p_{Z}=p_{Z}^{d}+k_{z}\left(\xi-\xi^{d}\right) \]

其中 \(k_{Z}=1+k_{\xi} / \omega\)\(p_{Z}^{d}\) 是目标 ZMP,\(p_{Z}\) 是机器人使用足底力控制的 ZMP。对于像 HRP-2 或者 HRP-4 这样采用位控制的机器人,使用踝关节的阻尼控制实现脚力控制,参考 HRP-4C 的步态稳定器报告的章节 III.D,强烈安利这篇论文,每一个章节都是精华。

那么,这种控制方法实际是什么样的呢?想想这样一个场景,当回放步态模式是,机器人处于某种原因开始往右倾斜,结果 DCM 的横向坐标 \(\xi_{y}\)\(\xi^d\) 位置低。然后 ZMP 将会朝着 \(y_Z < y^{d}_{Z}\) 的方向生成正向速度

朝着 DCM(红色箭头往右)接近目标位置。机器人挥着手,右脚向右倾斜,以便将自己推回到左边。

更进一步

按照上面讨论中链接可以了解每个部分的详细信息。上面的例子我没有提到的是状态观测,如何从传感数据估计 CoM 的位置和速度。下面是关于行走控制本身的一些其他要点:

有一些其他的步态控制方法,不依赖于 ZMP 反馈,例如应用在 DURUS 上的被动步态和混合零动力方法。