加速度计和陀螺仪指南

上传人:gao****ang 文档编号:220429774 上传时间:2023-06-30 格式:DOCX 页数:14 大小:260.10KB
收藏 版权申诉 举报 下载
加速度计和陀螺仪指南_第1页
第1页 / 共14页
加速度计和陀螺仪指南_第2页
第2页 / 共14页
加速度计和陀螺仪指南_第3页
第3页 / 共14页
资源描述:

《加速度计和陀螺仪指南》由会员分享,可在线阅读,更多相关《加速度计和陀螺仪指南(14页珍藏版)》请在装配图网上搜索。

1、介绍本指南旨在向兴趣者介绍惯性MEMS (微机电系统)传感器,特别是加速度计和陀螺仪以及 其他整合IMU (惯性测量单元)设备。IMU单兀例子:上图中MCU顶端的ACC Gyro 6DOF.名为US盯humb.支持USB/串口通信在这篇文章中我将概括这么几个基本并且重要的话题:-加速度计(accelerometer)检测什么-陀螺仪(gyroscope,也称作gyro)检测什么-如何将传感器ADC读取的数据转换为物理单位(加速度传感器的单位是g,陀螺仪的单 位是度/秒)-如何结合加速度传感器和陀螺仪的数据以得到设备和地平面之间的倾角的准确信息 在整篇文章中我尽量将数学运算降低到最少。如果你知道

2、什么是正弦、余弦、正切函数,那 无论你的项目使用哪种平台你应该都会明白和运用这篇文章中的思想,这些平台如Arduino、Propeller、Basic Stamp、AtemI芯片、PIC芯片等等。总有些人认为使用IMU单 元需要复杂的数学运算(复杂的FIR或IIR滤波,如卡尔曼滤波,Parks-McCIellan滤波等)。 你如果研究这些会得到很棒且很复杂的结果。我解释事情的方式,只需要基本的数学。我非 常坚信简单的原则。我认为一个简单的系统更容易操作和监控,另外许多嵌入式设备并不具 备能力和资源去实现需要进行矩阵运算的复杂算法。我会用我设计的一 新IMU模块Acc Gyro Accelero

3、meter + Gyro IMU 作为例子。在下面的例子中我们会使用这个设备的参数。用这个模块作为介绍非常合适,因为它由3个设备 组成:-LIS331AL (datasheet) - 3 轴 2G 模拟加速度计-LPR550AL (datasheet) -双轴(俯仰、翻滚)500% 加速度传感器-LY550ALH (datasheet) -单轴(偏航)陀螺仪最后这个设备在这篇介绍中不使用,不过他 在 DCM Matrix implementation 中有重要作用它们一起组成了一个6自由度的惯性测量单元。这是个花哨的名字!然而,在花哨的名字后 面是个非常有用的设备组合,接下来我们会详细介绍之。

4、第一部分加速度计要了解这个模块我们先从加速度计开始。当我们在想象一个加速度计的时候我们可以把它想 作一个圆球在一个方盒子中。你可能会把它想作一个饼干或者甜圈,但我就把它当做一个球 好了:我们假定这个盒子不在重力场中或者其他任何会影响球的位置的场中,球处于盒子的正中 央。你可以想象盒子在外太空中,远离任何天体,如果很难想象,那就当做盒子在航天飞机 中,一切东西都处于无重力状态。在上面的图中你可以看到我们给每个轴分配了一对墙 俄 们移除了 丫+以此来观察里面的情况)。设想每面墙都能感测压力。如果我们突然把盒子向左 移动(加速度为1g=9.8m/sM),那么球会撞上X-墙。然后我们检测球撞击墙面产生

5、的压力, X轴输出值为-1g。请注意加速度计检测到得力的方向与它本身加速度的方向是相反的。这种力量通常被称为惯 性力或假想力。在这个模型中你你应该学到加速度计是通过间接测量力对一个墙面的作用 来测量加速度的,在实际应用中,可能通过弹簧等装置来测量力。这个力可以是加速度引起 的,但在下面的例子中,我们会发现它不一定是加速度引起的。如果我们把模型放在地球上,球会落在Z-墙面上并对其施加一个1g的力,见下图:GROUND在这种情况下盒子没有移动但我们任然读取到Z轴有-1g的值。球在墙壁上施加的压力是由 引力造成的。在理论上,它可以是不同类型的力量-例如,你可以想象我们的球是铁质的, 将一个磁铁放在盒

