Part II · 第 9 章 机器人形态 · 9.2

足式与人形机器人基础

腿能去轮子去不了的地方,代价是机器人没有了"固定的底座":躯干悬浮着,唯一能推它的外力是脚底的地面反力,而且脚只能推、不能拉,还要受摩擦锥的限制。这一节从支撑多边形讲起,看地面力如何成为驱动躯干的唯一通道,再用线性倒立摆、零力矩点(ZMP)和捕获点把"走路"理解成可控的、有节奏的摔倒,最后看四足的步态。走路的本质,是用脚去推一个你无法直接驱动的身体,同时不让它倒下。

约 35 分钟 前置:2.5 常微分方程 · 2.4 泰勒展开 · 1.9 投影 · 7.2 构型空间 · 7.6 静力学与 wrench · 8.4 接触与摩擦 5 个交互

    1为什么机器人需要它

    轮子需要一条路,腿只需要一个个落脚点:台阶、碎石、楼梯、灾后废墟,只有足式机器人进得去;人形机器人更是希望直接使用为人类设计的世界。但是腿把机械臂里没有的三个难题带了进来:

    • 身体是"浮动"的。机械臂的底座拧在桌上,关节一转末端就动。足式机器人的躯干(浮动基座)没有被任何东西固定,它的位姿属于 \(SE(3)\)(7.2 节),其中 6 个自由度没有电机:关节力矩只能通过脚底的接触力,间接地推动躯干。
    • 接触是间歇的、单向的。脚只能推地,不能拉地(法向力 \(\ge 0\));切向力还不能超过摩擦锥(8.4 节)。每迈一步,脚离地、落地,接触模式就切换一次。
    • 平衡不是目标,是约束。静止的机械臂不会倒;站着的人形机器人像竖在指尖的一支笔,没有控制就在零点几秒内倒下。

    这一节要建立一套最小的"足式直觉工具箱":支撑多边形(什么时候不用动也不会倒)、浮动基座上的力与力矩平衡(脚到底能给躯干什么)、线性倒立摆与 ZMP / 捕获点(怎样走、怎样被推了还不倒)、步态(四足怎样安排脚的节奏)。真实的足式控制器(Part IV 的 MPC 与全身控制,Part VI 的强化学习)都建立在这些概念之上。

    2直觉:支撑多边形与"只能通过脚去推"

    静态稳定:质心要落在脚围成的区域里

    把机器人摆在地上,所有脚底接触点的凸包叫支撑多边形。只要质心(COM)沿重力方向在地面上的投影落在支撑多边形内,机器人静止就不会倒;投影越过某条边,它就绕这条边翻倒。投影点到最近边的距离叫稳定裕度。四足站立时多边形很大;抬起一条腿,它变成三角形,质心必须先挪进三角形;双足时多边形只是两只脚和它们之间的区域。

    斜坡会"移动"投影点:质心高度为 \(h\)、坡度为 \(\alpha\) 时,重力方向的投影相对于"沿坡面法向"的投影向下坡方向偏移 \(h\tan\alpha\),所以重心越高,在斜坡上越容易翻。同时,沿坡面下滑的趋势 \(\tan\alpha\) 超过摩擦系数 \(\mu\) 时,脚会打滑,这时翻倒之前先滑倒(8.4 节)。

    FIG 1支撑多边形与稳定裕度(俯视图)
    俯视图,图中的平面就是地面(坡面),\(x\) 向前。拖动脚(圆圈)和质心手柄(琥珀色)。琥珀点是质心沿坡面法向的位置;紫点是沿重力方向的投影 \(\mathbf c-h\tan\alpha\,\hat{\mathbf u}\),稳定性看紫点。多边形为绿色表示稳定,红色表示紫点出界,最近的边(翻倒轴)加粗。\(\hat{\mathbf u}=(\cos\psi,\sin\psi)\) 是上坡方向。双足模式下每只脚是 22×10 cm 的矩形。
    试一试
    • 平地上四足站立:把质心拖到支撑多边形外面(裕度 \(<-2\) cm)。哪条边是翻倒轴?
    • 选"抬左前"(或任何一条腿)。质心在中心时裕度是多少?把它挪进三角形,使裕度 \(>2\) cm。
    • 四足着地,质心沿法向的位置在多边形里(裕度 \(>2\) cm),只靠加大坡度让紫点出界。再试试把质心高度降下来。

    脚只能推,不能拉:地面反力是躯干唯一的"手"

    支撑多边形只回答"静止时倒不倒"。要回答"能不能走起来、跑起来",必须问:脚能给躯干什么力?每只脚给出一个地面反力 \(\mathbf f_i\),它受两条约束:法向分量 \(f_z\ge0\)(单向),切向分量 \(|f_x|\le\mu f_z\)(摩擦锥,半角 \(\arctan\mu\),8.4 节)。把所有脚的力加起来,再加上重力,就是整个机器人的牛顿–欧拉方程(8.2 节):

    $$ m\,\ddot{\mathbf c} \;=\; \sum_i \mathbf f_i + m\mathbf g, \qquad \dot{\mathbf h}_G \;=\; \sum_i (\mathbf p_i - \mathbf c)\times \mathbf f_i . $$

    左边是整台机器人质心的加速度和绕质心的角动量变化率(所有关节力矩都是内力,在求和中抵消了,所以式子里没有 \(\boldsymbol\tau\))。右边只有脚上的力。这就是"躯干只能通过脚被推动"的数学形式。下图是矢状面(侧视图)里的两只脚:拖动脚尖的力手柄,力被自动投影到摩擦锥内(最近点投影,1.9 节)。紫色箭头是躯干受到的净力 \(m\ddot{\mathbf c}\),琥珀色弧线是绕质心的净力矩。想让机器人静止,力要满足 \(\sum f_z=mg\)、\(\sum f_x=0\) 和力矩为零。

    FIG 2地面力、摩擦锥与躯干的净力和力矩
    力以体重 \(mg\) 为单位(0.7 m 长的箭头对应 1 个体重)。绿色箭头是地面反力,半透明扇形是摩擦锥(半角 \(\arctan\mu\))。拖动脚(地面上的圆圈)改变落脚点,拖动箭头尖端改变力。"求解"按钮用交替投影(在力平衡的仿射子空间与两个摩擦锥之间来回投影)找一组满足目标加速度的力,找不到就报告不可行。角加速度按等效回转半径 \(\rho=0.25\) m 计算:\(\alpha=M/(m\rho^2)\)。
    • 让机器人静止:\(|a_x|,|a_z|<0.03\,g\) 且 \(|\alpha|<5\) rad/s²。可以手动拖,也可以按"求解"(目标加速度 0)。
    • 把目标前向加速度设为 \(0.4\,g\) 并求解成功。躯干为什么没有绕水平轴转起来?看 CoP 跑到了哪里:水平力在质心下方产生的力矩要由 CoP 后移来抵消,\(x_{\text{CoP}}=-h\,a_x/g\)。
    • 把目标前向加速度设到比 \(\mu\) 大 0.05 以上并求解:为什么无解?(提示:摩擦锥是凸的,两个锥内的力之和仍在锥内。)再把质心高度升高,哪个限制先起作用?(提示:看 CoP 需要移到哪里。)
    核心洞见

    足式机器人的躯干不能被直接驱动:它的加速度由 \(\sum\mathbf f_i\) 和 \(\sum(\mathbf p_i-\mathbf c)\times\mathbf f_i\) 决定,而 \(\mathbf f_i\) 又被限制在摩擦锥里。因此质心水平加速度不可能超过 \(\mu(g+a_z)\),质心也只能在脚能"够到"的范围内被推动。整个足式运动控制,就是在这些约束下选择脚的位置、时刻和力。

    3动手玩:把走路当作"有节奏地摔倒"

    现在加上动力学。假设质心保持恒定高度 \(z_c\)、腿没有质量、不考虑绕质心的角动量变化,那么质心的水平运动满足一个线性方程,叫线性倒立摆模型(LIPM):

    $$ \ddot x \;=\; \omega^2\,\big(x - \hl{zmp}{p}\big),\qquad \omega=\sqrt{g/z_c}. $$

    \(p\) 是脚下的支撑点(即 ZMP,下文解释)。对人形机器人 \(z_c\approx0.85\) m,\(\omega\approx3.4\ \mathrm{s^{-1}}\),时间常数 \(1/\omega\approx0.3\) s:质心偏离脚 \(x-p\),会以这个时间常数指数地"飞离"。走路就是每隔一步换一个支撑点,让质心在落到下一只脚上方时刚好被接住。下图让一个 LIPM 行走器按这个规则连续迈步:每一步结束时,把新脚放在 \(p_{\text{new}}=\hl{dcm}{\xi_{\text{end}}}-b\) 处(\(\xi=x+\dot x/\omega\) 是下文的"捕获点",\(b\) 由期望速度和步时决定,见"再看数学")。拖动滑块改变质心高度、步时和期望速度。

    FIG 3线性倒立摆行走与相图
    侧视图(相机跟随质心)
    相图:相对当前支撑脚的 (x−p, ẋ)
    琥珀色球是质心,粗灰线是支撑腿,绿色三角是 ZMP(= 支撑点 \(p\)),紫色菱形是捕获点 \(\xi\),青色虚圈是下一步落脚目标。相图中绿色虚线是稳定流形 \(\dot x=-\omega(x-p)\),红色虚线是不稳定流形 \(\dot x=+\omega(x-p)\),琥珀色双曲线是当前步的轨迹(\(E\) 为常数的曲线),暗淡的是前几步;换脚时 \(x-p\) 向左跳变一个步长。读数中"闭式 − RK4"是 \(x(t)\) 的解析解与数值积分之差。
    • 把期望速度调到 \(\ge1.0\) m/s 并走满 3 步。读数里的步长 \(L=vT\) 变成多少?质心的相图轨道有什么变化?
    • 把期望速度调到 0,让行走器停下来(\(|\dot x|<0.03\) m/s 且在脚正上方)。它是怎么停的?看相图里的点沿哪条流形收敛。
    核心洞见

    LIPM 只有一个不稳定模态:质心相对于脚的位置和速度,只有组合 \(\xi=x+\dot x/\omega\) 会指数发散,另一个组合 \(x-\dot x/\omega\) 自己收敛。所以走路只需要控制一个量 \(\xi\):每一步选好落脚点,让下一步开始时的 \(\xi\) 恰好是想要的值。其余的(位置、速度的另一个自由度)会自动衰减。

    4第二个视角:被推了怎么办?捕获点

    站着的机器人被突然推了一把,质心得到速度 \(\dot x_0\)。捕获点(Pratt 等 2006,也叫发散分量 DCM)\(\xi=x+\dot x/\omega\) 回答:"脚落在哪里,机器人才会恰好停在那只脚上方?"答案就是 \(p=\xi\):因为 \(\dot\xi=\omega(\xi-p)\),脚放在 \(\xi\) 处,\(\xi\) 就不再变化,\(x\) 以时间常数 \(1/\omega\) 收敛到 \(\xi\)。但迈步需要时间 \(t_s\),这段时间里 \(\xi\) 仍在以 \(e^{\omega t_s}\) 增长,所以实际要落的位置是 \(\xi(t_s)=\xi_0e^{\omega t_s}\)。

    脚能够到的范围有限(腿长、关节限位),于是出现捕获区域:推得不太狠时,只靠踝关节的力矩把 ZMP 移到脚尖就够了("踝策略",\(\xi_0\) 落在脚的范围内);更大的推力要迈步("迈步策略");再大,脚够不到 \(\xi(t_s)\),就一定倒。这就是人被推时会下意识迈出一步的原因:脚太小,踝策略的容量只有几厘米。

    FIG 4推力恢复与捕获点
    侧视图
    x(t)、ξ(t) 与落脚点 p(t)
    \(z_c=0.85\) m,\(\omega=3.40\ \mathrm{s^{-1}}\)。"推"在 \(t=0\) 给质心一个速度增量 \(\Delta v\);脚在 \(t_s\) 时刻落在目标点(地面上的绿色手柄,可拖动)。地面上:绿色线段是踝策略的范围(脚的大小),青色线段是迈步能到的范围(\(\pm r\) 围绕落脚时刻的质心),紫色菱形是 \(\xi(t_s)\),绿色手柄和绿色短线是你选的落脚点(落地前为虚线)。右图:琥珀色是 \(x(t)\),紫色是 \(\xi(t)\),绿色阶梯线是支撑点 \(p(t)\)。
    • 先试直觉做法:按"落在质心正下方",然后"推"。机器人停得住吗?为什么 \(\xi\) 不等于脚的位置就停不住?
    • 按"落在捕获点"再推:质心应当恰好停在脚的正上方。再把推力 \(\Delta v\) 加大,直到 \(\xi(t_s)\) 超出可达范围(红色)。
    同一件事的三个视角

    时间视角:\(x(t)-p\) 是 \(e^{\omega t}\) 和 \(e^{-\omega t}\) 的组合,发散的那一项系数是 \(\tfrac12(\xi_0-p)\)。相平面视角(FIG 3):状态沿双曲线运动,稳定流形是唯一会走向脚下的路。捕获点视角(FIG 4):把发散的那个方向单独拿出来当作一个坐标 \(\xi\),脚放在 \(\xi\) 就关掉了发散。三者数学上完全等价,但第三个最适合设计控制器:只有一个量要管。

    5再看数学

    提示:把鼠标悬停在公式中带底色的符号(\(p\)、\(\xi\))上,FIG 3 中对应的元素会被高亮。

    线性倒立摆的推导与假设

    取矢状面,\(x\) 向前、\(z\) 向上。整台机器人质量为 \(m\),质心在 \((x,z)\),地面反力的合力 \(\mathbf F=(F_x,F_z)\) 作用在地面上的一点 \(p\)(压力中心 CoP)。牛顿–欧拉方程给出 \(F_x=m\ddot x\),\(F_z=m(\ddot z+g)\),合力对质心的力矩等于角动量变化率 \(\dot H\)(逆时针为正):

    $$ (p-x)\,m(\ddot z+g) + z\,m\ddot x \;=\; \dot H \quad\Longrightarrow\quad \hl{zmp}{p} \;=\; x \;-\; \frac{z\,\ddot x}{\ddot z+g} \;+\; \frac{\dot H}{m(\ddot z+g)} . $$

    这就是 ZMP(零力矩点)的表达式:它是地面上那一点,在它上面,重力与惯性力的合力矩的水平分量为零。LIPM 做了四个假设:(1) 质量集中在质心;(2) 质心高度恒定,\(z=z_c\),\(\ddot z=0\);(3) 腿无质量(摆动腿不影响质心);(4) \(\dot H\approx0\)。代入即得

    $$ \begin{aligned} \ddot x &= \frac{g}{z_c}\,(x-p) = \omega^2(x-p),\\[2pt] x(t) &= p+(x_0-p)\cosh\omega t+\frac{\dot x_0}{\omega}\sinh\omega t,\\[2pt] E &= \tfrac12\dot x^2-\tfrac12\omega^2(x-p)^2 = \text{const}. \end{aligned} $$

    闭式解可以直接代回方程验证,FIG 3 的读数把它与 RK4 数值积分比较(一步之内差在 \(10^{-10}\) m 以下)。\(E\) 叫轨道能量:\(\dot E=\dot x\ddot x-\omega^2(x-p)\dot x=0\),所以在一步之内相平面轨迹是双曲线。\(E>0\) 说明质心会越过脚正上方继续前进,\(E<0\) 说明会在越过之前折返,\(E=0\) 恰好是两条流形。两条路得到同一个方程:对"刚性腿长 \(\ell\) 的摆",\(x=\ell\sin\theta\),\(\ddot\theta=\tfrac g\ell\sin\theta\),小角度下 \(\sin\theta\approx\theta\)(2.4 节的线性化)给出 \(\omega=\sqrt{g/\ell}\);LIPM 的"恒高度"假设则不要求角度小,但要求腿能伸缩来保持高度。

    ZMP、CoP 与摩擦锥的关系

    平地上,各接触点的法向力 \(f_{z,i}\ge0\),压力中心是它们的加权平均:

    $$ x_{\text{CoP}} = \frac{\sum_i x_i\,f_{z,i}}{\sum_i f_{z,i}} \in \operatorname{conv}\{x_i\}. $$

    凸组合必定落在接触点的凸包内,所以真实的 CoP 永远在支撑多边形里;平地上 ZMP 与 CoP 重合。FIG 2 的读数用 \(\sum x_if_{z,i}/\sum f_{z,i}\) 和上面的 ZMP 公式(其中 \(\dot H\) 取脚力对质心的合力矩)各算一遍:两者在代数上等价,差值只是浮点误差,它检验的是公式与代码一致,并不是一次独立的测量。如果某个运动"需要"的 ZMP 在多边形之外,那个点只是一个虚构的 ZMP:真实的 CoP 会停在边上,多出来的力矩变成绕这条边的角加速度,脚开始滚动,机器人开始翻倒。ZMP 条件只管法向力的单向性(\(f_z\ge0\));切向力的限制是另一个独立的条件,即 \(\|\mathbf f_t\|\le\mu f_z\),另外还有绕竖直轴的摩擦力矩(偏航)。ZMP 在脚内,不保证不打滑。

    捕获点(DCM)与步长规划

    令 \(\xi=x+\dot x/\omega\),则 \(\dot\xi=\dot x+\ddot x/\omega=\dot x+\omega(x-p)=\omega\big(\hl{dcm}{\xi}-p\big)\),同时 \(\dot x=-\omega(x-\xi)\)。所以 \(\xi\) 的方程是一个独立的一阶不稳定系统,而 \(x\) 只是它的一个低通滤波后的跟随者。单支撑相内

    $$ \xi(t)=p+(\xi_0-p)\,e^{\omega t}. $$

    周期步态:要求每一步开始时相对新脚的状态相同,且每步前进 \(L\)、历时 \(T\)。设开始时 \(x_0\)、\(\dot x_0\)(相对脚),结束时 \(x_T\)、\(\dot x_T\)。周期性要求 \(x_T-L=x_0\),\(\dot x_T=\dot x_0\),解得 \(x_0=-L/2\),\(\dot x_0=\tfrac{\omega L}{2}\coth\tfrac{\omega T}{2}\)(FIG 3 的行走器正是从这组初值出发的,两个条件都成立到 \(10^{-16}\))。平均速度 \(v=L/T\);轨道能量 \(E=\tfrac12\omega^2(L/2)^2/\sinh^2(\omega T/2)\)。每步开始时相对新脚的捕获点是 \(b=\xi_{0}=\tfrac L2(\coth\tfrac{\omega T}{2}-1)\),因此 DCM 落脚规则是

    $$ p_{k+1} \;=\; \xi_{\text{end},k} - b,\qquad \xi_{\text{end},k}=p_k+(\xi_{0,k}-p_k)\,e^{\omega T}. $$

    这一步把下一步开始时的 \(\xi\) 精确设成目标值(对不稳定模态是"一步到位"的),稳定模态每步以因子 \(e^{-\omega T}\approx0.2\) 衰减,所以 FIG 3 改变速度后两三步就进入新的周期步态。期望速度为 0 时 \(b=0\),规则变成 \(p=\xi\),正是捕获点。

    浮动基座的动力学,为什么前 6 行没有驱动

    7.2 节:浮动基座机器人的构型是 \(q=({}^{W}T_{B},\boldsymbol\theta)\in SE(3)\times\mathbb R^n\)(速度 \(\dot q\) 取 \(6+n\) 维:基座 twist 与关节速度)。8.3 节的运动方程加上接触力,写成

    $$ M(q)\,\dot{\mathbf v}+h(q,\mathbf v)=S^{\!\top}\boldsymbol\tau+\sum_{i}J_{c,i}(q)^{\top}\mathbf f_i,\qquad S=\begin{bmatrix}0_{n\times6}&I_n\end{bmatrix}. $$

    \(S^\top\boldsymbol\tau\) 的前 6 个分量恒为 0:电机只作用在关节上。所以前 6 行(基座方向)是 \(M_{bb}\dot{\mathbf v}_b+M_{b\theta}\ddot{\boldsymbol\theta}+h_b=\sum_iJ_{c,i,b}^{\top}\mathbf f_i\):基座加速度只能通过摆动关节带来的惯性耦合和接触力改变。接触力本身又由 \(J_c\dot{\mathbf v}+\dot J_c\mathbf v=0\)(脚不滑动)这类约束和关节力矩共同决定(8.4 节)。把前 6 行写成整体的力与力矩(所有关节的内力抵消),就得到 \(\sum_i\mathbf f_i+m\mathbf g=m\ddot{\mathbf c}\) 与 \(\dot{\mathbf h}_G=\sum_i(\mathbf p_i-\mathbf c)\times\mathbf f_i\)(加上脚上的接触力矩):这是质心动力学(centroidal dynamics)。地面力能产生的净 wrench(7.6 节)构成一个凸锥 \(\{\sum_iG_i\mathbf f_i:\mathbf f_i\in\mathcal F_i\}\),足式 MPC 和全身控制就是在这个锥里选 \(\mathbf f_i\)(Part IV,可写成 QP,6.8 节)。

    Raibert 启发式、SLIP 与能量

    Raibert(1986)的单腿跳跃机用一条朴素的规则平衡速度:脚落在"中性点" \(\dot x\,T_s/2\) 前方,再加一个速度反馈项,\(x_{\text{foot}}=\dot x\,\tfrac{T_s}{2}+k(\dot x-\dot x_{\text{des}})\),\(T_s\) 是支撑时间。形式上它和 DCM 落脚规则是近亲。把腿换成弹簧,就得到跑步的模型 SLIP(弹簧加载倒立摆):质心在支撑相像在弹簧上弹跳,腾空相是抛体。LIPM 的支撑相不做功(\(E\) 不变);真实机器人落脚时有碰撞损失、蹬地时补充能量,被动行走机(McGeer 1990)则靠斜坡上的重力势能补回。

    6机器人中的它:四足步态与真实系统

    四足动物(和四足机器人)按固定的节奏轮流抬腿,这个节奏叫步态。每条腿在一个周期里有一段支撑相(脚在地上,占周期的比例叫占空比 \(\beta\))和一段摆动相,四条腿的周期之间错开一定的相位。下图左上是步态图(Hildebrand 图):每行一条腿,实心是支撑,空白是摆动;左下画出每个时刻支撑多边形能给出的最大静态稳定裕度(多边形内最大内切圆的半径);右侧是俯视动画:实心圆是支撑脚,空心圆是摆动脚,紫环是理想的静态质心位置(质心在身体里,所以机器人必须在迈步之前先晃动身体,把质心挪过去)。

    FIG 5四足步态:占空比、相位与稳定性
    步态图(两个周期,实心 = 支撑)
    最大静态裕度 r (cm)
    俯视图(相机固定在躯干上)
    四只脚用红(左前 LF)、绿(右前 RF)、蓝(左后 LH)、紫(右后 RH)区分。相位是脚落地时刻在周期中的位置(相对 LF,各步态的数值为示意值,真实步态随速度连续变化)。左下图里红色背景表示此刻着地的脚少于 3 条,没有二维的支撑多边形。躯干速度 \(v=S f/\beta\),其中支撑行程 \(S=0.3\) m 固定(脚在支撑相内相对躯干扫过的距离;一个周期的步幅是 \(v/f=S/\beta\)),髋高取 \(\ell=0.5\) m,弗劳德数 \(\mathrm{Fr}=v^2/(g\ell)\)。
    • 选"步行",把占空比 \(\beta\) 从 0.8 往下调:低于多少时,周期里开始出现只有 2 只脚着地的瞬间?为什么恰好是这个数?(提示:4 只脚的相位等间隔 1/4。)
    • 选"小跑":\(\beta=0.5\) 时任何时刻都恰有 2 只脚(一条对角线)着地,裕度为 0。把 \(\beta\) 调到 0.5 以下,会出现什么新阶段?
    真实系统里

    四足:Boston Dynamics Spot、ANYbotics ANYmal、Unitree Go/B 系列、MIT Mini Cheetah。传统路线是"MPC + 全身控制":用质心动力学(带摩擦锥的接触力)做预测,再用全身控制器把期望的足力变成关节力矩(MIT Cheetah 3 的凸 MPC,Di Carlo 等 2018)。近年盲走式四足大量改用强化学习(Hwangbo 等 2019;Lee 等 2020):在仿真里训练策略,直接输出关节目标,再迁移到实机(sim-to-real,Part VI)。人形:本田 ASIMO 和日本产业技术综合研究所(AIST)的 HRP 系列都基于 ZMP 走路,其中 HRP 用预观控制(Kajita 等 2003),是 2000 年代的标志;Boston Dynamics 的 Atlas 用优化控制,近年又转向电动版本;Agility Robotics 的 Cassie / Digit(弹性腿,常用 RL 控制器)、Unitree H1 / G1、Tesla Optimus 等也在这条线上。执行器:高性能的腿多用准直驱(低减速比、大转矩电机)带来可反向驱动、对外力"透明"的腿,让接触力可以靠电流直接估计和控制(9.4 节)。状态估计:躯干位姿无法直接测量,要融合 IMU 和腿部里程计(Kalman 滤波,4.8 节与 Part IV)。被动行走机(McGeer 1990)则提醒我们:合适的机械结构本身就能在斜坡上不加控制地走起来。

    7常见误区

    误区 1:把"质心投影在支撑多边形内"当成稳定的全部

    它只是静态稳定的充分条件。走路的机器人大部分时间质心投影在多边形之外(双足行走时单脚的多边形根本放不下质心),能走起来靠的是动态稳定:用 ZMP 或捕获点这类包含速度的量判断。反过来也成立:质心在多边形里但速度很大,一样会冲出去。FIG 3 里质心经常飘到脚外,却不会倒,因为 \(\xi\) 被每一步控制住了。

    误区 2:到处套用 LIPM

    四条假设:集中质量、恒高度、无质量腿、\(\dot H\approx0\),在真实机器人上都只是近似。腿重(占整机质量的 20% 以上并非罕见)而且摆得快时,摆动腿的惯性力会明显影响质心;快步行走和跑步需要大幅度的竖直运动,恒高度假设失效;全身(手臂、躯干)的俯仰、侧滚角动量变化 \(\dot H\) 会在 ZMP 公式里多出 \(\dot H/(mg)\) 一项;另外,摆动腿还会产生绕竖直轴的偏航角动量,只能靠脚底的摩擦力矩抵抗,人形机器人摆臂正是为了抵消这部分偏航角动量。LIPM 适合做规划的"骨架",之后要用全身模型去修正。

    误区 3:忘记摩擦

    ZMP 在脚内只保证法向力没有"拉"地面,不保证脚不滑。湿滑地面、快速转向或急停时需要的水平力 \(|F_x|\le\mu F_z\) 先被突破,脚就滑了,捕获点要求的"快速迈一大步"同样需要摩擦。FIG 2 里水平加速度的上限 \(\mu(g+a_z)\) 对所有足式机器人成立,与控制器多聪明无关。

    误区 4:把"ZMP 在多边形之外"当成现实中的翻倒点

    真实的 CoP 永远在支撑多边形内。由运动算出来的 ZMP 跑到外面,说明这个运动不能实现:实际的 CoP 会饱和在边上,缺失的力矩使躯干转动。它是一个"需要多少力矩"的度量,不是地面上真有这个压力点。也正因为如此,稳定性判据要用 ZMP 与边之间的距离(裕度)而不是"在不在里面"这个布尔值。

    误区 5:小跑是静态稳定的

    小跑时只有一条对角线的两只脚着地(FIG 5:多边形退化成线段,最好的裕度也是 0),\(\beta<0.5\) 时还有腾空相。它之所以不倒,是因为下一对对角脚在恰当的时刻接住了质心,是动态稳定。这也意味着急停是个问题:在小跑的中途突然冻结,机器人会绕那条对角线翻倒。真实控制器必须规划"怎么停",例如逐步过渡到步行或用捕获点式的落脚。

    8小练习

    1. 质心高度 \(z_c=0.9\) m 的人形机器人,LIPM 的 \(\omega=\sqrt{g/z_c}\) 约为(\(g=9.81\ \mathrm{m/s^2}\))?
    \(\omega=\sqrt{9.81/0.9}=\sqrt{10.9}\approx3.30\ \mathrm{s^{-1}}\),时间常数 \(1/\omega\approx0.30\) s(所以选项 0.30 是时间常数,不是 \(\omega\))。质心越高,\(\omega\) 越小,摔得越慢,这就是高个子更容易控制平衡的原因。
    2. 同样 \(z_c=0.9\) m 的机器人站在脚上方 \(x=p\),被推了一下,得到速度 \(\dot x=0.5\) m/s。捕获点 \(\xi\) 距离脚大约多远?
    \(\xi-p=(x-p)+\dot x/\omega=0+0.5/3.30\approx0.15\) m。如果脚能瞬间放到那里,机器人会恰好停在脚上方。迈步需要时间 \(t_s\) 时,\(\xi\) 还要乘上 \(e^{\omega t_s}\):\(t_s=0.3\) s 时放大约 2.7 倍,应落在约 0.41 m 处。
    3. 两只脚站在平地上,摩擦系数 \(\mu=0.5\)。在竖直方向不加速(\(a_z=0\))时,质心水平加速度的最大值是?
    每只脚 \(|f_x|\le\mu f_z\),相加得 \(|\sum f_x|\le\mu\sum f_z=\mu m(g+a_z)\),所以 \(|a_x|\le\mu g=4.9\ \mathrm{m/s^2}\),与质量无关(质量在两边抵消)。把 \(a_z\) 调大(蹬地起跳时)这个上限还会变高。
    4. 某个步态规划算出的 ZMP 在支撑脚的脚尖外 5 cm。真实机器人上会发生什么?
    真实压力中心是法向力的加权平均,不可能在脚外。需要的 ZMP 在外面,意味着给定的 \(\ddot x\) 在不转动的条件下无法实现;多出的力矩 \(\dot H\neq0\) 使机器人绕脚尖前倾。(选项 D 方向也不对:ZMP 在前面表示机器人在向前倾,需要更大的前向力矩。)
    5. 一个"侧序步行",四只脚的相位等间隔 1/4。为了任何时刻至少有 3 只脚着地,占空比 \(\beta\) 至少要多大?
    四只脚的支撑相各长 \(\beta\),起点等间隔 1/4。任一时刻着地的脚数为 \(\lfloor4\beta\rfloor\) 或 \(\lceil4\beta\rceil\),所以 \(\beta\ge3/4\) 才能始终有 3 只。小于 3/4 就会出现只有 2 只脚(对角线)的瞬间,必须靠动态稳定。FIG 5 的任务正是验证这一点。

    9延伸阅读

    • S. Kajita, F. Kanehiro, K. Kaneko, K. Yokoi & H. Hirukawa, The 3D Linear Inverted Pendulum Mode: A simple modeling for a biped walking pattern generation, IROS 2001 — LIPM 的经典出处
    • S. Kajita, F. Kanehiro, K. Kaneko, K. Fujiwara, K. Harada, K. Yokoi & H. Hirukawa, Biped walking pattern generation by using preview control of zero-moment point, ICRA 2003 — ZMP 预观控制,ASIMO / HRP 时代的核心方法
    • M. Vukobratović & B. Borovac, Zero-Moment Point — Thirty Five Years of its Life, Int. J. Humanoid Robotics 1(1), 2004 — ZMP 的定义、历史与争议
    • J. Pratt, J. Carff, S. Drakunov & A. Goswami, Capture Point: A Step toward Humanoid Push Recovery, Humanoids 2006 — 捕获点与推力恢复
    • J. Englsberger, C. Ott & A. Albu-Schäffer, Three-dimensional bipedal walking control based on divergent component of motion, IEEE Trans. Robotics 31(2), 2015 — DCM 在三维行走控制中的推广
    • M. Raibert, Legged Robots That Balance, MIT Press, 1986 — 单腿跳跃机与"落脚点反馈"启发式
    • P. M. Wensing, M. Posa, Y. Hu, A. Escande, N. Mansard & A. Del Prete, Optimization-Based Control for Dynamic Legged Robots, IEEE Trans. Robotics 40, 2024 (arXiv 2022) — 足式机器人的 MPC 与全身控制综述,Part IV 的预习材料
    • E. R. Westervelt, J. W. Grizzle, C. Chevallereau, J. H. Choi & B. Morris, Feedback Control of Dynamic Bipedal Robot Locomotion, CRC Press, 2007 — 混合零动态与虚拟约束,另一条严格的双足控制路线
    • T. McGeer, Passive Dynamic Walking, Int. J. Robotics Research 9(2), 1990 — 不用电机的行走
    • S. Kajita et al., Introduction to Humanoid Robotics, Springer, 2014 — LIPM、ZMP 和人形机器人控制的系统教材