坐标转换矩阵

参考:《Robotics,Vision and Control》、《鱼雷航行力学》、其他学位论文

为了开题看论文,结果发现坐标转换矩阵这个基础部分竟然卡壳了,网上的一些讨论要不缺少中间过程,要不甚至是错的,于是整理了一下。
p.s.没想到《Robotics,Vision and Control》这本一直认为和研究关系不大的书成了救命稻草。




右手定则
绕一个向量的旋转

书上直接给出了分别绕x,y,z轴旋转sita角度的矩阵,而且这三个矩阵也经常见到。但值得注意的是,这三个矩阵其实是坐标系的转换矩阵,公式为

原坐标=[坐标转换矩阵]新坐标

而我们通常是希望求新坐标,所以

新坐标=[坐标转换矩阵的逆]原坐标

又因为是正交矩阵,所以求逆即转置

新坐标=[坐标转换矩阵的转置]原坐标

看了一些论文,虽然最后总的坐标转换矩阵是对的,但得出结论的过程里缺少了将坐标转换矩阵转置的操作,从而有误(虽然过程一般会被读者跳过),如下:

除此之外,也有的书籍(《鱼雷航行力学》)和论文,把前面的推导过程省略,直接给出了点对点的坐标转换矩阵,让人感觉很奇怪,甚至怀疑结论的正确性。(但后来推导发现这是转置后的矩阵)

于此同时,根据建立的坐标系的不同,旋转顺序也有差异,但有一定的标准。

下面《鱼雷航行力学》书上的旋转顺序,是因为建立了“东-天-南”的地面坐标系,即x轴指东,y轴指天,z轴指南,与之对应的雷体坐标系也是按照“东-天-南”来使用,其旋转顺序为y-z-x,分别旋转了航向-俯仰-横滚角
而上面的旋转矩阵来自于某些航空类的书籍和论文,因为是z轴在垂直方向(有的是z轴指天,有的是z轴指地...),常用的导航角旋转顺序是z-y-x,同样是按照航向-俯仰-横滚角的顺序。

2020年补充
当你尝试改变一个现有的Matlab仿真程序中的坐标系时,记得将S函数中设置的状态变量中的欧拉角次序与x,y,z轴顺序一一对应,比如对于“东-天-南”坐标系应分别为横滚-航向-俯仰,然后才能得到新坐标系正确的坐标转换矩阵。

posted @ 2019-12-09 11:44  中庭之园  阅读(9884)  评论(0编辑  收藏  举报