6、子旁边那球就会撞上另一面墙。引用这个例子只是为了说明加速度计的本 质是检测力而非加速度。只是加速度所引起的惯性力正好能被加速度计的检测装置所捕获。 虽然这个模型并非一个MEMS传感器的真实构造,但它用来解决与加速度计相关的问题相 当有效。实际上有些类似传感器中有金属小球,它们称作倾角开关,但是它们的功能更弱, 只能检测设备是否在一定程度倾斜,却不能得到倾斜的程度。到目前为止,我们已经分析了单轴的加速度计输出,这是使用单轴加速度计所能得到的。三 轴加速度计的真正价值在于它们能够检测全部三个轴的惯性力。让我们回到盒子模型,并将 盒子向右旋转45度。现在球会与两个面接触:Z-和X-,见下图:GRAV

7、ITAT ON FORCE Axz = ata n2(Rx,Rz)你可能从未用过ata n2这个函数,它和ata n类似,但ata n返回值围是(-PI/2,PI/2), ata n2 返回值围是(-PI,PI),并且他有两个参数。它能将Rx,Rz值转换成360。(-PI,PI)的角 度。更多信息请阅读atan2.所以,知道了 RxEst(n-1)和RzEst(n-1)我们发现:Axz(n-1)二 atan2( RxEst(n-1), RzEst(n-1).记住,陀螺仪测量的是Axz角度变化率,因此,我们可以按如下方法估算新的角度Axz (n): Axz(n)二 Axz(n-1) + Rate

8、Axz(n) * T请记住,RateAxz可由陀螺仪ADC读取得到。通过使用平均转速可由得到一个更准确的公 式:RateAxzAvg 二(RateAxz (N) + RateAxz (N-1) / 2Axz(n)二 Axz(n-1) + RateAxzAvg * T同理可得:Ayz(n)二 Ayz(n-1) + RateAyz(n) * T好了,现在我们有了 Axz (n),Ayz (n)。现在我们如何推导出RxGyro/RyGyro?根据公式1丄我们可以把Rgyro长度写成下式:| Rgyro | 二 SQRT (RxGyro A 2 + RyGyro A 2 + RzGyro A 2)同时

9、,因为我们已经将Race标准化,我们可以认为它的长度是1并且旋转后保持不变,所 以写成下面的方式相对比较安全:| Rgyro | 二 1我们暂时采用更短的符号进行下面的计算:x =RxG yro , y二RyG yro, z=RzG yro根据上面的关系可得:x 二 x / 1 二 x / SQRT(xA2+yA2+zA2)分子分母同除以SQRT (X a 2 + Z a 2)x 二(x / SQRT(xA2 + zA2) ) / SQRT( (xA2 + yA2 + zA2) / (xA2 + zA2) 注意 x / SQRT(xA2 + zA2) = sin(Axz),所以:x = si

10、n( Axz) / SQRT (1 + yA2 / (xA2 + zA2) 将SQRT部分式的分子分母同乘以zA2x 二 si n( Axz) / SQRT (1 + yA2 * z a2 / (zA2 * (xA2 + zA2)注意 z / SQRT(xA2 + zA2) = cos(Axz), y / z = tan(Ayz),所以最后可得:x 二 sin(Axz) / SQRT (1 + cos(Axz)A2 * tan(Ayz)A2 )替换成原来的符号可得:RxGy ro 二 si n( Axz( n) / SQRT (1 + cos(Axz( n)八2 * tan( Ayz( n)八

11、2 )同理可得:RyGyro 二 sin(Ayz(n) / SQRT (1 + cos(Ayz(n)A2 * tan(Axz(n)A2 )提示:这个公式还可以更进一步简化。分式两边同除以sin (axz (你)可得:RxGy ro 二 1 / SQRT (1/ sin( Axz( n)八2 + cos(Axz( n)八2 / sin( Axz( n)八2 * tan( Ayz( n)八2 )RxGy ro 二 1 / SQRT (1/ sin( Axz( n)八2 + cot(Axz( n)八2 * sin( Ayz( n)八2 / cos(Ayz( n)八2 ) 现在加减 cos(Axz(n

12、)A2/sin(Axz(n)八2 二 cot(Axz(n)八2RxGyro = 1 / SQRT (1/ sin(Axz(n)八2 - cos(Axz(n)A2/sin(Axz(n)八2 + cot(Axz(n)八2 * sin( Ayz( n)八2 / cos(Ayz( n)八2 + cot(Axz( n)八2 ) 综合条件1、2和3、4可得:RxGyro 二 1 / SQRT (1 + cot(Axz(n)A2 * sec(Ayz(n)A2 ),其中 cot(x)二 1 / tan(x) , sec(x)二 1 / cos(x)这个公式只用了 2个三角函数并且计算量更低。如果你有Mathe

13、matica程序,通过使用 FullSimplify SinAA2/ ( 1 + CosAA2 * TanBA2)你可以验证这个公式。现在我们发现:RzGyro 二 Sign(RzGyro)*SQRT(1 - RxGyr0八2 - RyGy0八2).其中,当 RzGyro=0 时,Sign(RzGyro)二 1 ,当 RzGyro0 时,Sign(RzGyro) = -1。个简单的估算方法:Sig n(RzGyro)二 Sig n( RzEst (n-1)在实际应用中,当心RzEst (n-1)趋近于0。这时候你可以跳过整个陀螺仪阶段并赋值: Rgyro二Rest (n-1)。Rz可以用作计算

14、Axz和Ayz倾角的参考,当它趋近于0时,它可能会 溢出并引发不好的后果。这时你会得到很大的浮点数据,并且tan()/atan()函数得到的结果会 缺乏精度。现在我们回顾一下已经得到的结果,我们在算法中的第n步,并计算出了下面的值:Racc -加速度计读取的当前值Rgyro -根据Rest(-1)和当前陀螺仪读取值所得我们根据哪个值来更新Rest (n)呢?你可能已经猜到,两者都采用。我们会用一个加权平 均值,得:Rest( n)二(Racc * w1 + Rgy ro * w2 ) / (w1 + w2)分子分母同除以w1,公式可简化成:Rest(n)二(Racc * w1/w1 + Rgy

15、ro * w2/w1 ) / (w1/w1 + w2/w1) 令 w2=w1=wGy ro,可得:Rest(n)二(Race + Rgyro * wGyro ) / (1 + wGyro)在上面的公式中,wGyro表示我们对加速度计和陀螺仪的相信程度。这个值可以通过测试确 定,根据经验值5-20之间会得到一个很好的结果。此算法和卡尔曼滤波最主要的差别是它的权重是相对固定的,而卡尔曼滤波中的权重会随着 加速度计读取的噪声而改变。卡尔曼滤波注重给你一 “最好的理论结果,而此算法给你的 是实际项目中够用的结果。你可以实现一个算法,它能根据测量的噪声而改变wGyro值, 但对大部分应用来说固定的权重也

16、能工作的很好。现在得到最新的估算值还差一步:RxEst(n)二(RxAcc + RxGyro * wGyro、/ (1 + wGyro)RyEst(n)二(RyAcc + RyGyro * wGyro )/(1 + wGyro)RzEst(n)二(RzAcc + RzGyro * wGyro )/(1 + wGyro)现在,再次标准化矢量:R 二 SQRT(RxEst (n) a2 + RyEst( n)A2 + RzEst( n)A2 )RxEst(n)二 RxEst(n)/RRyEst (n)二 RyEst (n )/RRzEst(n)二 RzEst(n)/R现在,可以再次进行下一轮循环了。注:关于此算法的具体实现和测试,请阅读这篇文章:http:/sta rli no ./imu_kalma n_arduino .html加速度计和陀螺仪IMU融合的其他资源:http:/stackove rflow./questi on s/1586658/comb in e-g yro scope-a nd-accele romete r-data .dime nsionengineerin g./accele romete rs.htm

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!