amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 1379|回复: 24

自己关于使用陀螺仪与加速度计检测欧拉角的理解

  [复制链接]
发表于 2017-3-8 20:57:13 | 显示全部楼层 |阅读模式
本帖最后由 书9500 于 2017-3-8 21:00 编辑

抱歉了,编辑的不是太清楚。下面有完整的电子版,请坛友下载查看。多多指教

我之前做过平衡小车,研究过一段时间,始终没搞明白欧拉角到底是什么,以及加速度计测量的加速度和欧拉角到底有什么关系。最近一段时间翻看了《刚体动力学》、《惯性导航》、《脱落原理与应用》等书总算小小的弄明白了。现在想和大家交流下。
参考:
1、论文《广义欧拉角及其应用》
2、ADI《使用加速度计进行倾斜检测》
3、知乎《一起写飞行仿真之 六自由度动力学方程》

欧拉角分析与检测
处理刚体的三维运动时,通常将其分解为刚体随某基点(例如刚体的质心)的平动及刚体绕此基点的 转动;在运动学上这后者等价于刚体绕定点的转动。描述绕定点运动刚体的方位时,可用方向余弦矩阵、欧拉角、欧拉参数、觊里一克莱茵参数等各种方法;但除去刚体可绕定点作全方位翻滚情况外,欧拉角仍是最常使用的方法。根据传统定义确定的欧拉角我们称为古典欧拉角,它的应用范围是有限制的。而根据通过三个顺次转动获得现有方位的思想,可以定义出其他许多组描述刚体方位的角变量,我们统称为广义 欧拉角,它们分别应用于不同的工程领域。
一、古典欧拉角
先介绍一下古典欧拉角的概念。
如右图所示,蓝色O-xyz表示定坐标系,O-XYZ表示随物体的动坐标系。刚体运动到某一点时OXY平面与Oxy平面有一交线ON,称为节线。由此形成三个角:进动角α、章动角β、自旋角γ,总称为古典欧拉角。为了使某一方位的古典欧拉角是唯一的,我们约定
0≤α<2π,0≤β≤π,0≤γ<2π
当已知这三个角时,刚体的方位可以通过三个顺次旋转获得。即:首先使O-xyz与O-XYZ坐标系重合,然后将刚体做三个顺次旋转:
1. 绕z轴旋转α,使x轴与N轴重合,N轴是旋转前后两个坐标系x-y平面的交线
2. 绕x轴(也就是N轴)旋转β,使z轴与旋转后的z轴重合
3. 绕z轴旋转γ,使坐标系与旋转后的完全重合
这种旋转顺序记为:“体轴3,3-1-3”(表示使用了三个结体坐标轴作为转动轴,转动顺序为先绕Z轴、再绕X轴、最后绕Z轴转动)
二、广义欧拉角
具有固定点的刚体的任一方位可以看成是绕坐标轴的三个顺次转动的合成。依照转动轴的选取不同及转动顺序不同,可以获得许多方案,每个方案中三个转角的总和都可称为广义欧拉角。为了区别各个方案,使用下列记号。“体轴3,1-2-3”表示使用了三个结体坐标轴作为转动轴,转动顺序为先绕x轴、再绕y轴、最后绕z轴转动。当然为了方便也可以简单的使用X-Y-Z的写法。
飞行器姿态角是广义欧拉角的一种。
我们以右图这个简化的大地平面为参考坐标系(或者叫导航坐标系),定义该地面坐标系的原点在地面上的某个点(常用初始时刻的飞行器重心位置)作为原点,空间三轴分别为下图所示的N,E,D,事实上常用的当地铅垂坐标系就与这个简化坐标系类似。有了地面坐标系作为参考,我们就可以将飞行器的位置、度和加速度做唯一表示。

