轴角法

先考你两个控制中的实际问题,如果你都会,可以出门左转刷抖音看小姐姐去了。

请接题:

  1. 已知无人车的姿态用ZYZ转序的欧拉角可表示分别为abc,求汽车纵向前馈需要补偿的加速度(用abc和g来表示)??可以理解为把一张A4纸的一边抬起来,小车要从一个底角沿着对角线走到另一个对角。
  2. 开源飞控PX4中的姿态控制的逻辑是这样的,先控制倾斜再控制旋转, 也就是先把roll和pitch的误差控制到0,再控制yaw角的误差为零, 先tilt后torsion。请问这在控制器里要如何实现??

我相信同时会做这两道题的人不超过10%,即使你是做飞控或者车辆控制的。

答案将在本系列的最后一篇给出,知乎大神多,先别戳穿我啊。

除非你是做电机控制的,是一维的世界,否则,飞控,航天,导弹,车辆,机器人等等这些控制领域,你会一直和旋转打交道,一定要懂一点刚体旋转的关键知识。

想当年,我刚毕业的时候,就是一心想着把电机控制做精做专,没办法,当年就是这样图样图深泡。 我到公司报道的时候,满怀激情地表述了我控制基础还不错,想继续深入做下去的决心。领导点了点头,说现在导航组缺人,你先去帮忙搭模型吧。。。。。。

我大学完全没学过刚体旋转,没学过导航,没学过力学。

我反抗了几下子,没鸟用,那就只能把XX当享受了。我运气很好,遇到了两个乐于专研讨论的导航专业聪明小伙伴,我边学边问边交流,就这样学习了起来。国企(研究所)有一点很好,愿意培养你,给你大量的机会去学习。

所以我是从一个小白成长到小菜的,我知道控制需要哪三板斧。

废话说完了,进入正题。

我会按照顺序来讲:轴角法,四元数,旋转矩阵,欧拉角,罗德里格斯公式和他们之间的转换。至于为什么这个顺序,看完你就明白了。

1 等效轴角坐标系表示法

我眼中最简洁的表示方式。

在二维的坐标系中,xy坐标系经过绕z轴按照右手定则旋转a角度,得到了x`y`坐标系。这种情况下:轴角法的轴就是Z轴,角就是a角。二维还是比较好理解的。

在三维空间中。一个xyz坐标系绕某一个定轴旋转某一个角度就得到了新的坐标系x`y`z`。那反过来说,一个xyz坐标系和另一个x`y`z`,是否可以找到一个轴和一角,旋转一次就可以使两个坐标系重合呢?答案是肯定的。

这就上图来一个标准的定义:

所以一个坐标系相对于另一个坐标系之间的姿态就可以用个一个轴(单位向量)和一个角来表示了,轴角法表示。可以用一个3×1的矢量来表示,矢量的大小就是旋转角度,方向就是旋转轴,这是旋转矢量法表示。二者可以等效。

这就是最简单的表示方法:轴角法。

这种表示方式一定明明白白的理解,因为它是后续的基础。

轴角法有两个优点,两个硬伤。

优点一:同轴的两次旋转可以直接相加来等效为一次旋转。

优点二:定义简单,相对直观。

硬伤一:一个xyz坐标系和另一个x`y`z`,轴角法表示是唯一的吗(角度规定在0-180)?答案是否定的,因为当旋转角度是0的时候,旋转轴可以是任意的,等效为求解 0×x=0 这个方程;也就是说这时候无解了。但是在应用中,一一对应很重要,这也就暴露出了轴角法表示的最致命的问题。

硬伤二:两次连续的旋转怎样合成呢?或者说是两个旋转如何做差呢?答案是没办法,除非借助其他表示方法。

事实上,有人已经证明了,虽然旋转的自由度是三,但是仅仅用三个数表示必然会出问题(我忘了原话怎么说的了。。。)。

那需要几个呢?最少四个数。

好了,应用最广泛的,逼格最高的四元数来了。

四元数和轴角法什么关系呢?是如何解决轴角法两大硬伤的呢??

请听下回分解。

专栏里每一篇都是我一个字一个字打的,都是我认为的原创干货。

欢迎指正讨论,转载请注明,认同请点赞。

这个系列的文章很容易出错,希望大佬们多多指正补充。

仅仅收藏是学不会的,还得点赞。

刚体旋转系列

专栏文章列表

这篇文章写了第二个问题的一些答案,建议先别看啊。

参考文献:

1 机器人学导论

2 视觉slam十四讲

medium.com/@behreajj/3d

en.wikipedia.org/wiki/C

en.wikipedia.org/wiki/A