【读书笔记】Legged Robots That Balance (1)

第二章:平面跳行单腿(Hopping on One Leg in the Plane)

  • 笔记应配合原书《Legged Robots That Balance》一同阅读(尤其是图表)

  • 正文为原文内容概括

  • 括号()内为我的注释

平面跳行单腿,下文简称单腿,即通过跳跃动作前行的单腿系统。

从能量的角度分析,单腿的跳跃运动可以类比为弹球(如篮球)的弹跳运动,每一次与地面碰撞的过程,都是通过弹性形变完成动能与势能的转换过程。

从控制的角度分析,单腿的平衡控制可以类比为倒立摆的平衡控制,当质心发生偏移导致不稳定后,它们都是通过移动底部支撑点的位置来重新达到平衡的。(就像人在单脚站立的时候,通过不断地跳动变换位置来维持平衡)

本章只研究单腿跳行运动(Hopping on One Leg),这样可以暂时规避多腿协作的问题。将单腿的控制研究分解为三个任务:

  • 跳跃(regulate hopping)
  • 前行(forward travel)
  • 姿态(posture)

本章的研究旨在让单腿可以完成以下动作:

  • 原地跳跃
  • 以一定的速率(最大速率1.2m/s)从一个位置移动到另一个位置
  • 当遭受到机械干扰时能够维持平衡
  • 跳过小障碍物

跳行单腿的平面型机械结构(A Planar Mchine That Hops on One Leg)

单腿的机械结构如图2.1所示,由两部分组成:身体部分安装各类传感器和阀;腿部为一个气缸,用以驱动。

图2.2展示了一种约束机构,它将单腿的运动限制在平面内。(这里的平面是广义的,严格来讲运动空间是一组圆柱面,作者通过一组约束机构限制了单腿的三个自由度,使其只能做上下平移、前后平移以及俯仰旋转运动)

式(2.1)给出了臀部驱动力矩和臀关节角之间的关系,是一种线性控制策略。

从实验结果来看,机械结构的设计是合理的:整个40°扫腿运动大约需要120毫秒,伺服频率为500赫兹。身体的转动惯量与腿的转动惯量之比是14:1。可以看出这个比例很大,这是为了保证腿部在腾空(flight)时自身姿态(orientation)能够被改变,且不会严重干扰身体的姿态。

表2.1给出了机械结构的尺寸和参数。

腿部

腿部是一支伺服气缸,由传感器测量腿长。(这一部分主要介绍气缸的工作方式,不熟悉可以查查液压气动系统传动原理)

机械的操作过程(Operation of the Machine)

机械的操作过程如下:

  • 由人将整个结构装置从一个较低的高度放置到伸出的腿上
  • 控制系统接管,开始通过控制电磁阀(控制进入气缸的气体)维持跳跃运动
  • 刚开始处于站立姿态,气缸上腔电磁阀打开,气体进入,对活塞提供推力使得腿伸出(电磁阀的操作时间决定了推力的大小)
  • 脚离地后,上腔压力释放,逐渐降低至标准大气压

在站立(stance)时增大压力,在腾空时减小压力,可以形成由腿部和身体构成的弹簧-质量/重力-质量振荡系统。

为了维持这样的跳行过程,不得不考虑能量的消耗问题。该运动的能量消耗有两大部分:

  1. 为单腿的非弹性部分提供加速度。假设非弹性部分的质量为 m l m_l ml,系统的其余质量为 m m m,跳行过程的系统总能量为 E E E。根据线性动量守恒,每一次撞击地面或离开地面,都会消耗掉能量:
    m l m l + m E \frac{m_l}{m_l + m}E ml+mmlE
    例如,当非弹性质量占到总质量的 1 18 \frac{1}{18} 181时,每一次跳行循环(一次撞击+一次离开地面)会消耗掉总能量的11%。
  2. 气缸摩擦导致的能量损失,在理想条件下,每次跳行循环大消耗总能量的25%。

图2.4展示了一次完整的跳行操作过程。为了方便研究,定义四个名词以命名跳行循环的四个时刻:

  • 离地(Lift-off)
  • 最高点(Top)
  • 触地(Touchdown)
  • 最低点(Bottom)

运动控制分解三部分(Control of Running Decomposed into Three Parts)

本文研究的平面单腿机器人控制系统将跳跃、前进速度和身体姿态作为三个独立的控制问题:

  • 通过调整腿部推力,激励跳行运动并调整振幅
  • 在站立姿态时,通过将腿前伸到某一特定位置以提供加速度,稳定前行速度
  • 通过对臀部(hip)的伺服控制,时身体在站立时保持直立状态

以上三部分的控制工作由一个有限状态机(Finite state machine)进行控制。这样,单腿的运动控制就变成了一个弱耦合问题。

跳行高度的控制

