齐次变化矩阵的伴随算子( 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 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, 这里是为什么呢? 原因就在前述的证明中。