地面坐标系在地面坐标系中表示飞行器的位置和速度时,只能将飞行器假设为一个质点,如果想进一步表示飞行器的姿态等信息,我们还需要一个机体坐标系。为了与地面坐标系定义的方向保持一致(即姿态角均为零时,两个坐标系相应坐标轴重合),我们可以按照下图定义飞行器机体X,Y,Z轴,有了坐标轴方向,根据右手螺旋的规则,绕坐标轴选择运动的正方向也就随之确定。定义了机体坐标系,飞行器绕机体轴旋转的角速度就可以唯一表示。
而为了表示表示飞行器相对于导航坐标系的姿态角,我们则需要引入机体坐标系和地面坐标系之间的旋转角度关系,如下图所示,将两坐标系平移至同一个原点处,为了下面叙述方便我们将这个原点定义为O点,则可以将两坐标系之间的偏差表示成绕三轴旋转的欧拉角。由此定义三个角:ψ表示绕竖轴(z轴)旋转,θ表示绕纵轴(y轴)旋转,φ表示绕横轴(x轴)旋转。
下面介绍下这三个角在图中的定义方法。
将飞行器坐标系中的x轴向ONE平面也就是水平面投影,可以得到θ角,并且在水平面中做该投影线的垂线,于是水平面中的N轴和E轴与投影线和其垂线之间的夹角均为ψ。
根据立体几何的知识:θ表示ONE平面与飞行器x轴之间的夹角,但是一定要区分清楚,按照这种定义的方式φ并不表示飞行器y轴与水平面的夹角。
习惯上称这三个角为:俯仰角(pitch)θ、翻滚角(roll)φ和方位角(yaw)ψ。
如果已知了这三个角可以通过三个顺次旋转(绕机体坐标系)获得图中的当前姿态。于是这三个角θ、φ、ψ完全确定了飞行器的姿态,因此可以称为飞行器姿态角。
        绕竖轴(z轴)旋转ψ角;
        绕纵轴(y轴)旋转θ角;
        绕横轴(x轴)旋转φ角;
这种方案被定义为“体轴3,3-2-1”或Z-Y-X。
不管是古典欧拉角还是广义欧拉角,它们都是选择不同轴和不同转动顺序作有限的角位移形成的。我们发现,不管是古典欧拉角或是广义欧拉角,如果选择不同轴和不同的转动顺序,所得到的结果是不一样的。(原话参见国防工业出版社《陀螺仪院里及应用》15页)
上述现象可以通过方向余弦阵的运算(矩阵的乘积不可交换)来说明。(具体参见1987高等教育出版社《刚体动力学》21页)
由于ψ表示绕竖轴 (z轴)旋转,θ表示绕纵轴(y轴)旋转,φ表示绕横轴(x轴)旋转,所以不管怎样总要进行三次旋转。根据组合的知识,可以得到C_3^3=6种方案,即X-Y-Z,X-Z-Y,Y-X-Z,Y-Z-X,Z-X-Y,Z-Y-X(当然也可以用“体轴3,3-2-1”等这样的形似来表示)。也就是说只有指定了旋转顺序的时候,这三个角才能唯一确定飞行器的姿态。
总结下:同样的欧拉角采取不同的旋转顺序得到不同的姿态;或者说,相同的姿态采取不同的旋转顺序需要不同的欧拉角。
这里顺便说一下,飞行器姿态角常用的两种定义方式为Z-Y-X和Z-X-Y。上面使用的是Z-Y-X的旋转顺序,如果采用Z-X-Y的旋转顺序,那么φ便可以表示飞行器y轴与水平面的夹角。
这里简单介绍一下卡尔丹悬架,在卡尔丹悬架中,三个旋转轴是相互包含的关系,比如包含关系为:X-Y-Z,那么旋转X轴时Y和Z轴也会跟着动,旋转Y轴不会对X轴产生影响但会使Z轴跟着动,旋转Z轴对X和Y轴均不产生影响。这就使得不管先旋转哪个轴,最后的结果总是由相互包含的先后顺序所确定的即X-Y-Z。(可参见三维模型)

下面我们通过分析两个传感器来说明如何检测这三个欧拉角。
MEMS陀螺仪:
电子陀螺仪主要通过测量科里奥利力来获得绕某个轴的角速度,具体原理参见视频《陀螺仪工作原理》。三轴陀螺仪就可以测量X、Y、Z三个轴的角速度,对这三个角速度进行积分得到三个欧拉角。这三个欧拉角即为前面所介绍的广义欧拉角。
MEMS加速度计:
加速度计的原理很简单,就是通过检测倾斜物体的重力在不同方向上的分量。具体原理参见视频《加速度计工作原理》和文档《使用加速度计进行倾斜检测》
图5为一个三轴加速度计的原理简图。
其中α表示加速度计x轴与重力分量R的夹角,β表示加速度计y轴与重力分量R的夹角,γ表示加速度计z轴与重力分量的夹角。
根据立体几何的知识,易知重力分量R为水平面L的法向量。那么α也表示x轴与水平面夹角的余角,β也表示y轴与水平面夹角的余角,γ也表示z轴也水平面夹角的余角。


不能编辑公式了。下面的我用图片表示


