本文仅供学习使用
本文结合个人理解体会作者的思路,也从个人科研角度出发,部分翻译参考由:QQ群(2群legged robot that balance)
提供,感谢他们为本文英文版翻译所做的贡献(但有些部分阅读起来仍有困难),若有改进之处欢迎共同讨论!
个人对本章内容理解不是十分透彻,可以跳过
表格方法通过划分系统状态来确定腿行为的定期循环特征变量,将其分为两组:一组在每个周期以固定模式变化;一组每个周期自由变化——多项式曲面用于近似表格数据,用几十项的多项式获得插值。
1. 使用表格进行控制的背景知识
使用精心组织的表格数据的控制算法可为复杂的动态系统提供良好的控制。表格技术很强大,因为它们使用任意复杂的计算结果进行控制,但是实际进行计算的时间代价是离线产生的。
表格控制方法的另一个优点是表格使易于实现简单形式的学习和适应。
表格控制方法的主要问题是表-表的大小随表征动态系统所需的变量和控制输入状态数呈指数增长。
1.1 难点
在原地跳动过程中,脚在每个步上的落足点决定了足式系统如何平衡并影响系统的前进速度。模型的髋部的平衡像一个倒立摆。如果将脚放在左侧,则系统提示并向右加速。如果脚放在右边,系统提示并向左加速。如果将脚直接放置在身体下,系统既不会倾斜也不会加速。
落脚点的位置影响很大,因为落脚点可以在摆动相通过扭动髋部来直接控制脚部相对于身体的位置,落脚点一旦放置就无法移动,落脚点强烈影响平衡的性能。控制任务是找到触地(touchdown)
之前的落脚点,与落足接触地面的时间点,以最大程度地减小起飞(lift-off)
时的状态误差。感兴趣的状态误差包括:前向速度
x
˙
\dot x
x˙,机体角度
ϕ
\phi
ϕ,机体角速度
ϕ
˙
{\dot \phi }
ϕ˙,腿部角度的通过线性伺服调整:
τ
=
−
k
p
(
θ
−
θ
d
)
−
k
v
θ
˙
\tau = - {k_p}(\theta - {\theta _d}) - {k_v}\dot \theta
τ=−kp(θ−θd)−kvθ˙,其中:
k
p
,
k
v
{k_p},{k_v}
kp,kv是反馈增益。
假设在支撑相,机体与腿部夹角为
(
θ
−
ϕ
)
(\theta - \phi )
(θ−ϕ)——根据给定落足点
x
t
d
{x_{td}}
xtd找到
θ
t
d
{\theta _{td}}
θtd来最小化性能指标
P
I
PI
PI:
P
I
=
Q
1
(
x
˙
l
0
−
x
˙
d
)
2
+
Q
2
(
ϕ
l
0
−
ϕ
d
)
2
+
Q
3
(
ϕ
˙
l
0
−
ϕ
˙
d
)
2
PI = {Q_1}{({{\dot x}_{l0}} - {{\dot x}_d})^2} + {Q_2}{({\phi _{l0}} - {\phi _d})^2} + {Q_3}{({{\dot \phi }_{l0}} - {{\dot \phi }_d})^2}
PI=Q1(x˙l0−x˙d)2+Q2(ϕl0−ϕd)2+Q3(ϕ˙l0−ϕ˙d)2,其中:
Q
1
,
Q
2
,
Q
3
{Q_1},{Q_2},{Q_3}
Q1,Q2,Q3为权重。
1.2 表格控制方法
关系
Γ
\Gamma
Γ用于关联起飞和触地状态:
x
l
0
=
Γ
(
x
t
d
)
{x_{l0}} = \Gamma ({x_{td}})
xl0=Γ(xtd),其中:
x
l
0
=
[
x
˙
l
0
,
ϕ
l
0
,
ϕ
˙
l
0
]
,
x
t
d
=
[
x
,
x
˙
,
z
,
z
˙
,
ϕ
,
ϕ
˙
,
w
,
w
˙
,
θ
,
θ
˙
]
{x_{l0}} = [{{\dot x}_{l0}},{\phi _{l0}},{{\dot \phi }_{l0}}],{x_{td}} = [x,\dot x,z,\dot z,\phi ,\dot \phi ,w,\dot w,\theta ,\dot \theta ]
xl0=[x˙l0,ϕl0,ϕ˙l0],xtd=[x,x˙,z,z˙,ϕ,ϕ˙,w,w˙,θ,θ˙]。
通常,系统在姿态期间,即触地和起飞之间的时间段,受到着陆时的状态向量的影响。步态周期的常规性质允许我们将状态变量划分分为两组:从一个步态周期进入下一个、没有进入下一个。我们假设
z
,
z
˙
,
w
,
w
˙
z,\dot z,w,{\dot w}
z,z˙,w,w˙从一个周期到下一个周期沿着相同的轨迹变化,表示为状态变量的子集:
x
l
0
=
Γ
(
x
t
d
′
)
{x_{l0}} = \Gamma ({x_{td}}')
xl0=Γ(xtd′),其中:
x
t
d
′
=
[
x
˙
t
d
,
ϕ
t
d
,
ϕ
˙
t
d
,
θ
t
d
]
{x_{td}}' = [{{\dot x}_{td}},{\phi _{td}},{{\dot \phi }_{td}},{\theta _{td}}]
xtd′=[x˙td,ϕtd,ϕ˙td,θtd]
x
t
d
=
[
x
˙
t
d
,
ϕ
t
d
,
ϕ
˙
t
d
]
{x_{td}} = [{{\dot x}_{td}},{\phi _{td}},{{\dot \phi }_{td}}]
xtd=[x˙td,ϕtd,ϕ˙td]——触地状态向量;
x
t
d
′
=
[
x
˙
t
d
,
ϕ
t
d
,
ϕ
˙
t
d
,
θ
t
d
]
{x_{td}}' = [{{\dot x}_{td}},{\phi _{td}},{{\dot \phi }_{td}},{\theta _{td}}]
xtd′=[x˙td,ϕtd,ϕ˙td,θtd]——扩充状态向量;
x
l
0
=
[
x
˙
l
0
,
ϕ
l
0
,
ϕ
˙
l
0
]
{x_{l0}} = [{{\dot x}_{l0}},{\phi _{l0}},{{\dot \phi }_{l0}}]
xl0=[x˙l0,ϕl0,ϕ˙l0]——起飞状态向量;定义
Λ
\Lambda
Λ域下,每一个向量
x
t
d
′
{x_{td}}'
xtd′都有唯一的
x
l
0
{x_{l0}}
xl0与之对应——
θ
\theta
θ为控制输入,
x
t
d
{x_{td}}
xtd为状态——i个控制输入与n个状态变量(例如前向速度
x
˙
\dot x
x˙,机体角度
ϕ
\phi
ϕ,机体角速度
ϕ
˙
{\dot \phi }
ϕ˙)。
表格数据通过模拟大量运动周期具有系统变化的初始条件。
通过给定 x t d , x d {x_{td}},{x_d} xtd,xd寻找 θ t d {\theta _{td}} θtd来最小化性能指标。这个过程需要 ( n ( M + 1 ) − 1 ) 2 n + ( M − 1 ) ( 7 n + 1 ) (n(M + 1) - 1){2^n} + (M - 1)(7n + 1) (n(M+1)−1)2n+(M−1)(7n+1)次乘法运算。
2. 表格数据的多项式逼近
设A为矩阵,其中每行包含N个状态的值变量和控制输入;令B为包含未来值的矩阵(即起飞)相应行中的状态变量。矩阵A和B形成表的数据结构。给定一个不同序列形式:
[
x
1
α
11
x
2
α
12
x
3
α
13
x
4
α
14
,
.
.
.
,
x
1
α
M
1
x
2
α
M
2
x
3
α
M
3
x
4
α
M
4
]
[{x_1}^{{\alpha _{11}}}{x_2}^{{\alpha _{12}}}{x_3}^{{\alpha _{13}}}{x_4}^{{\alpha _{14}}},...,{x_1}^{{\alpha _{M1}}}{x_2}^{{\alpha _{M2}}}{x_3}^{{\alpha _{M3}}}{x_4}^{{\alpha _{M4}}}]
[x1α11x2α12x3α13x4α14,...,x1αM1x2αM2x3αM3x4αM4]
通过评估这些项来确定M列矩阵C,由A同一行定义的值评估:
C
T
C
X
=
C
T
B
{C^T}CX = {C^T}B
CTCX=CTB是一个线系统,其解X在每一列中都包含系数最小二乘多项式的B列估计相应值
3. 结论
当没有简单的逆描述可用时,或者当这种描述的评估需要大量不可接受的运行时计算时,表格对于非线性动态系统的控制非常有用。我们用两种方法来处理这个问题:
- 利用腿部运动的特殊特征,将系统的状态变量分为两组:一套是以可预测的、刻板的方式变化的,另一套是自由变化的;
- 采用多元多项式来近似表格数据。
解释目前方法中使用表格数据的一种方法是,它们用基于当前状态来预测系统的未来状态