读书笔记: Cartesian Impedance Control, Section 2
Cartesian Impedance Control of Redundant and Flexible-Joint Robots 读书笔记
Section 2 柔性关节机器人建模
只考虑开链机器人的情况,机器人柔性分两部分:分布参数弹性是各连杆形变导致的柔性,集中参数部分是由齿轮导致的弹性。本书只讨论后者。
2.1 运动学
本书采用的旋量是
v
v
v在上,
ω
\omega
ω在下,既与《A Mathematical Introduction to Robotic Manipulation》保持一致。
V
b
=
(
b
v
s
b
b
ω
s
b
)
V^b=\left( \begin{array}{c} _bv_{sb}\\ _b\omega _{sb}\\ \end{array} \right)
Vb=(bvsbbωsb)
b
ω
s
b
_b\omega _{sb}
bωsb的左下标
b
b
b表示该向量表达在
B
B
B系中,右下标
s
b
sb
sb表示这是
ω
s
b
\omega_{sb}
ωsb
除此之外运动学部分没有啥需要特别注意的。
2.2 柔性关节机器人动力学模型
动力学模型有两个:完整模型和简化模型。简化模型假设转子的动能仅有其旋转产生。
2.2.1 Complete Model的假设
- 假设1:电机转子是旋转对称的刚体,并且对称中心与运动的旋转中心一直
- 假设2:电路部分的动态特性(内环电流环)足够快,相较于机械特性而言可以忽略
这两条假设是说,电机可以看成一个理想的转矩源,
i
i
i关节电机的转矩为
τ
m
o
t
o
r
,
i
\tau_{motor,i}
τmotor,i
考虑传动比
N
i
N_i
Ni后,
τ
m
,
i
=
N
i
τ
m
o
t
o
r
,
i
θ
i
=
1
N
i
θ
m
o
t
o
r
,
i
\tau_{m,i} = N_i\tau_{motor,i} \ \ \ \ \ \theta_{i} = \frac{1}{N_i}\theta_{motor,i}
τm,i=Niτmotor,i θi=Ni1θmotor,i
- 假设3:齿轮的弹性可用线性弹簧表示,弹簧位于转子与下一个link之间的
q i q_i qi是关节角,及下一个link与本link之间的夹角, θ i \theta_i θi是经过传动比折算之后的电机角。因此弹簧力是 τ i = K i ( θ i − q i ) \tau_i=K_i(\theta_i-q_i) τi=Ki(θi−qi)这个关节的弹性势能是 V k , i = 1 2 K i ( θ i − q i ) 2 V_{k,i}=\frac{1}{2}K_i(\theta_i-q_i)^2 Vk,i=21Ki(θi−qi)2结合实际, θ i \theta_i θi是由在电机轴上测出来的角(一般是增量编码器), q i q_i qi是输出端测出来的角度(一般是绝对值编码器)。
2.2.2 Complete Model推导
对于有
n
n
n个关节的开链机器人
坐标系这么建
对关节
i
i
i,
L
i
L_i
Li放在与之相连的Link_i的质心,
R
i
R_i
Ri放在前一个link的转子处,z轴与旋转方向一致。
因此,Links的动能是
T
l
(
q
,
q
˙
)
=
1
2
∑
i
=
1
n
(
V
l
,
i
b
)
T
M
l
,
i
V
l
,
i
b
T_l\left( q,\dot{q} \right) =\frac{1}{2}\sum_{i=1}^n{\left( V_{l,i}^{b} \right) ^T\mathcal{M} _{l,i}V_{l,i}^{b}}
Tl(q,q˙)=21i=1∑n(Vl,ib)TMl,iVl,ib
构造惯性矩阵
M
l
(
q
)
=
∑
i
=
1
n
J
l
,
i
b
(
q
)
T
M
l
,
i
J
l
,
i
b
(
q
)
M_l\left( q \right) =\sum_{i=1}^n{J_{l,i}^{b}\left( q \right) ^T\mathcal{M} _{l,i}J_{l,i}^{b}\left( q \right)}
Ml(q)=i=1∑nJl,ib(q)TMl,iJl,ib(q)
于是有
T
l
(
q
,
q
˙
)
=
1
2
q
˙
T
M
l
(
q
)
q
˙
T_l\left( q,\dot{q} \right) =\frac{1}{2}\dot{q}^TM_l\left( q \right) \dot{q}
Tl(q,q˙)=21q˙TMl(q)q˙
然后计算转子动能:
电机的定子固连在前一级link上,转子在相对于定子旋转,旋转角度是
θ
i
\theta_i
θi,因此计算转子的6维速度旋量时需要在
R
i
R_i
Ri对应的虚度旋量上进行叠加,有
V
r
,
i
b
=
J
r
,
i
b
(
q
)
q
˙
+
(
0
0
0
0
0
1
)
θ
˙
i
V_{r,i}^{b}=J_{r,i}^{b}\left( q \right) \dot{q}+\left( \begin{array}{c} 0\\ 0\\ 0\\ 0\\ 0\\ 1\\ \end{array} \right) \dot{\theta}_i
Vr,ib=Jr,ib(q)q˙+⎝
⎛000001⎠
⎞θ˙i
这里需要注意的是这个计算是在
R
i
R_i
Ri系里进行的,而不是
L
i
L_i
Li系,所以转子动能是
T
r
(
q
,
q
˙
,
θ
˙
)
=
1
2
∑
i
=
1
n
(
V
r
,
i
b
)
T
M
r
,
i
V
r
,
i
b
T_r\left( q,\dot{q},\dot{\theta} \right) =\frac{1}{2}\sum_{i=1}^n{\left( V_{r,i}^{b} \right) ^T\mathcal{M} _{r,i}V_{r,i}^{b}}
Tr(q,q˙,θ˙)=21i=1∑n(Vr,ib)TMr,iVr,ib
犹豫对称性假设,在
R
i
R_i
Ri系表达的惯性张量应为
I
r
,
i
=
d
i
a
g
{
A
i
,
B
i
,
C
i
}
I_{r,i}=diag\{A_i,B_i,C_i\}
Ir,i=diag{Ai,Bi,Ci},整理后有
T
r
(
q
,
q
˙
,
θ
˙
)
=
1
2
(
q
˙
θ
˙
)
T
(
M
r
(
q
)
S
(
q
)
S
(
q
)
T
B
)
(
q
˙
θ
˙
)
T_r\left( q,\dot{q},\dot{\theta} \right) =\frac{1}{2}\left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right) ^T\left( \begin{matrix} M_r\left( q \right)& S\left( q \right)\\ S\left( q \right) ^T& B\\ \end{matrix} \right) \left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right)
Tr(q,q˙,θ˙)=21(q˙θ˙)T(Mr(q)S(q)TS(q)B)(q˙θ˙)
其中,
M
r
(
q
)
=
∑
i
=
1
n
J
r
,
i
b
(
q
)
T
M
r
,
i
J
r
,
i
b
(
q
)
M_r\left( q \right) =\sum_{i=1}^n{J_{r,i}^{b}\left( q \right) ^T\mathcal{M} _{r,i}J_{r,i}^{b}\left( q \right)}
Mr(q)=i=1∑nJr,ib(q)TMr,iJr,ib(q)
S
(
q
)
=
[
s
1
(
q
)
.
.
.
s
2
(
q
)
]
S\left( q \right) =\left[ s_1\left( q \right) \ .\ .\ .\ s_2\left( q \right) \right]
S(q)=[s1(q) . . . s2(q)]
s
i
(
q
)
=
J
r
,
i
b
(
q
)
T
(
0
0
0
0
0
B
i
)
s_i\left( q \right) =J_{r,i}^{b}\left( q \right) ^T\left( \begin{array}{c} 0\\ 0\\ 0\\ 0\\ 0\\ B_i\\ \end{array} \right)
si(q)=Jr,ib(q)T⎝
⎛00000Bi⎠
⎞
B
=
d
i
a
g
(
B
i
)
B=\mathrm{diag}\left( B_i \right)
B=diag(Bi)
两部分动能之和是系统动能
T
(
q
,
q
˙
,
θ
˙
)
=
1
2
(
q
˙
θ
˙
)
T
[
M
l
(
q
)
+
M
r
(
q
)
S
(
q
)
S
(
q
)
T
B
]
(
q
˙
θ
˙
)
T\left( q,\dot{q},\dot{\theta} \right) =\frac{1}{2}\left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right) ^T\left[ \begin{matrix} M_l\left( q \right) +M_r\left( q \right)& S\left( q \right)\\ S\left( q \right) ^T& B\\ \end{matrix} \right] \left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right)
T(q,q˙,θ˙)=21(q˙θ˙)T[Ml(q)+Mr(q)S(q)TS(q)B](q˙θ˙)
再计算势能部分,各个关节的弹性势能有
V
k
(
q
,
θ
)
=
1
2
(
θ
−
q
)
T
K
(
θ
−
q
)
V_k\left( q,\theta \right) =\frac{1}{2}\left( \theta -q \right) ^TK\left( \theta -q \right)
Vk(q,θ)=21(θ−q)TK(θ−q)
K
=
d
i
a
g
(
K
i
)
K=diag(K_i)
K=diag(Ki)是个对角矩阵
对重力势能部分,设
m
l
,
i
m_{l,i}
ml,i是link_i的质量,
m
r
,
i
m_{r,i}
mr,i是转子的质量。
e
g
e_g
eg是重力的方向向量,
g
g
g是重力加速度,于是有
V
g
(
q
)
=
−
g
e
g
T
∑
i
=
1
n
(
m
l
,
i
p
s
l
,
i
(
q
)
+
m
r
,
i
p
s
r
,
i
(
q
)
)
V_g\left( q \right) =-ge_{g}^{T}\sum_{i=1}^n{\left( m_{l,i}p_{sl,i}\left( q \right) +m_{r,i}p_{sr,i}\left( q \right) \right)}
Vg(q)=−gegTi=1∑n(ml,ipsl,i(q)+mr,ipsr,i(q))
所以i,势能是
V
p
o
t
(
q
,
θ
)
=
V
g
(
q
)
+
1
2
(
θ
−
q
)
T
K
(
θ
−
q
)
V_{pot}\left( q,\theta \right) =V_g\left( q \right) +\frac{1}{2}\left( \theta -q \right) ^TK\left( \theta -q \right)
Vpot(q,θ)=Vg(q)+21(θ−q)TK(θ−q)
把
q
q
q和
θ
\theta
θ摞起来构成广义坐标
q
^
=
(
q
θ
)
\hat{q}=\left( \begin{array}{c} q\\ \theta\\ \end{array} \right)
q^=(qθ)
拉格朗日函数
L
(
q
^
,
q
^
˙
)
=
T
−
V
p
o
t
L\left( \hat{q},\dot{\hat{q}} \right) =T-V_{pot}
L(q^,q^˙)=T−Vpot
带入拉格朗日方程
d
d
t
(
∂
L
∂
q
^
˙
)
−
∂
L
∂
q
^
=
Q
\frac{d}{dt}\left( \frac{\partial L}{\partial \dot{\hat{q}}} \right) -\frac{\partial L}{\partial \hat{q}}=Q
dtd(∂q^˙∂L)−∂q^∂L=Q
得到
H
(
q
)
(
q
¨
θ
¨
)
+
Γ
(
q
,
q
˙
)
(
q
˙
θ
˙
)
+
(
g
(
q
)
−
K
(
θ
−
q
)
K
(
θ
−
q
)
)
=
(
τ
e
x
t
τ
m
)
H\left( q \right) \left( \begin{array}{c} \ddot{q}\\ \ddot{\theta}\\ \end{array} \right) +\varGamma \left( q,\dot{q} \right) \left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right) +\left( \begin{array}{c} g\left( q \right) -K\left( \theta -q \right)\\ K\left( \theta -q \right)\\ \end{array} \right) =\left( \begin{array}{c} \tau _{ext}\\ \tau _m\\ \end{array} \right)
H(q)(q¨θ¨)+Γ(q,q˙)(q˙θ˙)+(g(q)−K(θ−q)K(θ−q))=(τextτm)
其中
H
(
q
)
H(q)
H(q)是完整的惯性矩阵,
H
(
q
)
q
^
¨
H(q)\ddot{\hat{q}}
H(q)q^¨是加速度产生的惯性力
H
(
q
)
=
[
M
l
(
q
)
+
M
r
(
q
)
S
(
q
)
S
(
q
)
T
B
]
H\left( q \right) =\left[ \begin{matrix} M_l\left( q \right) +M_r\left( q \right)& S\left( q \right)\\ S\left( q \right) ^T& B\\ \end{matrix} \right]
H(q)=[Ml(q)+Mr(q)S(q)TS(q)B]
g
(
q
)
是重力矩
g(q)是重力矩
g(q)是重力矩
g
(
q
)
=
(
∂
V
g
(
q
)
∂
q
)
T
g\left( q \right) =\left( \frac{\partial V_g\left( q \right)}{\partial q} \right) ^T
g(q)=(∂q∂Vg(q))T
Γ
(
q
,
q
˙
)
q
^
˙
\varGamma \left( q,\dot{q} \right) \dot{\hat{q}}
Γ(q,q˙)q^˙包含了科里奥利力和离心力,
Γ
(
q
,
q
˙
)
\varGamma \left( q,\dot{q} \right)
Γ(q,q˙)比较复杂,表达式是
Γ
i
j
(
q
,
q
˙
)
=
∑
k
=
1
2
n
Γ
i
j
k
(
q
)
q
^
˙
k
Γ
i
j
k
(
q
)
=
1
2
(
∂
H
i
j
(
q
)
∂
q
^
k
+
∂
H
i
k
(
q
)
∂
q
^
j
−
∂
H
k
j
(
q
)
∂
q
^
i
)
\varGamma _{ij}\left( q,\dot{q} \right) =\sum_{k=1}^{2n}{\varGamma _{ijk}\left( q \right) \dot{\hat{q}}_k} \\ \varGamma _{ijk}\left( q \right) =\frac{1}{2}\left( \frac{\partial H_{ij}\left( q \right)}{\partial \hat{q}_k}+\frac{\partial H_{ik}\left( q \right)}{\partial \hat{q}_j}-\frac{\partial H_{kj}\left( q \right)}{\partial \hat{q}_i} \right)
Γij(q,q˙)=k=1∑2nΓijk(q)q^˙kΓijk(q)=21(∂q^k∂Hij(q)+∂q^j∂Hik(q)−∂q^i∂Hkj(q))
上方红色的方程就是所谓的柔性关节机器人的完整动力学模型(complete model of a flexible joint robot)。如果把其中
S
(
q
)
S(q)
S(q)部分忽略,就是接下来的简化动力学模型。
2.2.3 Reduced Model
简化模型的假设:
- 假设4 : 电机转子的动能只包含其旋转产生的转动动能,而忽略因其他关节运动所产生的的动能。换言之,认为电机转子没有质量只有转动惯量。这个假设对应的物理事实是在减速比作用下,电机转子的旋转速度一般比较高,因此转动动能占主导地位,另外很多机器人设计通过线驱把电机给后置到基座上,
在这个假设下,转子动能简化为
T
r
(
q
,
q
˙
,
θ
˙
)
=
1
2
(
q
˙
θ
˙
)
T
(
M
ˉ
r
(
q
)
0
0
B
)
(
q
˙
θ
˙
)
T_r\left( q,\dot{q},\dot{\theta} \right) =\frac{1}{2}\left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right) ^T\left( \begin{matrix} \bar{M}_r\left( q \right)& 0\\ 0& B\\ \end{matrix} \right) \left( \begin{array}{c} \dot{q}\\ \dot{\theta}\\ \end{array} \right)
Tr(q,q˙,θ˙)=21(q˙θ˙)T(Mˉr(q)00B)(q˙θ˙)
M
ˉ
r
(
q
)
\bar{M}_r\left( q \right)
Mˉr(q)部分也发生变化,简化后为
M
ˉ
r
(
q
)
=
∑
i
=
1
n
m
r
,
i
J
ˉ
r
,
i
b
(
q
)
T
J
ˉ
r
,
i
b
(
q
)
J
ˉ
r
,
i
b
(
q
)
=
[
I
3
×
3
0
3
×
3
]
J
r
,
i
b
(
q
)
\bar{M}_r\left( q \right) =\sum_{i=1}^n{m_{r,i}\bar{J}_{r,i}^{b}\left( q \right) ^T\bar{J}_{r,i}^{b}\left( q \right)} \\ \bar{J}_{r,i}^{b}\left( q \right) =\left[ \begin{matrix} I_{3\times 3}& 0_{3\times 3}\\ \end{matrix} \right] J_{r,i}^{b}\left( q \right)
Mˉr(q)=i=1∑nmr,iJˉr,ib(q)TJˉr,ib(q)Jˉr,ib(q)=[I3×303×3]Jr,ib(q)
简化之后的动力学模型为
M
(
q
)
q
¨
+
C
(
q
,
q
˙
)
q
˙
+
g
(
q
)
=
K
(
θ
−
q
)
+
τ
e
x
t
B
θ
¨
+
K
(
θ
−
q
)
=
τ
m
M\left( q \right) \ddot{q}+C\left( q,\dot{q} \right) \dot{q}+g\left( q \right) =K\left( \theta -q \right) +\tau _{ext} \\ B\ddot{\theta}+K\left( \theta -q \right) =\tau _m
M(q)q¨+C(q,q˙)q˙+g(q)=K(θ−q)+τextBθ¨+K(θ−q)=τm
其中
M
(
q
)
=
M
l
(
q
)
+
M
ˉ
r
(
q
)
M(q)=M_l(q)+\bar{M}_r(q)
M(q)=Ml(q)+Mˉr(q),
C
(
q
,
q
˙
)
C\left( q,\dot{q} \right)
C(q,q˙)是与
M
M
M对应的科里奥利矩阵。
2.2.4 动力学模型的性质
- 欠驱动:模型状态变量数量是 2 n 2n 2n但是只有 n n n个控制输入(电机力矩)。
- 微分平坦:完整模型和简化模型都是微分平坦的,简化模型可以通过静态状态反馈来线性化参见[经典论文Spo87b],完整模型可以通过动态状态反馈线性化[经典论文DLL98]
- 惯性矩阵 M ( q ) M(q) M(q)是对称正定
- M ˙ − 2 C \dot{M}-2C M˙−2C矩阵反对称
对包含平移关节的机器人,
Q
p
Q^p
Qp是考虑各个关节限位之后的位形空间
Q
p
=
{
q
∈
Q
∣
q
i
,
m
i
n
≤
q
i
≤
q
i
,
m
a
x
}
Q^p=\{q\in Q | q_{i,min} \le q_i \le q_{i,max}\}
Qp={q∈Q∣qi,min≤qi≤qi,max}
对于后续的阻抗控制设计还有以下重要性质
- 在 Q p Q^p Qp内, λ i ( M ( q ) ) \lambda_i(M(q)) λi(M(q))有界 0 < λ m , M ≤ λ i ( M ( q ) ) ≤ λ M , M < ∞ 0<\lambda _{m,M}\le \lambda _i(M(q))\le \lambda _{M,M}<\infty 0<λm,M≤λi(M(q))≤λM,M<∞
- 重力矩 g ( q ) = ( ∂ V g ( q ) ∂ q ) T g\left( q \right) =\left( \frac{\partial V_g\left( q \right)}{\partial q} \right) ^T g(q)=(∂q∂Vg(q))T,对各种矩阵范数都存在一个 α > 0 \alpha>0 α>0使得 ∣ ∣ ∂ g ( q ) ∂ q ∣ ∣ < α ||\frac{\partial g\left( q \right)}{\partial q}||<\alpha ∣∣∂q∂g(q)∣∣<α
2.2.5 摩擦力
以上动力学模型都没有包含摩擦力,如果只考虑粘滞摩擦,则不会会影响模型的反馈线性化,这本书只考虑粘滞摩擦的情况。在实际中使用应该进行摩擦补偿。