【飞控】聊点姿态 (二)-坐标系旋

我们在飞控学习过程中听到太多次A坐标系转B坐标系了,那么什么是坐标系旋转呢?

假设向量 OA在 OXY 坐标系下的坐标为(x,y),

然后坐标系从 OXY 绕 Z 轴正方向逆时针旋转 θ 角,变为坐标系 OX’Y’。

向量 OA在 OX’Y’坐标系下的坐标为(x’,y’)。

向量没变,但是坐标系变了,所以现在的问题在于找到在不同坐标系下,同一个向量描述,之间的关系,也就是找到(x,y)与(x’,y’)之间的关系。

如图所示,我们通过投影关系很容易得到二维里的关系。

$$\begin{matrix} x'=x\cos\theta+y\sin\theta\\ y'=-x\sin\theta+y\cos\theta\\ \end{matrix}$$

矩阵形式:

$$\left[\begin{matrix} x' \\ y' \end{matrix}\right]=\left[\begin{matrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \\ \end{matrix}\right]\left[\begin{matrix} x \\ y \end{matrix}\right]$$

所以我们可以把这个旋转抽象出来,「向量逆时针旋转theta角度」的通用形式可以用矩阵表示为:

$$\left[\begin{matrix} A' \\ B' \end{matrix}\right]=\left[\begin{matrix} \color{blue}\cos\theta & \color{blue}\sin\theta \\ \color{blue}{-\sin}\theta & \color{blue}\cos\theta \\ \end{matrix}\right]\left[\begin{matrix} A \\ B \end{matrix}\right](√)$$

只要把这个形式扩展到三维就可以得到三维中的坐标系旋转。

三维中绕z轴旋转:

$$\left[\begin{matrix} x' \\ y' \\z' \end{matrix}\right]=\left[\begin{matrix} \color{blue}\cos\theta & \color{blue}\sin\theta & 0 \\ \color{blue}{-\sin}\theta &\color{blue}\cos\theta & 0 \\ 0 & 0 & 1 \\ \end{matrix}\right]\left[\begin{matrix} x \\ y \\z \end{matrix}\right](√)$$

形式是完全一样的,只是在转轴处补1即可,剩下两个轴的形式和二维一致。
同理三维中绕x轴旋转:

$$\left[\begin{matrix} x' \\ y' \\z' \end{matrix}\right]=\left[\begin{matrix} 1 & 0 & 0 \\ 0 &\color{blue}\cos\theta & \color{blue}\sin\theta \\ 0 &\color{blue}{-\sin}\theta & \color{blue}\cos\theta \\ \end{matrix}\right]\left[\begin{matrix} x \\ y \\z \end{matrix}\right](√)$$

继续同理!!!!

$$\left[\begin{matrix} x' \\ y' \\z' \end{matrix}\right]=\left[\begin{matrix} \color{red}\cos\theta & 0 & \color{red}\sin\theta \\ 0 & 1 & 0 \\ \color{red}{-\sin}\theta & 0 & \color{red}\cos\theta \\ \end{matrix}\right]\left[\begin{matrix} x \\ y \\z \end{matrix}\right] (×)$$

等等!为什么和书上不一样?

书上算错的了!别激动,只是因为我们忽略了一个隐藏条件右手坐标系

就是说其实我们的x,y,z的顺序是固定的,我们要套用这个通用的旋转形式,坐标系只能是以下三个状态(可以自己的右手试试)。

绕x转时:A轴=y轴,B轴=z轴,
绕y转时:A轴=z轴,B轴=x轴
绕z转时:A轴=x轴,B轴=y轴,

我们按照右手坐标系重新写一下绕y轴旋转的形式:

$$\begin{matrix} z'=z\cos\theta+x\sin\theta\\ y'=y\\ x'=-z\sin\theta+x\cos\theta\\ \end{matrix}$$

写成矩阵形式:

$$\left[\begin{matrix} x' \\ y' \\z' \end{matrix}\right]=\left[\begin{matrix} \color{blue}\cos\theta & 0 & \color{blue}{-\sin}\theta \\ 0 & 1 & 0 \\ \color{blue}\sin\theta & 0 & \color{blue}\cos\theta \\ \end{matrix}\right]\left[\begin{matrix} x \\ y \\z \end{matrix}\right](√)$$

哎,好气呀,书上又是对的。

看到这里聪明的你突然发现:绕某个坐标轴旋转不就是欧拉角吗?嗯 这一部分 我们下次再聊。

欢迎加我的个人微信交流,共同进步。

关注微信公众号【zinghd的思考】,回复【姿态】为您提供本文的全部参考资料。