这里的O-XaYaZa表示定坐标系(地面坐标系)O-XYZ表示动坐标系(机体坐标系)。其中OZa轴也被用来当做重力向量R。θ、φ和ψ表示欧拉角,α、β和γ表示加速度计各轴与重力向量的夹角。
为了便于说明我们详细的再将欧拉角的产生过程描述下:
开始时动坐标系与定坐标系重合。
1、 动坐标系绕OZa轴转动ψ角,得到OX’Y’Za坐标系。
2、 再绕OY’轴转动θ角,得到OXY’Z’坐标系。根据几何知识可以知道:OY’垂直于旋转平面OZaX;α与θ均在旋转平面OZaX被测得且α=θ+90°。
3、 最后绕OX’轴转动φ角,得到OXYZ坐标系。根据几何知识可以知道:转转平面OY’Z垂直于旋转平面OZaX且交线为OZ’;OZ’为重力向量R在OZY平面的投影且φ角为其投影与Z轴的夹角。
根据前面的介绍,我们可以知道如果用加速度计表示欧拉角的话只能表示两个,即俯仰角θ和横滚角φ。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2017-3-8 21:36:56 | 显示全部楼层
发表于 2017-3-8 21:50:53 来自手机 | 显示全部楼层
谢谢分享,关注一下。
发表于 2017-3-8 22:02:44 | 显示全部楼层
sensor fusion是深啊...mark
发表于 2017-3-8 22:32:02 | 显示全部楼层
感谢分享。
发表于 2017-3-8 22:41:29 来自手机 | 显示全部楼层
谢谢楼主分享陀螺仪加速度计资料
发表于 2017-3-8 22:45:07 | 显示全部楼层
感觉很高深,还有这么多专业资料感谢分享~
发表于 2017-3-9 01:01:18 来自手机 | 显示全部楼层
谢谢分享啊
发表于 2017-3-10 21:23:40 | 显示全部楼层
请问看的是哪本《刚体动力学》?
 楼主| 发表于 2017-3-15 21:30:09 | 显示全部楼层
am391144374 发表于 2017-3-10 21:23
请问看的是哪本《刚体动力学》?

高等教育出版社1987年贾书惠《刚体动力学》
发表于 2017-3-16 09:06:15 | 显示全部楼层
谢谢! 有空看
发表于 2017-3-25 13:41:00 | 显示全部楼层
谢谢分享,有空看看。
发表于 2017-3-25 14:17:21 | 显示全部楼层
厉害,谢谢分享,以后有空看看
发表于 2017-3-25 16:46:22 | 显示全部楼层
支持!标记收藏。
发表于 2017-4-13 11:19:54 | 显示全部楼层
谢谢分享
发表于 2017-5-19 08:42:50 | 显示全部楼层
下来看看
发表于 2017-8-11 22:45:38 | 显示全部楼层
感谢楼主
发表于 6 天前 | 显示全部楼层
动态的时候,角度的计算很难啊,还有外力作用,怎样分解得到是外力施加的加速度还是重力加速度,想到头大了
发表于 6 天前 | 显示全部楼层
一直在套用网上的公式,但是没有弄明白为什么这样算,不错的资料
 楼主| 发表于 6 天前 | 显示全部楼层
UVPOWER 发表于 2017-9-19 09:34
动态的时候,角度的计算很难啊,还有外力作用,怎样分解得到是外力施加的加速度还是重力加速度,想到头大了 ...

这个不是你想的这样,加速度计对高频振动特别敏感,也就是会产生你所说的其他加速度。这是滤波的相关知识,具体有互补滤波,卡尔曼滤波等。你可以看看。
发表于 5 天前 | 显示全部楼层
不错的资料,楼主理论功底很强
发表于 5 天前 | 显示全部楼层
好文章,太牛B了
发表于 5 天前 | 显示全部楼层
书9500 发表于 2017-9-19 20:03
这个不是你想的这样,加速度计对高频振动特别敏感,也就是会产生你所说的其他加速度。这是滤波的相关知识 ...

我是用手施加的外力,施加外力后再让设备自由落体,然后检测这个状态是否在下落,这样就很难判断了。如果是静止状态下落,就很容易检测出重力加速度,然后判断处理,再施加外力后,就判断不出来了
发表于 5 天前 来自手机 | 显示全部楼层
不错的理论资料,谢谢分享!
 楼主| 发表于 前天 18:29 | 显示全部楼层
UVPOWER 发表于 2017-9-20 11:22
我是用手施加的外力,施加外力后再让设备自由落体,然后检测这个状态是否在下落,这样就很难判断了。如果 ...

这个还真不了解,我用加速度计只是做倾斜检测
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 粤ICP备09047143号 )

GMT+8, 2017-9-25 17:42

阿莫电子论坛, 原"中国电子开发网"

© 2004-2016 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表