Home / 机器人经典基础 / Capture Point:被推之后,脚要落在哪里才能停下来

054|Capture Point:被推之后,脚要落在哪里才能停下来

总览 · 目录 · 上一篇 · 下一篇

论文:Jerry Pratt、John Carff、Sergey Drakunov、Ambarish Goswami,Capture Point: A Step toward Humanoid Push Recovery,Humanoids 2006,200–207。DOI · 作者上传全文 · 八页原稿镜像。年份按正式会议记录,平台上传时间不作为发表年份。

先接住前作的问题

LIPM揭示不稳定运动,ZMP预瞄生成计划步态,突发推搡仍需回答何时迈步。本篇以捕获点和飞轮扩展分析能否停住;腿足MPC则把未来接触力选择放进滚动优化。

五个前置概念

五个前置概念是:支撑区域描述足部接触可以提供的支撑位置;压力中心是合地面反力的作用位置;稳定模态表示误差随时间衰减的运动方向;角动量描述身体转动状态;摩擦锥限制地面切向力与法向力之比。

一、问题设定:质心位置与速度怎样决定一步能否停住

一个人重心仍在两脚之间,但身体已经向前快速移动,继续原地站着仍可能跌倒。只看位置忽略了动量。捕获点把位置和速度合在一起,回答一个更直接的问题:如果脚能提供某个支撑点,机器人是否能把运动收住?

问题定义:停止的含义比“瞬间速度为零”更强

第 IV 节定义捕获状态为动能为零、且可通过适当关节力矩保持为零的状态。仅在前后摆动中经过速度为零的瞬间不够,因为随后可能反向倒下。安全可行轨迹还必须满足动力学、执行器能力并避免跌倒。

捕获点的定义则要求机器人能使支撑区域包含该点、将压力中心保持在那里,并存在到达捕获状态的安全可行轨迹。捕获区域是这些点的集合。它是关于整个状态和控制能力的集合,不是图像上一个固定标记。

如果区域与当前支撑区域相交,在相应模型条件下可能不用迈步;如果没有交集但新脚可触及,需要迈步;若整个捕获区域都超出摆腿可达范围,一步不足以停止,但并不立刻等于多步也不可能恢复。

这一分类还没有自动解决从此刻到触地的摆腿过程。位置可达不代表规定时间内动力学可达,触地瞬间状态也已经变化。把即时捕获点当作不随时间变化的目标,是实际控制中需要避免的简化。

二、推导捕获点,再加入受限飞轮与地面作用

方法一:线性倒立摆的唯一捕获点

令重心水平位置为 xx,支撑点为 pp,恒定高度为 z0z_0,定义 ω=g/z0\omega=\sqrt{g/z_0}。没有角动量控制时

x¨=ω2(x−p).\ddot x=\omega^2(x-p).

相对于固定支撑点的位置 r=x−pr=x-p 的解包含一个增长模态和一个衰减模态。要最终停止在支撑点上方,必须消掉增长部分,即

x˙=−ω(x−p),p=x+x˙ω.\dot x=-\omega(x-p),\qquad p=x+\frac{\dot x}{\omega}.

这就是常见的捕获点表达。原文式(10)写的是相对重心的落点距离 x˙z0/g\dot x\sqrt{z_0/g};加入世界坐标重心位置后,得到上面的 pp。两个公式看起来差一个 xx,原因是坐标定义不同,不是不同算法。

论文也从轨道能量

E=12r˙2−12ω2r2E=\tfrac12\dot r^2-\tfrac12\omega^2r^2

说明这一点。但 E=0E=0 有两条分支,只有朝向支撑点运动的稳定分支会收敛。若位置和速度指向同一侧,即使能量为零也沿不稳定分支远离平衡。因此“能量为零”必须和方向条件一起使用。

捕获点本身也会向外跑

定高LIP模型中令 ω=g/zc\omega=\sqrt{g/z_c}、ξ=x+x˙/ω\xi=x+\dot x/\omega,其中 xx是质心水平位置、x˙\dot x是其速度,pp是支撑点。代入 x¨=ω2(x−p)\ddot x=\omega^2(x-p)可得 ξ˙=ω(ξ−p)\dot\xi=\omega(\xi-p)。若脚还未落下、支撑点固定,ξ(t)=p+eωt(ξ0−p)\xi(t)=p+e^{\omega t}(\xi_0-p)。

教学延迟例取 ω=3 s−1,p=0,ξ0=0.1\omega=3\,\mathrm{s}^{-1},p=0,\xi_0=0.1米;0.3秒后捕获位置约0.246米。最大可达落脚位置若只有0.2米,“现在的捕获点够得到”仍不表示摆腿完成时可以捕获。正确条件还需落脚时间、腿长和摆腿动力学。

本篇承接LIPM,与ZMP预瞄共享动力学却解决不同问题:一个问受扰后能在哪里停住,一个问怎样跟随已给支撑计划。作者上传原文摘要及图注展示平面简模的角动量与迈步仿真;“捕获区域扩大”依赖飞轮角度、角速度、力矩和地面反力边界,不能当作无限次甩臂的免费稳定能力。

