读书笔记: Cartesian Impedance Control of Redundant and Flexible-Joint Robots , Section 4
Section 4 零空间控制
前面讨论的都是6自由度机器人,机器人自由度大于6时,就需要考虑冗余的问题。
正向运动学映射
f
:
Q
→
R
m
f:Q\rightarrow\mathbb{R}^m
f:Q→Rm将位形空间映射为任务空间,其相应的分析雅克比为
J
(
q
)
=
∂
f
(
q
)
∂
q
∈
R
m
×
n
J(q)=\frac{\partial f(q)}{\partial q} \in \mathbb{R}^{m\times n}
J(q)=∂q∂f(q)∈Rm×n
x
=
f
(
q
)
x
˙
=
J
(
q
)
q
˙
x = f(q)\\\dot{x}=J(q)\dot{q}
x=f(q)x˙=J(q)q˙
在冗余的情况下
m
<
n
m<n
m<n,因此末端位姿不能完全反映机器人的位形。
本章只讨论非奇异情况,既雅克比矩阵满秩
r
a
n
k
(
J
(
q
)
)
=
m
rank(J(q))=m
rank(J(q))=m,
同样,假设已经有了动力学模型
M
(
q
)
q
¨
+
C
(
q
,
q
˙
)
q
˙
+
g
(
q
)
=
τ
+
τ
e
x
t
M(q)\ddot{q}+C(q,\dot{q})\dot{q}+g(q) = \tau+\tau_{ext}
M(q)q¨+C(q,q˙)q˙+g(q)=τ+τext
处理冗余的方法是对任务坐标进行扩充,既添加
r
=
n
−
m
r=n-m
r=n−m个辅助变量或者叫零空间坐标。本章主要谈论寻找合适的坐标和动力学的零空间分解。
4.1 计算零空间的基
本节介绍如何计算雅克比 J ( q ) J(q) J(q)的Nullspace的基矩阵 Z ( q ) Z(q) Z(q)。
4.1.1 General Case
只考虑满秩的情况,通过重新排列每一列,
J
(
q
)
J(q)
J(q)可以写成
J
(
q
)
=
[
J
m
(
q
)
J
r
(
q
)
]
J\left( q \right) =\left[ \begin{matrix} J_m\left( q \right)& J_r\left( q \right)\\ \end{matrix} \right]
J(q)=[Jm(q)Jr(q)]
使得
J
m
(
q
)
J_m(q)
Jm(q)是可逆的。
另零空间基矩阵也做相同分割
Z
(
q
)
=
[
Z
m
(
q
)
Z
r
(
q
)
]
Z\left( q \right) =\left[ \begin{matrix} Z_m\left( q \right)& Z_r\left( q \right)\\ \end{matrix} \right]
Z(q)=[Zm(q)Zr(q)]
其中
Z
m
Z_m
Zm和
Z
r
Z_r
Zr都是待定矩阵使得
J
(
q
)
Z
(
q
)
T
=
0
J(q)Z(q)^T=0
J(q)Z(q)T=0,并且Z(q)行满秩。用上面的符号,这个等式可写成
J
m
(
q
)
Z
m
(
q
)
T
+
J
r
(
q
)
Z
r
(
q
)
T
=
0
J_m\left( q \right) Z_m\left( q \right) ^T+J_r\left( q \right) Z_r\left( q \right) ^T=0
Jm(q)Zm(q)T+Jr(q)Zr(q)T=0
一个可行解是
Z
m
(
q
)
T
=
−
J
m
(
q
)
−
1
J
r
(
q
)
Z
r
(
q
)
=
I
Z_m\left( q \right) ^T=-J_m\left( q \right) ^{-1}J_r\left( q \right) \\ Z_r\left( q \right) =I
Zm(q)T=−Jm(q)−1Jr(q)Zr(q)=I
既,零空间基矩阵为
Z
(
q
)
=
[
−
J
m
(
q
)
−
1
J
r
(
q
)
I
]
Z\left( q \right) =\left[ \begin{matrix} -J_m\left( q \right) ^{-1}J_r\left( q \right)& I\\ \end{matrix} \right]
Z(q)=[−Jm(q)−1Jr(q)I]
4.1.2 1D零空间情况
在一维零空间的情况下可以避免计算
J
m
(
q
)
J_m(q)
Jm(q)的逆。在此情况下零空间的基是一个向量
z
(
q
)
=
[
z
1
(
q
)
,
.
.
.
.
.
.
,
z
n
(
q
)
]
z(q)= [z_1(q),......,z_n(q)]
z(q)=[z1(q),......,zn(q)],考虑这个矩阵
J
z
(
q
)
=
(
J
(
q
)
z
(
q
)
)
J_z\left( q \right) =\left( \begin{array}{c} J\left( q \right)\\ z\left( q \right)\\ \end{array} \right)
Jz(q)=(J(q)z(q))
只需找到一个
z
(
q
)
z(q)
z(q)使得矩阵
J
z
(
q
)
J_z(q)
Jz(q)可逆。
推导不困难,直接写结果
z
i
(
q
)
=
(
−
1
)
n
+
i
det
(
J
i
(
q
)
)
z_i\left( q \right) =\left( -1 \right) ^{n+i}\det \left( J_i\left( q \right) \right)
zi(q)=(−1)n+idet(Ji(q))
J
i
(
q
)
∈
R
n
×
n
J_i\left( q \right)\in \mathbb{R}^{n\times n}
Ji(q)∈Rn×n是矩阵
J
(
q
)
J(q)
J(q)去掉第
i
i
i列产生。
4.2 基于投影方法
之前提到的阻抗控制表达式是
τ
c
=
g
(
q
)
+
J
(
q
)
T
F
i
m
p
F
i
m
p
=
Λ
(
x
)
x
¨
d
+
μ
(
x
,
x
˙
)
x
˙
d
−
K
d
x
~
−
D
d
x
~
˙
\tau _c=g\left( q \right) +J\left( q \right) ^TF_{imp} \\ F_{imp}=\varLambda \left( x \right) \ddot{x}_d+\mu \left( x,\dot{x} \right) \dot{x}_d-K_d\tilde{x}-D_d\dot{\tilde{x}}
τc=g(q)+J(q)TFimpFimp=Λ(x)x¨d+μ(x,x˙)x˙d−Kdx~−Ddx~˙
根据叠加原理,添加零空间控制之后可直接写为
τ
=
τ
c
+
τ
n
\tau=\tau_c+\tau_n
τ=τc+τn
首先定义一个关节空间的阻抗控制
τ
0
=
−
D
n
q
˙
−
K
n
(
q
−
q
d
,
0
)
\tau_0=-D_n\dot{q}-K_n(q-q_{d,0})
τ0=−Dnq˙−Kn(q−qd,0)
其中
K
n
K_n
Kn和
D
n
D_n
Dn都是正定对称矩阵,
q
d
,
0
q_{d,0}
qd,0是选定的虚拟稳定点。
q
d
,
0
q_{d,0}
qd,0的选取必须于笛卡尔阻抗控制的给定点一致,既
f
(
q
d
,
0
)
=
x
d
f(q_{d,0})=x_{d}
f(qd,0)=xd。
但是这个控制不能直接加到原本的笛卡尔空间阻抗上,否则会影响原本的阻抗行为。使用一个投影矩阵
τ
n
=
P
(
q
)
τ
0
\tau_n = P(q)\tau_0
τn=P(q)τ0
将其投影到
J
(
q
)
T
J(q)^T
J(q)T的值空间中。接下来介绍集中不同的投影矩阵的选取方法。
- 命题4.1 设
A
\mathcal{A}
A是
n
×
m
n\times m
n×m矩阵
A
A
A的值空间,
A
=
{
y
∈
R
n
∣
∃
x
∈
R
m
,
y
=
A
x
}
\mathcal{A}=\{y\in \mathbb{R}^n|\exists x\in \mathbb{R}^m,y=Ax\}
A={y∈Rn∣∃x∈Rm,y=Ax}。另
G
∈
R
n
×
n
G\in \mathbb{R}^{n\times n}
G∈Rn×n是一个对称正定矩阵,其定义了一个
R
n
\mathbb{R}^n
Rn上的度规。则矩阵
P = A ( A T G A ) − 1 A T G P=A\left( A^TGA \right) ^{-1}A^TG P=A(ATGA)−1ATG
是一个投影矩阵,其将一个 R n \mathbb{R}^n Rn上的元素正交投影到 A \mathcal{A} A上(相对于 G G G)。对应的,投影到正交补空间 A ⊥ \mathcal{A} ^{\bot} A⊥饿投影矩阵是
P c = I − P P_c=I-P Pc=I−P
这里需要额外解释的一点,正交的定义是基于内积的,两个向量内积为0即是正交。而内积的定义主要所谓的度规,例如常用的度规 G = I G=I G=I,因此谈正交性时需要指明度规,既此处的相对于 G G G的正交性实际说的是在度规 G G G的衡量下是正交的。
静态零空间映射
期望的映射矩阵
P
(
q
)
P(q)
P(q)应使得力矩向量
τ
n
=
P
(
q
)
τ
0
\tau_n=P(q)\tau_0
τn=P(q)τ0正交(相对于给定的度规
G
(
q
)
G(q)
G(q)于笛卡尔力矩
τ
c
=
J
(
q
)
T
F
i
m
g
\tau_c=J(q)^TF_{img}
τc=J(q)TFimg,既满足关系
τ
c
T
G
(
q
)
τ
n
\tau_c^TG(q)\tau_n
τcTG(q)τn=0。显然其需要的矩阵等式为
J
(
q
)
G
(
q
)
P
(
q
)
=
0
J(q)G(q)P(q)=0
J(q)G(q)P(q)=0
Z
(
q
)
=
[
z
1
(
q
)
,
.
.
.
.
.
.
,
z
r
(
q
)
]
T
Z(q)=[z_1(q),......,z_r(q)]^T
Z(q)=[z1(q),......,zr(q)]T中的
r
r
r个向量张成了雅克比的零空间。
P
(
q
)
P(q)
P(q)的一个可行的选择是到
G
(
q
)
−
1
Z
(
q
)
T
G(q)^{-1}Z(q)^T
G(q)−1Z(q)T的值空间的映射。
这个结论不太直观,这里只做个检验,假设
P
(
q
)
P(q)
P(q)是到
G
(
q
)
−
1
Z
(
q
)
T
G(q)^{-1}Z(q)^T
G(q)−1Z(q)T的值空间的映射,下面用
P
x
⟷
G
−
1
Z
T
x
⇒
G
P
x
⟷
Z
T
x
⇒
G
P
x
⟷
[
z
1
,
.
.
.
.
.
.
,
z
r
]
x
⇒
J
G
P
x
⟷
[
J
z
1
,
.
.
.
.
.
.
,
J
z
r
]
x
⇒
J
G
P
x
=
0
Px\longleftrightarrow G^{-1}Z^Tx \\ \Rightarrow GPx\longleftrightarrow Z^Tx \\ \Rightarrow GPx\longleftrightarrow \left[ z_1,......,z_r \right] x \\ \Rightarrow JGPx\longleftrightarrow \left[ Jz_1,......,Jz_r \right] x \\ \Rightarrow JGPx=0
Px⟷G−1ZTx⇒GPx⟷ZTx⇒GPx⟷[z1,......,zr]x⇒JGPx⟷[Jz1,......,Jzr]x⇒JGPx=0
因为对任意
x
x
x都成立,因此
J
G
P
=
0
JGP=0
JGP=0
利用命题4.1的结论,可得到投影矩阵(为了公式简介,省略自变量
q
q
q)
P
1
(
q
)
=
G
−
1
Z
T
(
Z
G
−
1
Z
T
)
−
1
Z
P_1(q)=G^{-1}Z^T(ZG^{-1}Z^T)^{-1}Z
P1(q)=G−1ZT(ZG−1ZT)−1Z
这里
P
1
(
q
)
P_1(q)
P1(q)仅仅依赖于运动学,动力学部分没有考虑进来,因此度规
G
G
G可以任意选择,如果选择欧式度规并且
Z
(
q
)
Z(q)
Z(q)中的
z
i
(
q
)
z_i(q)
zi(q)是正交基底,则这个映射简化为
P
1
(
q
)
=
Z
(
q
)
T
Z
(
q
)
P_1(q)=Z(q)^TZ(q)
P1(q)=Z(q)TZ(q)
动力学一致性映射
在只考虑运动学的情况下才可以任意选择度规,在有动力学的情况下需要考虑笛卡尔空间的加速度和关节转矩之间的关系。给上面的动力学模型左右同乘
J
(
q
)
M
(
q
)
−
1
J(q)M(q)^{-1}
J(q)M(q)−1,同时将
x
¨
=
J
(
q
)
q
¨
+
J
˙
(
q
)
q
˙
\ddot{x}=J(q)\ddot{q}+\dot{J}(q)\dot{q}
x¨=J(q)q¨+J˙(q)q˙代入,得到
x
¨
−
J
˙
(
q
)
q
˙
+
J
(
q
)
M
(
q
)
−
1
(
C
(
q
,
q
˙
)
q
˙
+
g
(
q
)
)
=
J
(
q
)
M
(
q
)
−
1
(
τ
+
τ
e
x
t
)
\ddot{x}-\dot{J}(q)\dot{q}+J(q)M(q)^{-1}\left( C(q,\dot{q})\dot{q}+g(q) \right) =J(q)M(q)^{-1}\left( \tau +\tau _{ext} \right)
x¨−J˙(q)q˙+J(q)M(q)−1(C(q,q˙)q˙+g(q))=J(q)M(q)−1(τ+τext)
从这个表达式可以发现,关节力矩会被
J
(
q
)
M
(
q
)
−
1
J(q)M(q)^{-1}
J(q)M(q)−1投影到末端上,这不是我们希望的,这个称作动力学一致性(dynamically consistent),既需要满足
J
(
q
)
M
(
q
)
−
1
P
(
q
)
=
0
J(q)M(q)^{-1}P(q)=0
J(q)M(q)−1P(q)=0
根据前面讨论,
P
1
(
q
)
P_1(q)
P1(q)满足
J
(
q
)
G
(
q
)
P
1
(
q
)
=
0
J(q)G(q)P_1(q)=0
J(q)G(q)P1(q)=0,因此直接选
G
(
q
)
=
M
(
q
)
−
1
G(q)=M(q)^{-1}
G(q)=M(q)−1,这个度规称作自然度规,得到映射(省略自变量
q
q
q)
P
3
(
q
)
=
M
Z
T
(
Z
M
Z
T
)
−
1
Z
P_3(q)=MZ^T(ZMZ^T)^{-1}Z
P3(q)=MZT(ZMZT)−1Z
另一个映射方法
另一个满足动力学一致性的零空间映射来源于零空间与值空间的关系
前面走的是上边这条路,但是我们知道
J
J
J的零空间是
J
T
J^T
JT值空间的正交补。因此可以使用命题4.1的后一半来实现映射,有
P
4
=
I
−
J
T
(
J
M
−
1
J
T
)
−
1
J
M
−
1
P_4=I-J^T\left( JM^{-1}J^T \right) ^{-1}JM^{-1}
P4=I−JT(JM−1JT)−1JM−1
这种方法避免了计算零空间的基
Z
(
q
)
Z(q)
Z(q),但是需要计算惯量矩阵
M
M
M的逆,因此其计算复杂度更高,一般不用于实时环境下,而
P
3
P_3
P3中
Z
M
Z
T
ZMZ^T
ZMZT是个
r
×
r
r\times r
r×r的逆矩阵计算。并且不难证明
P
3
=
P
4
P_3=P_4
P3=P4。
4.3 任务空间扩充方法
这种方法存在耦合问题,因此不常用,仅简单记录一下。
任务空间扩充方法直接扩展任务空间的坐标
x
=
f
(
q
)
x=f(q)
x=f(q)。如果能找到一组合适的坐标
n
(
q
)
n(q)
n(q)使得
y
=
[
x
n
]
y
˙
=
J
c
(
q
)
q
˙
=
[
J
(
q
)
∂
n
(
q
)
∂
q
]
q
˙
y=\left[ \begin{array}{c} x\\ n\\ \end{array} \right] \\ \dot{y}=J_c\left( q \right) \dot{q}=\left[ \begin{array}{c} J\left( q \right)\\ \frac{\partial n\left( q \right)}{\partial q}\\ \end{array} \right] \dot{q}
y=[xn]y˙=Jc(q)q˙=[J(q)∂q∂n(q)]q˙
中的雅克比矩阵
J
c
(
q
)
J_c(q)
Jc(q)可逆,冗余控制问题就可以简化为非冗余情况。但是
n
(
q
)
n(q)
n(q)的选择是个难题,因为一般情况下
J
c
(
q
)
J_c(q)
Jc(q)相比于
J
(
q
)
J(q)
J(q)有更多的奇异点。
4.4 关节空间分解方法
关节空间分解方法不是在人物空间中扩充坐标
x
x
x,而是扩充任务速度
x
˙
\dot{x}
x˙。
[
x
˙
v
n
]
=
J
N
(
q
)
q
˙
=
[
J
(
q
)
N
(
q
)
]
q
˙
\left[ \begin{array}{c} \dot{x}\\ v_n\\ \end{array} \right] =J_N\left( q \right) \dot{q}=\left[ \begin{array}{c} J\left( q \right)\\ N\left( q \right)\\ \end{array} \right] \dot{q}
[x˙vn]=JN(q)q˙=[J(q)N(q)]q˙
同样,暂时不进行更加详细的研究