就像之前所说,单腿的跳行可以类比于弹球,是一种被动的振动,运动参数取决于腿的弹性、机体的质量以及重力。

因此,从理论上将,如果机械参数已知,如人体质量、腿部弹性、预期损失,就可以计算出机体跳到指定高度所需要的推力。这种方法将会在第六章的计算机仿真中体现。

在这里我们采用一种更简单的方法。即让操作员不断改变腿部的推力,观察稳定时的跳行高度,以选择合适的推力参数。实验参数如图2.6。

运动位置-速度相位图如图2.7。图中,当腿部离地后,系统受重力,轨迹为抛物线;腿部触地后,是弹簧-质量系统,相位曲线近似简谐(harmonic)运动。但由于弹簧的非线性,曲线存在着轻微的偏差。

状态机对跳行循环的跟踪(A State Machine Track the Hopping Cycle)

跳行循环是由状态机进行同步控制的,当系统达到某个临界状态时(如最高点),自动执行下一个控制操作。图2.8和表2.2展示了跳行循环控制的流程和更多细节。

前行速度控制

机器人的足部在腾空结束后触地的位置直接影响了后续站立状态下的加速度。就像倒立摆底端相对于质心的位置决定了倾覆力矩(tipping moments)一样。另外,前行速度、垂直速度和腿部的轴力也对加速度有影响。

控制系统通过在每次着陆前为足部选择一个适当前伸的位置来操纵控制加速度,进而控制前进的速度。由于腿与身体相连,所以控制系统可以在腾空过程中或者着陆时,随时确定脚部与身体的相对位置。一旦足部就位并开始站立过程,控制系统就不再采取进一步的动——由身体、腿和地面组成的机械系统动力学决定接下来的运动。

在很多情况下,净前行加速度,也就是触地时与离地时的速度之差 Δ x ˙ = x l o ˙ − x t d ˙ \Delta \dot{x} = \dot{x_{lo}} - \dot{x_{td}} Δx˙=xlo˙xtd˙ 是一个关于脚部触地时前伸位置的线性函数,它是关于整个站立阶段的加速度之和,单位为m/s/hop。而在腾空阶段,前行加速度近似为0,因此通过站立阶段的加速度就可以控制速度了。

对每一个前行速度,都存在一个特定的脚部位置,使得净前行加速度为0,我们称之为中性点(neutral point),用 x f 0 x_{f0} xf0表示。对原地跳跃,中性点就在身体的正下方;而对于前行跳行,中性点在前行方向上。前行越快,中性点离身体越远,如图2.9所示。

对称和非对称

当足部落在中性点上时,身体的质心会以对称运动的形式越过中心点,可以用关于时间的奇偶函数来描述这种运动,如图2.10所示。在不考虑损失和推力的情况下,无论是运动轨迹、速度变化还是力的作用情况,都关于中间时刻对称。

当然,如果足部没有落到中心点,这种对称性质就不存在了,如图2.11所示。如果足部落在中性点前面,前进速度就会减小(净前行加速度为负),否则就会增加,如图2.9所示。图2.12展示了不同落足点下的运动轨迹。

一种关于足部位置的算法

为了准确控制前行速度,控制系统需要根据机器人的当前状态以及期望的行为计算出足部前伸到的位置(以决定落足点)。一种方法是求解系统的动力学方程,得到系统状态变量关于时间的函数。根据这些解可以反推出足部位置与期望行为的函数关系。然而,机械系统微分方程解析解的求解是十分困难的,很多时候甚至并不存在。足部前伸位置关于净前行加速度的封闭形式解析解就是未知的。

另一种方法是对足够巨大的情形进行数值拟合,将结果制成表格,得到近似解。我们将在第七章中对一条单腿进行了这种研究,可以得到较好的效果

第三种方法,也就是我们本节所采用的方法,是使用一种封闭形式的近似解。我们的控制系统使用一种较为粗糙的方法估计足部需要前伸位置的近似值。这种方法也是相对有效的。

在实际操作时,为了估计所需前伸位置,我们考虑了两个因素:使用测量的前行速度(measured foward speed)来估计中性点的位置;使用前行速度的误差来计算所需的落足点与中性点的位置偏差(当实际前行速度与期望前行速度不一致时,需要调整落足点的为了来获得加\减速)

为了估计中性点的位置,控制系统会估算出,当下一次落地状态时系统重心通过的轨迹,称之为CG轨迹(CG-print)。从图2.10可以看出,CG轨迹的中点就是中性点。CG轨迹的长度约为前行速度与落地状态持续时间的乘积 x ˙ T s \dot{x}T_s x˙Ts ,因此,只要在腾空阶段使足部相对于身体位置伸出该长度的一半,就可以使足部落在中性点上,公式2.2如下:

x f Δ = k x ˙ ( x ˙ − x ˙ d ) x_{f \Delta}=k_{\dot{x}}\left(\dot{x}-\dot{x}_{d}\right) xfΔ=kx˙(x˙x˙d)

