direction-cosine-matrix-imu-theory

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.16Table of ContentsIntroduction背景轴公约方向余弦矩阵向量点叉乘陀螺仪信号计算方向余弦重规范化漂移消除GPS加速度计反馈控制器陀螺仪的特点风使用DCM控制和导航设计实现参考1简介本站是对 William Premerlani 和 Paul Bizard 的Direction Cosine Matrix IMU: Theory文章的翻译。访问地址:dcm.nephen.com文章用处ArduPilot的DCM库算法实现参考文章。译文下载该翻译文章会生成pdf文档,请转至下载地址。编辑语法Markdown语法,数学公式采用MathJax1/MathJax2。翻译进度2016.5.8 开始翻译2016.6.8 预计初版完成参与维护1. 网页端编辑(推荐方法:非常简单,只需三步就可以完成你的贡献)找到入口:浏览在线页面时编辑本页,这样,看到不妥的地方可以立马修改,如下图或者也可以打开网页端进入要进行编辑的文件,如下图Introduction2,开始编辑:进入编辑页面后,对文件进行修改,会出现如下图问题按照提示,点击 Fork this repository and propose chanes ,进入即可编辑,如下图提交贡献:首先提名文件更改,如下图Introduction3检查是否与原有版本有冲突,如果有,解决冲突再提交,没有则提交,如下图剩下来就是版主的事了,如果没有太大的问题,版主就可以合并分支了,到这你的对本文档的贡献就完成了。2. 本地编辑(git高级用户推荐)相对于网页端编辑,本地编辑只是编辑在本地,后期的提交分支还是得在网页端进行,不过在此之前你得fork本项目到你的仓库。Introduction4然后进行如下操作 #下载你的项目到本地 git clone #进入文件夹进行编辑即可,完成后如下操作 git add . #这里可以看到你的更改状况 git status #添加你的更改备注,让别人知道你干了什么 git commit -m your comment #提交更改 git pull master #检查是否与nephen云端产生冲突,如果有,解决冲突后重新git commit -m your comment git push origin master #推送到个人云端到这里为止,还只对你自己的仓库进行了修改,你需要 new pull request 提交分支到nephen的仓库,如下图,可以看出,如果只是少量的更改,建议使用网页端编辑。参考资料Introduction51. 关于gitbook,可查看。2. gitbook的官方使用,可查看。License采用CC BY 4.0协议进行许可发布。最后感谢Innoecho、小羊、小飞、小段、一字并肩王、大牛、小孟、luoshi006、落落的主导翻译!© Utrans team all right reserved,powered by Gitbook该文件修订时间: 2016-06-1814:01:15Introduction6这是基于惯性测量单元(IMU)的方向余弦矩阵(DCM)的理论与实现的系列文章的第一篇,DCM能够应用在模型飞机以及直升机上。事实上,这篇文章到目前还只是一个草案,依然还有很多工作要做。许多评论者对于本篇文章的增改提出了很棒的建议,尤其是LouisLeGrand 和一些匿名来信的人,我们应该制作并准备一些文章中还没有包含的图表。我们后面会采纳他们的建议来进行改善,但是这可能还需要花上很长一段时间。在此期间,我们认为我们迄今得到的成果依旧能令很多读者受益。研究DCM的动机是想要将一个带有升降舵和方向舵控制的固有稳定的飞机在稳定和控制功能上更进一步,以使一个带有副翼和升降舵的特技飞机得到稳定控制。本文的其中一个作者(Premerlan)几年前制作了一个适用于两轴的飞控板,并为一个Gentle Lady滑翔机开发了初步的固件来提供稳定性以及返航功能。固件运行得很好,作者也慢慢的信任其返航功能了,但是这个功能似乎总不像作者想要的那么好使。尤其是下面两个问题始终找不到满意的解决方案:混合控制。意识到当飞机倾斜转弯的时候,由倾斜角带来了两个问题。第一,由于倾斜,飞机转弯时的偏航旋转对陀螺仪的偏航产生了一个干扰信号。第二,为了完成一个水平的转动,升降舵需要需要一些向上的偏量。这个偏量的大小取决于倾角的大小,而且这个倾角不能直接测量得到。这两个问题好比一个硬币的两面。加速度。加速度计测量的是重力加速度与实际加速度相减所得到的差值。加速度的值等于作用在飞机上总的气动力(升力,推力,阻力等)加上重力 的和再除以飞机的质量最后计算所得到的结果。因此,加速度测量的是作用在飞机上的总的空气动力的负值。重力的测量是在使飞机水平的过程中所需要的,但这不是在飞机加速运动中从从加速度计中获取的值。加速度是一个混杂变量。特别是当飞机上升或者下降的时候,在很短的一段时间内,加速度计的输出没有改变,但是飞机实际上加速了。美国国家航空和航天管理局的宇航员在教练机上也遇到过类似的情况。弹道路径可以产生零净力,因此能够暂时地欺骗加速度计。将加速度问题同混合控制问题结合起来可以避免小角度的俯仰控制,而加速度问题则避免了我们在手动启动飞机的时候使用俯仰自稳。意识到问题出现的部分原因是由于我们目前的飞控板没有一个六自由度的惯性测量单元(IMU),因此我们决定重新设计一个新的飞控板,于是乎便有了来自SparkFun的无人机开发板。凑巧的是我们的一个研究人员(Premerlani)决定去制作一个带副翼的飞行器,但是发现自己始终掌握不好必要的飞行技能。一个夏天他就坠毁了5架飞机,其中有3次还必须将飞机整个替换掉。因此,为了更加稳定的飞行,他决定将新的飞控板安装在他的Goldberg Endurance飞机上,如下图所示。 背景7凑巧的是我们的一个研究人员(Premerlani)决定去制作一个带副翼的飞行器,但是发现自己始终掌握不好必要的飞行技能。一个夏天他就坠毁了5架飞机,其中有3次还必须将飞机整个替换掉。因此,为了更加稳定的飞行,他决定将新的飞控板安装在他的Goldberg Endurance飞机上,如下图所示。 接下的问题是,怎样才能使其发挥出最好的效果?在我们的共同努力下,得到了与Mahony[1]相同的结论。由于我们所需要的是一个“完全遵守旋转群非线性原理”的方法。因此我和Paul觉得我们应该用一个方向余弦矩阵来表示旋转,可以用陀螺仪,加速度计以及GPS的信息来计算矩阵的元素,然后用来完成控制和导航。如果大家理解得足够深入,以下便是DCM的工作原理:1. 陀螺仪是飞行器方位信息的主要来源。通过对飞行器的非线性微分动力学方程进行整合,将飞行器的方位对旋转速率的时间变化率以及飞行器当前方位联系起来。这个操作是在一个较高的频率下进行的,(40到50赫兹)常常足以为电机提供每一个输送过来的PWM脉冲的最新信息。2. 意识到积分产生的数值误差会逐渐破坏DCM所必须满足的正交约束,我们对矩阵的元素做了一些常规的,小的调整,以使其重新满足约束。3. 意识到数值误差,陀螺仪漂移,以及陀螺偏移会逐渐累积DCM元素的误差,我们使用参考向量来检测这些误差,在检测到的误差和第1步中陀螺仪的输入之间加了一个PI负反馈调节器,这样可以在误差增加之前更快的将其消除。在此过程中,GPS用于检测偏航误差,加速度用于检测俯仰和横滚的误差。背景8整个进程的示意图如图1所示。 图1 DCM控制框图毫无疑问,你们应该都想知道什么是旋转群,为什么要使用它。你可能也想知道该如何去使用DCM进行控制和导航。当你也看过Mahony的论文后,你可能跟一些匿名来信的人有着相同的困惑,所以我们将从下面这些问题开始:四元数是什么以及我们为什么用四元数而不是向量符号表示?旋转群的含义是什么?旋转矩阵是什么?保持旋转矩阵的正交性有什么作用?反对称矩阵是什么?你能简要说明旋转矩阵中的运动学原理吗?你能简要说明旋转矩阵中的动力学原理吗?所有这一切都与旋转有关。事实上,我们要做的就是将飞机相对于地球的方位表示成一个旋转。有许多方法可以做到这一点。Mahony的论文讨论了两种不同的方法,旋转矩阵还有四元数。这两种表示方法的动机非常相似,它们都能够在不加近似值以及不产生奇点的情况下表示旋转。四元数的优势是其只需要四个变量就能表示一个旋转,而旋转矩阵需要9个。旋转矩阵则有一个天然的适合控制和导航的优势。这里我们选择用旋转矩阵来表示旋转是因为它有着微弱的优势,而且其表示方法与人们习惯的方式相似。 背景9旋转矩阵描述的是一个坐标系相对于另一个坐标系的方位。旋转矩阵的列是其中一个坐标系的单位向量在另一个坐标系的中的投影。一个坐标系中的向量可以通过左乘一个旋转矩阵转移到另一个坐标系。相反的过程可以通过将一个向量左乘这个旋转矩阵的逆矩阵实现,已证明旋转矩阵的逆矩阵与旋转矩阵的转置矩阵是相等的。(矩阵的转置就是将矩阵的行与列交换。)单位向量在控制和导航中非常有用,因为其模长固定等于1。因此通常将它们用来作点乘(·)和叉乘(×)以得到各个角的正弦值或者余弦值。 一般使用平动(重心的移动)和转动(围绕重心的朝向改变)来描述飞机的运动。定义飞机水平放置,机头指向规定方向为飞机的基准朝向,从基准朝向开始,绕特定轴转动飞机,将其转动到实际朝向。依照此方法,飞机的任意朝向都可以用从基准朝向的转动来描述。旋转群是由所有可能旋转的集合以及定义在其上的复合操作构成的群。它之所以构成群是因为集合中的任意两个旋转复合而成的旋转仍属于这个集合,每个旋转都存在逆旋转,并且存在单位旋转,这是旋转群的定义。然而,我们更愿意用这种方式来理解这个群:旋转一整圈还将回到起始位置,即旋转群是封闭的。旋转群之所以被重视是因为:利用旋转群,在包括上下翻转和垂直向上等的任意朝向下,都可以使用最少的近似去实施控制和导航。也就是说,可以不采用任何近似去做特技飞行。最基本的思路是:定义飞机朝向的旋转矩阵可以由描述旋转运动学的非线性微分方程积分得到(我们将在随后介绍这个非线性微分方程并解释它为什么是非线性的)。运动学关注刚体旋转的几何关系以及旋转矩阵如何对刚体施加旋转操作。通常认为总的旋转操作由一系列旋转矩阵复合而成。旋转矩阵复合是指两个旋转矩阵相乘,根据相乘顺序依次施加两个旋转矩阵所代表的旋转,所得到的最终旋转效果与这两个矩阵相乘所得到的矩阵所代表的旋转是一致的。背景10然而,数值积分会引入数值误差,无法得到与符号积分相同的结果。由准确的陀螺信号进行准确的符号积分将会得到准确的、正确的旋转矩阵。即使采用准确的陀螺信号,数值积分仍会引入两类数值误差:1. 积分误差。数值积分采用有限时间步长和具有有限采样率的数据。根据所使用的数值积分方法,对采样的数据做特定的假设。我们所使用的方法假设在每个时间步长内旋转速度恒定不变。这将引入正比于旋转加速度的误差。2. 量化误差。无论使用哪种方法表示量值,这些表达都是有限的,所以会存在量化误差。从模数转换开始,到执行任何无法保留计算结果所有位数的计算,量化误差都将不断累积。旋转矩阵的一个基本特征是它的正交性,即如果两个向量在某个参考系中是垂直的,那么它们在任意的参考系中都是垂直的。同样,不同参考系下的同一向量长度相同。然而数值误差会破坏这一特征,例如,旋转矩阵的行列都是单位向量,它们的长度应该等于1,但是数值误差会导致它们的长度变小或者变大。不断累积下去,它们的长度将会变为0或者无穷

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功