方法二:角动量为什么把一个点变成区域

线性倒立摆把身体压缩成没有转动惯量的质点,无法解释弯腰、摆臂等恢复动作。论文用重心处的飞轮表示有限身体角动量能力,并保持腿无质量、可伸缩以及重心等高假设。以支撑点为原点,有

x¨=gz0x−τhmz0,θ¨b=τhJ.\ddot x=\frac{g}{z_0}x-\frac{\tau_h}{mz_0},\qquad \ddot\theta_b=\frac{\tau_h}{J}.

mm 是身体质量,JJ 是转动惯量,θb\theta_b 是飞轮角度,τh\tau_h 是驱动飞轮的力矩。第二项表明改变角动量也改变重心水平加速度。这不意味着内部动作违反动量守恒:机器人通过地面反力与外界交换动量,接触条件仍然重要。

飞轮不是一个可以无限加速、无限转圈的免费资源。论文先计算瞬时角速度或角度跳变带来的理论上界,随后明确指出这些跳变物理上不可实现,再引入力矩和角度限制。

第 V.F 节用先最大加速、后最大减速、最后停止的分段常力矩,寻找捕获区域边界。若初始与最终角速度为零,在单侧可用角度 Δθ\Delta\theta 下,飞轮运动时间满足

T2=2JΔθτmax⁡,T1=T2/2.T_2=2\sqrt{\frac{J\Delta\theta}{\tau_{\max}}},\qquad T_1=T_2/2.

有非零初始角速度时须用原文更一般的二次方程,不能继续套这个对称时间。随后积分重心动力学,要求飞轮停下时重心进入普通倒立摆稳定分支。正、负力矩与角度限位分别给出区域两侧边界。

方法三:力矩更大,还要看地面能否承受

第 V.G 节得到竖直地面力 fz=mgf_z=mg,以及

fxfz=xz0−τhmgz0.\frac{f_x}{f_z}=\frac{x}{z_0}-\frac{\tau_h}{mgz_0}.

这个比值的绝对值须处于摩擦系数允许范围。瞬时角度或速度跳变需要冲量力矩,可能要求几乎水平的地面反力,所以前述解析上界不能直接当可执行方案。

原文还使用无量纲参数 J/(mz02)J/(mz_0^2)、τ/(mgz0)\tau/(mgz_0) 等比较不同身体设计。尺寸不同的机器人不能只比较电机牛米数;质量、重心高度、转动惯量和可用角度都影响恢复能力。

捕获点依赖当前位置和速度,有限角动量再改变可捕获集合。下面加入摆腿等待,检查“现在可达”为什么不等于“落脚时仍可停”。

三、计算可捕获范围,用迈步时延检查目标变化

输入:重心位置速度、身体角度角速度、支撑区域和摆腿能力
      质量、惯性、重心高度、力矩角度限位、地面摩擦条件
计算不使用角动量时的即时捕获点
对正、负两个身体转动方向:
    依据当前角速度和剩余角度求可行加速/减速时间
    积分飞轮与重心的线性模型
    令飞轮停止后的重心状态落到稳定分支
    求出对应支撑点,形成模型捕获区域边界
检查候选力矩轨迹是否满足地面反力和执行能力
比较捕获区域与当前支撑区域、可触及的新支撑区域
选择原地恢复、迈步加身体运动或标记一步不足
执行中根据状态变化重新计算
输出:候选落脚位置和身体角动量轨迹

这是教学决策流程。最后的在线重算、摆腿动力学可达性检查是将模型接入机器人时必须补足的接口,并非原文已经提供完整通用实现。原文精确求解的是特定模型及控制限制下的问题。

自构例子:迈步越慢,目标可能跑得越远

令 z0=1z_0=1 米,g=9.81g=9.81,则 ω≈3.13 s−1\omega\approx3.13\ \mathrm{s^{-1}}。重心位置为零、前向速度 0.5 m/s 时,不使用角动量的即时捕获点约为 0.160 米。

若旧支撑点仍为零,在理想倒立摆模型中 ξ=x+x˙/ω\xi=x+\dot x/\omega 满足 ξ˙=ωξ\dot\xi=\omega\xi。等待 0.2 秒后,ξ\xi 变为约 0.160e3.13×0.2≈0.2990.160e^{3.13\times0.2}\approx0.299 米。这是自构教学计算,不是原文实验;它直观说明摆腿时间不是可忽略的小细节。

四、读平面模型恢复案例与参数分析

Fig. 7:位置、速度、轨道能量、身体俯仰与髋力矩随时间的五组仿真曲线
原图摘引:Pratt、Carff、Drakunov、Goswami(2006),Fig. 7,作者上传独立图页;核对原文。原版权保留。

读图:对齐 0.5 s 扰动时刻,速度跳变后髋力矩先负后正,身体俯仰增加后停止,轨道能量回到接近零。这是无需迈步的平面简模仿真,不能替代三维实机的扰动恢复极限。

实验设置与参数分析

相图中的捕获区域固定了飞轮初始状态;图外运动并不一定离开完整状态空间的可恢复集合。此处都是平面模型仿真,三维实机验证是后续工作。

