前言
齐次变化矩阵的伴随算子( A d T Ad_{T} AdT)旋量体系中往往用于同一向量在不同坐标系之间变换的作用. 它的求导主要出现于Newton-Euler Inverse Dynamics中. 本博客参考熊有伦院士的<机器人学>中将 A d T Ad_{T} AdT转换为齐次变换矩阵的形式进行求导.补充部分参考熊院士书中P136.
正文
这里直接给出答案,下面进行推导:
(
A
d
T
i
,
i
−
1
)
V
i
−
1
=
T
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
\begin{split} (\rm{Ad_{T_{i,i-1}}})\mathcal{V}_{i-1} &= T_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1} \\ \end{split}
(AdTi,i−1)Vi−1=Ti,i−1[Vi−1]Ti,i−1−1
这里对
A
d
T
i
,
i
−
1
\rm{Ad_{T_{i,i-1}}}
AdTi,i−1求导,
V
i
−
1
\mathcal{V}_{i-1}
Vi−1看作],引入矩阵求导法则
d
(
X
−
1
)
=
−
X
−
1
X
˙
X
−
1
d(X^{-1})=-X^{-1}\dot{X}X^{-1}
d(X−1)=−X−1X˙X−1以及
T
=
e
[
V
]
θ
M
,
T
˙
=
[
V
i
]
θ
˙
T
T=e^{[\mathcal{V}]\theta}M,\dot{T}=[\mathcal{V}_i]\dot{\theta}T
T=e[V]θM,T˙=[Vi]θ˙T:
d
(
A
d
T
i
,
i
−
1
)
d
t
V
i
−
1
=
T
˙
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
+
T
i
,
i
−
1
[
V
i
−
1
]
T
˙
i
,
i
−
1
−
1
=
T
˙
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
−
T
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
T
˙
i
,
i
−
1
T
i
,
i
−
1
−
1
=
[
V
i
]
θ
˙
T
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
−
T
i
,
i
−
1
[
V
i
−
1
]
T
i
,
i
−
1
−
1
[
V
i
]
θ
˙
\begin{split} \frac{d(\rm{Ad_{T_{i,i-1}}})}{dt}\mathcal{V}_{i-1} &= \dot{T}_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1} + T_{i,i-1}[\mathcal{V}_{i-1}]\dot{T}^{-1}_{i,i-1}\\ &= \dot{T}_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1} - T_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1}\dot{T}_{i,i-1}T^{-1}_{i,i-1}\\ &=[\mathcal{V}_i]\dot{\theta}T_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1} - T_{i,i-1}[\mathcal{V}_{i-1}]T^{-1}_{i,i-1}[\mathcal{V}_i]\dot{\theta}\\ \end{split}
dtd(AdTi,i−1)Vi−1=T˙i,i−1[Vi−1]Ti,i−1−1+Ti,i−1[Vi−1]T˙i,i−1−1=T˙i,i−1[Vi−1]Ti,i−1−1−Ti,i−1[Vi−1]Ti,i−1−1T˙i,i−1Ti,i−1−1=[Vi]θ˙Ti,i−1[Vi−1]Ti,i−1−1−Ti,i−1[Vi−1]Ti,i−1−1[Vi]θ˙
借助Lie bracket有:
[
V
1
]
[
V
2
]
−
[
V
1
]
[
V
2
]
=
[
V
1
×
V
2
]
[\mathcal{V}_1][\mathcal{V}_2] - [\mathcal{V}_1][\mathcal{V}_2] = [\mathcal{V}_1\times \mathcal{V}_2]
[V1][V2]−[V1][V2]=[V1×V2]
[
w
′
v
′
]
=
[
[
w
1
]
0
[
v
1
]
[
w
1
]
]
[
w
2
v
2
]
=
[
a
d
V
1
]
V
2
\begin{bmatrix} w'\\ v' \end{bmatrix} = \begin{bmatrix} [w_1] & 0\\ [v_1] & [w_1] \end{bmatrix}\begin{bmatrix} w_2\\ v_2 \end{bmatrix} = [ad_{\mathcal{V}_1}]\mathcal{V}_2
[w′v′]=[[w1][v1]0[w1]][w2v2]=[adV1]V2
原式 = d d t [ A d T ( t ) ] = [ a d V θ ˙ ] [ A d T ( t ) ] 原式= \frac{d}{dt}[\rm{Ad}_{T(t)}]=[ad_{\mathcal{V}\dot{\theta}}][\rm{Ad_{T(t)}}] 原式=dtd[AdT(t)]=[adVθ˙][AdT(t)]
补充: 直接对 A d T i , i − 1 \rm{Ad_{T_{i,i-1}}} AdTi,i−1求导
给定转轴
A
i
=
[
w
,
v
]
T
\mathcal{A}_i = [w,v]^T
Ai=[w,v]T
d
d
t
(
[
A
d
T
i
,
i
−
1
]
)
V
i
−
1
=
d
d
t
(
[
R
i
,
i
−
1
0
[
p
]
R
i
,
i
−
1
R
i
,
i
−
1
]
)
V
i
−
1
=
[
R
˙
i
,
i
−
1
0
[
p
˙
]
R
i
,
i
−
1
R
˙
i
,
i
−
1
]
V
i
−
1
=
[
[
w
i
]
θ
˙
R
i
,
i
−
1
0
[
v
i
]
θ
˙
R
i
,
i
−
1
+
[
p
]
[
w
i
]
θ
˙
R
i
,
i
−
1
[
w
i
]
θ
˙
R
i
,
i
−
1
]
V
i
−
1
\begin{split} \frac{d}{dt}([\rm{Ad_{T_{i,i-1}}}])\mathcal{V}_{i-1} &= \frac{d}{dt}(\begin{bmatrix} R_{i,i-1} & 0\\ [p]R_{i,i-1} & R_{i,i-1}\\ \end{bmatrix}) \mathcal{V}_{i-1}\\ &= \begin{bmatrix} \dot{R}_{i,i-1} & 0\\ [\dot{p}]R_{i,i-1} & \dot{R}_{i,i-1}\\ \end{bmatrix}\mathcal{V}_{i-1}\\ &= \begin{bmatrix} [w_i]\dot{\theta}R_{i,i-1} & 0\\ [v_i]\dot\theta R_{i,i-1}+[p][w_i]\dot{\theta}R_{i,i-1} & [w_i]\dot{\theta}{R}_{i,i-1}\\ \end{bmatrix}\mathcal{V}_{i-1} \end{split}
dtd([AdTi,i−1])Vi−1=dtd([Ri,i−1[p]Ri,i−10Ri,i−1])Vi−1=[R˙i,i−1[p˙]Ri,i−10R˙i,i−1]Vi−1=[[wi]θ˙Ri,i−1[vi]θ˙Ri,i−1+[p][wi]θ˙Ri,i−10[wi]θ˙Ri,i−1]Vi−1
对于
R
˙
i
,
i
−
1
\dot{R}_{i,i-1}
R˙i,i−1的由来:
R
˙
i
,
i
−
1
R
i
,
i
−
1
−
1
=
[
w
i
]
\dot{R}_{i,i-1}R^{-1}_{i,i-1} = [w_i]
R˙i,i−1Ri,i−1−1=[wi]
这里
{
i
}
\{i\}
{i}是参考坐标系类似与
{
s
}
\{s\}
{s},
w
i
w_i
wi类似于
w
s
w_s
ws.
对于
p
p
p的求导:
p
˙
=
G
′
(
θ
)
θ
˙
v
=
R
v
θ
˙
\dot{p} = G'(\theta)\dot{\theta}\mathcal{v} = R\mathcal{v}\dot{\theta}
p˙=G′(θ)θ˙v=Rvθ˙
θ
\theta
θ对于单轴而言是标量. 注意这里的
v
v
v其实是
v
b
v_b
vb, 为何是
v
b
v_b
vb? 对比
V
b
\mathcal{V}_b
Vb的导出过程
V b = T − 1 T ˙ = [ R T − R T p 0 1 ] [ R ˙ p ˙ 0 0 ] = [ R T R ˙ R T p ˙ 0 0 ] = [ [ w b ] v b 0 0 ] \mathcal{V}_b = T^{-1}\dot{T}=\begin{bmatrix} R^T & -R^Tp\\ 0 & 1 \end{bmatrix}\begin{bmatrix} \dot{R} & \dot{p}\\ 0 & 0 \end{bmatrix} = \begin{bmatrix} R^T\dot{R}& R^T\dot{p}\\ 0 & 0 \end{bmatrix}= \begin{bmatrix} [w_b] & v_b\\ 0 & 0 \end{bmatrix} Vb=T−1T˙=[RT0−RTp1][R˙0p˙0]=[RTR˙0RTp˙0]=[[wb]0vb0]
v
b
=
R
T
p
˙
v_b = R^T\dot{p}
vb=RTp˙ 故
R
−
1
=
R
T
R^{-1}=R^T
R−1=RT, 有
p
˙
=
R
v
b
\dot{p}=Rv_b
p˙=Rvb, 此处的R自然是将
v
b
v_b
vb转换至
v
s
v_s
vs , 因为
R
R
R是来源于
G
(
θ
)
G(\theta)
G(θ)的导数->关于
w
i
w_i
wi即参考坐标系的罗德里格斯公式.
综上有:
p
˙
=
v
i
θ
˙
\dot{p}= v_i\dot{\theta}
p˙=viθ˙
对
p
˙
\dot{p}
p˙取括号有:
[
p
˙
]
=
[
v
i
]
θ
˙
[\dot{p}]=[v_i]\dot{\theta}
[p˙]=[vi]θ˙
经过上述的证明, 也可以对旋量有更深的理解: 一切运动都是由旋转运动所带来的,而在twist中角速度的部分引发旋转,因此旋转运动可以直接表示为 w θ , w ∈ R 3 \boldsymbol{w}\theta, \boldsymbol{w}\in \mathbb{R}^3 wθ,w∈R3, 而twist中 v \boldsymbol{v} v带来的运动也可以通过 v θ \boldsymbol{v}\theta vθ表示, v ∈ R 3 \boldsymbol{v}\in \mathbb{R}^3 v∈R3, 这里是为什么呢? 原因就在前述的证明中。