由于弹簧质量系统的振动周期与振幅无关,因此对于给定刚度的腿,落地姿态的持续时间几乎是恒定的。控制系统使用前一个姿态阶段的持续时间作为下一个姿态阶段的预期持续时间。

而期望前行速度与实际前行速度之间的误差,可以用来计算所需落足点与中性点的偏差,以调整前行速度,公式2.3如下:
x f 0 = x ˙ T s 2 x_{f 0}=\frac{\dot{x} T_{s}}{2} xf0=2x˙Ts

将公式2.2和公式2.3合并可以得到落足点算法(the algorithm for placing the foot):
x f = x ˙ T s 2 + k x ˙ ( x ˙ − x ˙ d ) x_{f}=\frac{\dot{x} T_{s}}{2}+k_{\dot{x}}\left(\dot{x}-\dot{x}_{d}\right) xf=2x˙Ts+kx˙(x˙x˙d)

每当控制系统计算 x f x_{f} xf时,运动学算法就会找出所需的臀部转角(见图2.5):
γ d = ϕ − arcsin ⁡ ( x ˙ T s 2 r + k x ˙ ( x ˙ − x ˙ d ) r ) \gamma_{d}=\phi-\arcsin \left(\frac{\dot{x} T_{s}}{2 r}+\frac{k_{\dot{x}}\left(\dot{x}-\dot{x}_{d}\right)}{r}\right) γd=ϕarcsin(2rx˙Ts+rkx˙(x˙x˙d))

因此,本章的算法可以概括为:通过调整足部相对于身体的位置,来控制落足点的位置,进而决定净跳行加速度,进而决定跳行速度。

控制身体姿态

只有当单腿在站立姿态(触地以后,离地以前)阶段,才能够通过施加臀部力矩的方法控制身体的姿态。臀部力矩的伺服公式2.6如下:

τ = − k p ( ϕ − ϕ d ) − k v ( ϕ ˙ ) \tau=-k_{p}\left(\phi-\phi_{d}\right)-k_{v}(\dot{\phi}) τ=kp(ϕϕd)kv(ϕ˙)

其中 ϕ \phi ϕ 表示身体的螺旋角(pitch angle)。

从表2.2可以看出,单腿在触地后和离地前的短暂时间内,还用两个名为“加载”(LOADING)和“卸载”(UNLOADING)的阶段,这一个阶段要尽量避免进行过快的姿态调整,以保证身体姿态的稳定:由于调整力矩是由地面静摩擦力提供的,当单腿刚刚触地和快要离地时,单腿与地面的压力很小,导致地面的最大静摩擦力很小。此时如果进行很大的调整姿态力矩加载,就会导致打滑。另外,在刚刚腾空时,也有一个“规避”(ESCAPE)阶段,这一阶段也应避免过快进行姿态调整,否则会导致足部与地面的碰撞。

跳行实验

(原书列举了一些实验结果和图表)实验结果表明,提出的算法具有良好的控制效果,能够达到先前设计的控制目标:

  • 单腿能够保持稳定的跳跃高度,在气缸推力发生改变后能够在几个周期内达到新的平衡
  • 单腿能够保持稳定的前行速度,运行速度最大可达1.2m/s,调速±0.25m/s
  • 能够通过跳跃躲避小型障碍物

总结

本章中,提出了一种平面型的单腿跳行机构。

将该机构的控制任务分解为三部分,并分别提出解决方案如下:

  • 跳行(Hopping)控制:
  1. 在站立姿态阶段给予一定时间的推力
  2. 在腾空阶段将气压降到一定值
  • 前行速度(Forward Speed)控制:
  1. 选择落足位置: x f = x ˙ T s 2 + k x ˙ ( x ˙ − x ˙ d ) x_{f}=\frac{\dot{x} T_{s}}{2}+k_{\dot{x}}\left(\dot{x}-\dot{x}_{d}\right) xf=2x˙Ts+kx˙(x˙x˙d)
  2. 转换为臀部转角: γ d = ϕ − arcsin ⁡ ( x f r ) \gamma_{d}=\phi-\arcsin \left(\frac{x_{f}}{r}\right) γd=ϕarcsin(rxf)
  3. 伺服驱动臀部转角: τ = − k p ( γ − γ d ) − k v ( γ ˙ ) \tau=-k_{p}\left(\gamma-\gamma_{d}\right)-k_{v}(\dot{\gamma}) τ=kp(γγd)kv(γ˙)
  • 身体姿态(Body Attitude)控制:
  1. 伺服驱动身体转角: τ = − k p ( ϕ − ϕ d ) − k v ( ϕ ˙ ) \tau=-k_{p}\left(\phi-\phi_{d}\right)-k_{v}(\dot{\phi}) τ=kp(ϕϕd)kv(ϕ˙)
  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值