最近在做多旋翼的项目,然后就对三轴加速度计和陀螺仪感兴趣,网上也找了一些资料。
大部分也是英文,就copy下来。【其实我想把所有以后的项目全部放到GItHub上面去,现在就先放一个连接好啦。https://github.com/kangschampagne】
下面就开始整合资料。
加速度计和陀螺仪以及组合IMU设备(惯性量单元)
Accelerometer(加速计) & Gyro Tutorial by Gadget Gangster
这一篇是很好的入门资料,详细讲解了加速度计和陀螺仪的数学模型和基本算法,以及如何融合这两者,侧重算法、思想的讨论 。以下是翻译。
介绍
本指南旨在向兴趣者介绍惯性MEMS(微机电系统)传感器,特别是加速度计和陀螺仪以及其他整合IMU(惯性测量单元)设备。

IMU单元例子:上图中MCU顶端的ACC Gyro 6DOF,名为USBThumb,支持USB/串口通信
在这篇文章中我将概括这么几个基本并且重要的话题:
- 加速度计(accelerometer)检测什么
- 陀螺仪(gyroscope,也称作 gyro)检测什么
- 如何将传感器ADC读取的数据转换为物理单位(加速度传感器的单位是g,陀螺仪的单位是 度/秒)
- 如何结合加速度传感器和陀螺仪的数据以得到设备和地平面之间的倾角的准确信息
在整篇文章中我尽量将数学运算降低到最少。如果你知道什么是正弦、余弦、正切函数,那无论你的项目使用哪种平台你应该都会明白和运用这篇文章中的思想,这些平台如Arduino、Propeller、Basic Stamp、Ateml芯片、PIC芯片等等。总有些人认为使用IMU单元需要复杂的数学运算(复杂的FIR或IIR滤波,如卡尔曼滤波,Parks-McClellan滤波等)。你如果研究这些会得到很棒且很复杂的结果。我解释事情的方式,只需要基本的数学。我非常坚信简单的原则。我认为一个简单的系统更容易操作和监控,另外许多嵌入式设备并不具备能力和资源去实现需要进行矩阵运算的复杂算法。
我会用我设计的一个新IMU模块——Acc_Gyro Accelerometer + Gyro IMU作为例子。在下面的例子中我们会使用这个设备的参数。用这个模块作为介绍非常合适,因为它由3个设备组成:
- LIS331AL (datasheet) – 3轴 2G 模拟加速度计
- LPR550AL (datasheet) – 双轴(俯仰、翻滚) 500°/s 加速度传感器
- LY550ALH (datasheet) –单轴(偏航)陀螺仪
最后这个设备在这篇介绍中不使用,不过他在 DCM Matrix implementation中有重要作用它们一起组成了一个6自由度的惯性测量单元。这是个花哨的名字!然而,在花哨的名字后面是个非常有用的设备组合,接下来我们会详细介绍之。