项目 原文设置 要验证什么
模型 四自由度平面双足,转动髋、伸缩膝、点足 与解析模型接近的恢复动作
仿真器 Yobotics Simulation Construction Set 数值动力学执行
主体 25 千克,惯性 1.225 kg m21.225\ \mathrm{kg\,m^2} 飞轮代表主体角动量
腿部近似 每只脚 0.0025 千克点质量 接近无质量腿但并非严格为零
限制 最大髋力矩 100 Nm,最大身体角 3π/43\pi/4 有限驱动和角度空间
重心高度 目标 0.9375 米 保持线性模型适用性
案例一 静止时受冲击,水平速度变为 0.2 m/s 不迈步、只身体前倾恢复
案例二 步态顶点速度 0.5 m/s,接停止命令 一步加身体运动停止

参数分析图先固定无量纲初始身体角与角速度为零,再变化力矩或角度范围;这与实际仿真参数不是同一组。两类证据应分开:一类是模型的解析区域变化,另一类是接近该模型的仿真验证。没有多随机种子、实机负载或复杂地形成功率表。

五组证据及其适用范围

图 3、5、6、8 可直接打开作者上传的独立原图页;其余图从作者上传的完整原稿的第 III、VI、VIII 节按图号对照。相图横轴是无量纲位置、纵轴是无量纲速度,虚线界限还固定了飞轮的初始角速度。

图 2:三种恢复策略。 通过区域和支撑范围的相交关系说明何时不用迈步、何时需要迈步、何时一步不足。这是几何与动力学概念图,不能直接当成未知地面上任意机器人可执行的检测器。

图 3、第 VI 节:角动量扩展可恢复状态。 轨迹有时跑到图示边界外,作者专门说明:图中边界假定初始飞轮角速度为零,而轨迹运行中飞轮已有角速度。状态空间投影省略了一个重要变量,因此不能看到二维轨迹越界就宣称理论失效,也不能把该图当所有角速度共同适用的界。

图 4 与 图 5:提高一个参数会遇到收益递减。 固定角度范围增加最大力矩,或固定力矩增加角度范围,捕获区域都有渐近限制。它支持身体和电机联合设计的必要性,不支持“电机足够大便能抵抗任意推力”。地面摩擦还会进一步限制允许力矩。

图 6 与图 7:原地身体恢复。 冲击在 0.5 秒发生,把速度提高至 0.2 m/s;身体运动约在 0.8 秒完成,无需迈步。正文报告动作后轨道能量接近零到三位小数。这里的“接近零”是模型量,不是通用跌倒概率或传感定位误差。

图 8、图 9 与第 VIII.B 节:一步停止并未测试能力极限。 步行停止命令约在 3.9 秒发出,身体动作约在 4.25 秒完成。作者明确说两次仿真都未用满 100 Nm 和最大身体角,脚原本就在捕获区域内;他们固定由全限值得出的动作时间,再求实际需要的力矩。因此案例验证内部可行点,不证明边界附近也具有同样鲁棒余量。

五、保留摆腿时间、角动量预算与接触可行性

本文把落脚、压力中心调整和身体角动量放入可停止性的共同语言。它延续线性倒立摆,但显式加入角动量资源,使“手臂和躯干有帮助”成为可计算的范围,而非只有定性解释。

作者承认真实三维、分布质量、变重心高度的适用程度尚待验证。点足、近无质量腿、理想交换和简化接触也限制了直接迁移。仿真偏离精确零轨道能量,被归因于脚质量、柔性地面、离散化和舍入,这些说明模型并非完全复制执行系统。

由机制还可推知,连续推力、状态估计延迟、摆腿受阻和触地滑动会改变预测;一条捕获边界不能代替全身控制和环境感知。需要利用角动量时,还应为之后恢复身体姿态留下能力,而不只是把身体停在极限角度。

六、追问:同一瞬间算出的捕获点可达,为什么延迟落脚仍可能失败?

同一瞬间算出的捕获点可达,为什么延迟落脚仍可能失败?

参考答案:落脚之前质心还在继续演化,目标位置可能随速度和支撑条件改变。应把摆腿时间与可达落脚集合一起检查,而不是只检验瞬间几何距离。本文简化模型下的可捕获条件也仍受地面作用和角动量能力限制。

七、从可停止性走向接触力滚动优化

八、自测与参考答案

1.重心在脚上方但有很大水平速度,为什么仍需要迈步?

捕获点还包含 x˙/ω\dot x/\omega,它可能已经远离当前支撑区域。位置对齐不等于运动能停止;必须改变支撑、使用可用角动量,或采取多步恢复。

2.轨道能量等于零,是否一定最终停下来?

还要位于稳定分支。零能量包含稳定和不稳定两条方向关系;朝支撑点运动才会在理想模型中渐近停止,远离支撑点的分支仍会发散。速度方向不能被平方后的能量数值替代。

3.图 3 的轨迹越过捕获区域边界,为什么不一定矛盾?

那张二维区域图固定了飞轮初始角速度为零,而运动中角速度已经改变。完整状态的可恢复集合不能由这张固定切片代表;比较时必须同时匹配重心、角度、角速度及剩余角动量能力。