对于坐标系
w
w
w上的一点
(
x
,
y
)
(x,y)
(x,y)经过线性变换
A
A
A得到的点是
(
x
′
,
y
′
)
(x^\prime,y^\prime)
(x′,y′)。注意,这里面的点还是在
w
w
w坐标系下的。比如,旋转变换
L
\bf{L}
L,原基底是
(
1
,
0
)
,
(
0
,
1
)
(1,0),(0,1)
(1,0),(0,1),经过旋转变换后得到的是
(
cos
θ
,
sin
θ
)
,
(
−
sin
θ
,
cos
θ
)
(\cos \theta,\sin \theta),(-\sin \theta,\cos\theta)
(cosθ,sinθ),(−sinθ,cosθ),因此旋转矩阵可以写作为:
(1)
L
=
(
cos
θ
sin
θ
−
sin
θ
cos
θ
)
\bf{L}= \left( \begin{matrix} \cos \theta&\sin \theta\\ -\sin \theta&\cos\theta \end{matrix} \right) \tag{1}
L=(cosθ−sinθsinθcosθ)(1)
w
w
w坐标系下的任何点的坐标经过旋转变换的坐标都可以由下面的式子求得:
(2)
x
′
=
L
x
\bf{x^{\prime}} = Lx \tag{2}
x′=Lx(2)
下面思考的问题是,一个向量在旋转后的坐标系(假设为
b
b
b),则在此坐标系下的坐标应该怎么求解呢?显然,我们可以根据几何关系很容易得到,我们这里从另外一个角度出发:
对于一个向量
m
m
m在
w
w
w坐标系下的表示为:
m
=
a
i
⃗
+
b
j
⃗
m=a\vec{i}+b\vec{j}
m=ai+bj,在
b
b
b坐标系下的坐标为:
m
=
a
′
i
′
⃗
+
b
j
′
⃗
m=a^{'}\vec{i^{'}}+b\vec{j^{'}}
m=a′i′+bj′那么这两个向量应该是相同的,表示为矩阵则是:
(3)
(
a
b
)
=
P
(
a
′
b
′
)
\left( \begin{matrix} a\\ b \end{matrix} \right) =\bf{P} \left( \begin{matrix} a^\prime\\ b^\prime \end{matrix} \right) \tag{3}
(ab)=P(a′b′)(3)
结合2
和3
式我们可以看出
P
=
L
−
1
\bf{P}=L^{-1}
P=L−1,对于一个二维的旋转矩阵:
(4)
L
=
(
cos
θ
−
sin
θ
sin
θ
cos
θ
)
\bf{L}=\left( \begin{matrix} \cos\theta&-\sin\theta\\ \sin\theta&\cos\theta \end{matrix} \right) \tag{4}
L=(cosθsinθ−sinθcosθ)(4)
那么,我们可以求得旋转后的坐标系向量表示变换矩阵:
(5)
P
=
L
−
1
=
(
cos
θ
sin
θ
−
sin
θ
cos
θ
)
\bf{P}=\bf{L}^{-1}= \left( \begin{matrix} \cos\theta&\sin\theta\\ -\sin\theta&\cos\theta \end{matrix} \right) \tag{5}
P=L−1=(cosθ−sinθsinθcosθ)(5)
在询问了数学系的科大学长后才得知,这是两个不同数学角度的表达,前者是代数角度,后者是几何角度。啊,自己还想了一个钟头。=-=。
加速度计测量到的值为(注意是机身坐标系)
(
A
x
b
,
A
y
b
,
A
z
b
)
T
(A_x^b,A_y^b,A_z^b)^T
(Axb,Ayb,Azb)T,由于在悬停过程中,飞行器在导航坐标系的加速度值为
(
0
,
0
,
g
)
T
(0,0,g)^T
(0,0,g)T,因此有:
R
b
n
A
b
=
(
0
0
g
)
R_b^nA^{b}=\left(\begin{matrix}0\\0\\g\end{matrix}\right)
RbnAb=⎝⎛00g⎠⎞
其中,
R
b
n
R_b^n
Rbn是机身到导航坐标系的变换矩阵:
R
b
n
=
(
c
θ
s
ϕ
s
θ
c
ψ
−
c
θ
s
ψ
s
ϕ
s
ψ
+
c
ϕ
s
θ
s
ψ
c
θ
s
ψ
c
ϕ
c
ψ
+
s
ϕ
s
θ
s
ψ
c
ϕ
s
θ
s
ψ
−
s
ϕ
c
ψ
−
s
θ
c
θ
s
ϕ
c
ϕ
c
θ
)
R_b^n= \left( \begin{matrix} c\theta &s\phi s\theta c\psi-c\theta s\psi & s\phi s\psi +c\phi s\theta s\psi \\ c\theta s\psi & c\phi c\psi +s\phi s\theta s\psi & c\phi s\theta s\psi -s\phi c\psi\\ -s\theta & c\theta s\phi & c\phi c\theta \end{matrix} \right)
Rbn=⎝⎛cθcθsψ−sθsϕsθcψ−cθsψcϕcψ+sϕsθsψcθsϕsϕsψ+cϕsθsψcϕsθsψ−sϕcψcϕcθ⎠⎞
师兄说,手推出姿态角,比较懒,找到MMA求解旋转问题的方法:
ComplexExpand[RotationMatrix[{{0, 0, -g}, {x, y, z}}], TargetFunctions -> {Re, Im}]//Simplify
比较快速的求解出姿态角。
矩阵的线性变换的再次理解
设
x
1
,
⋯
 
,
x
n
\boldsymbol{x_1},\cdots ,\boldsymbol{x_n}
x1,⋯,xn以及
y
1
,
⋯
y
n
\boldsymbol{y_1},\cdots \boldsymbol{y_n}
y1,⋯yn是空间
V
\boldsymbol{V}
V的两组基,那么:
y
i
=
∑
k
=
1
n
a
k
i
x
i
=
(
x
1
,
⋯
 
,
x
n
)
(
a
1
i
…
a
n
i
)
\boldsymbol{y_i} = \sum_{k = 1}^{n}a_{ki}\boldsymbol{x_i} = (\boldsymbol{x_1,\cdots,x_n}) \left( \begin{matrix} a_{1i}\\ \dots\\ a_{ni} \end{matrix} \right)
yi=k=1∑nakixi=(x1,⋯,xn)⎝⎛a1i…ani⎠⎞
因此,可以用矩阵来表示:
y
=
x
A
\boldsymbol{y} = \boldsymbol{x}A
y=xA
称矩阵
A
A
A为过渡矩阵。
如果基底 x \boldsymbol{x} x采用的是标准正交基,那么 y = A = ( a 1 , ⋯   , a n ) \boldsymbol{y} = A = (\boldsymbol{a_1,\cdots,a_n}) y=A=(a1,⋯,an),即变换矩阵的每一列的就是另外一组基。
下面讨论坐标的变换:
对于空间 V \boldsymbol{V} V中的任意一个向量 l = ∑ i = 1 n ξ i x i = ∑ j = 1 n η j y j \boldsymbol{l} = \sum_{i = 1}^{n}\xi_{i}\boldsymbol{x_i} = \sum_{j = 1}^{n}\eta_{j}\boldsymbol{y_j} l=∑i=1nξixi=∑j=1nηjyj
那么:
l
=
(
x
1
,
⋯
 
,
x
n
)
(
ξ
1
⋯
ξ
n
)
=
(
y
1
,
⋯
 
,
y
n
)
A
−
1
(
ξ
1
⋯
ξ
n
)
=
(
y
1
,
⋯
 
,
y
n
)
(
η
1
⋯
η
n
)
\boldsymbol{l} = (\boldsymbol{x_1,\cdots,x_n})\left(\begin{matrix}\xi_{1}\\\cdots\\\xi_{n}\end{matrix}\right)= (\boldsymbol{y_1,\cdots,y_n})A^{-1}\left(\begin{matrix}\xi_{1}\\\cdots\\\xi_{n}\end{matrix}\right) = (\boldsymbol{y_1,\cdots,y_n})\left(\begin{matrix}\eta_{1}\\\cdots\\\eta_{n}\end{matrix}\right)
l=(x1,⋯,xn)⎝⎛ξ1⋯ξn⎠⎞=(y1,⋯,yn)A−1⎝⎛ξ1⋯ξn⎠⎞=(y1,⋯,yn)⎝⎛η1⋯ηn⎠⎞
那么:
(
η
1
⋯
η
n
)
=
A
−
1
(
ξ
1
⋯
ξ
n
)
\left(\begin{matrix}\eta_1\\\cdots\\\eta_n\end{matrix}\right) = A^{-1}\left(\begin{matrix}\xi_1\\\cdots\\\xi_{n}\end{matrix}\right)
⎝⎛η1⋯ηn⎠⎞=A−1⎝⎛ξ1⋯ξn⎠⎞
比如在飞控中,统一物理量在不同坐标系下的表示要需要这个trick。