1.13. 加速度传感器¶
加速度传感器是惯性导航装置中最重要的一个组件,这是一种利于地球重力场的物理特性的传感器,并组合敏感元件、特殊设计的机械结构。 加速度计、地磁计、海拔计和陀螺仪都是惯性导航的关键元件,本节内容中仅涉及加速度计。由于加速度传感器是基于地球重力场的物理特性, 无法用于地外太空领域。
BlueFi的背面画有x-y坐标系图案的旁边就是加速度计和陀螺仪的组合元件,体积非常小,这是因为他们采用近些年才发展起来的MEMS(微机 电系统)技术进行设计和制造,使得这些惯性元件的体积急剧缩小,今天的半导体技术使得他们的成本也很低,但在原理上几乎与数十年前使用 的体积庞大的加速度传感器和陀螺仪相同。
1.13.1. 重力加速度和姿态感知¶
今天的惯性测量装置几乎是所有飞行器的关键元件,没有这些元件我们的飞机无法准确地抵达目的地,无人机无法稳定停留在空中帮你拍照。 加速度计使用近地空间不变的重力场方向和重力常数(g),借助于压电效应、容变、热变等敏感元件、特定机械结构和测量电路,根据牛顿第三定律当物体 姿态发生改变时的加速度变化对传感器内部的质量块/热气腔产生反作用力,敏感元件和测量电路能够精确地测量力的大小,从而得到加速度的变化。
根据加速度计的设计,加速度计分为动态型和动静态型两类。采用压电效应的加速度传感器只能感知加速度的“动态”变化,无法感知确定 静态时的物体姿态,此类传感器必须借助于姿态估算算法和动态加速度变化信息来确定物体的当前姿态;采用容变和热变的加速度传感器, 特殊的机械结构、敏感元件和测量电路设计使得他们不仅能感知加速度的动态变化,还能测量静态的姿态。基于中学的物理知识(力的分量和合成), 结合下图我们就能想象得出加速度计的基本原理:
此图仅展示一个方向的加速度变化和重力分量。事实上,我们在描述物体的加速度时总会先构建一个三维坐标系,加速度计会输出三个方向的加速度分量。 当然也有少部分加速度传感器只能给出x-、y-两个方向的加速度分量。所以加速度传感器又分为1D-、2D、3D的。
BlueFi采用3D的动静态型加速度计,即使在静止状态,BlueFi的加速度传感器也能给出自己的准确姿势。下面我们使用一个简单示例来观察BlueFi给出的 加速度变化信息。示例代码如下:
将本示例代码保存到BlueFi的/CIRCUITPY/code.py文件中,BlueFi在执行示例程序时,你可以尝试让BlueFi平躺、竖立、倒立、侧立等姿势 并观察三个加速度分量与姿态之间关系,并找出加速度每一个分量的最小值和最大值(加速度每一个分量的范围)。
示例代码分析:
- 第1行,初始化程序,相当与程序下载进Bluefi之后告知Bluefi从此开始执行程序
- 第2行,一个无穷循环的程序块
- 第3行(无穷循环程序块的第1行),打印值”X=”,将加速度分量X打印出来
- 第4行(无穷循环程序块的第2行),打印值”Y=”,将加速度分量Y打印出来
- 第5行(无穷循环程序块的第3行),打印值”Z=”,将加速度分量Z打印出来
- 第6行(无穷循环程序块的第4行),等待0.1秒(即系统空操作0.1秒)
建议你设计数据记录表,将本示例给出的加速度三分量的值与姿态之间关系记录下来,然后根据这一关系确定姿态和加速度数据之间变化规律。
1.13.2. 用RGB像素颜色来表示加速度变化¶
BlueFi的5颗RGB像素彩灯是一种特殊的显示元件,响应速度快能呈现动感效果。在前一个示例中我们把加速度的三个分量的数值显示在LCD屏幕上, 当你旋转BlueFi改变其姿态时,观察屏幕的数值并不方便。那我们就想到其他的显示方式,譬如我们用5颗RGB像素灯珠发出的光颜色来指示加速度 的三个分量。巧合的是,BlueFi加速度传感器能给出三个分量值,而RGB像素灯珠的颜色也正好是三个分量。下面的示例程序中,我们将BlueFi的 加速度传感器三个分量分别映射为像素灯珠的RGB三基色的三个分量。示例代码如下:
很酷!这么短一点代码就能实现如此酷的效果。在此示例中我们再次用到了数学中的映射概念,数据映射:把加速度的某个分量值(范围-10.24~+10.24) 映射成RGB三基色某个分量(范围0~255)。
这个示例的关键就在整个代码块的第三行,设置所有像素颜色中,我们将加速度传感器所获取到的XYZ三个方向的加速度分量分别做了数据映射,对应了决 定RGB彩灯颜色的RGB分量数值,完成了这一炫酷的效果。
将本示例代码保存到BlueFi的/CIRCUITPY/code.py文件中,当BlueFi运行示例代码期间,试着改变BlueFi的姿态,你发现 5颗RGB像素的颜色与BlueFi姿态之间什么关系?
正面朝上时,为什么是蓝色?根据本示例代码,以及加速度传感器三分量、姿态之间关系,请你说明这个原因。
总结:
- 地球重力场和方向
- 地球重力常数
- 加速度计
- 姿态感知和加速度
- 姿态估算和加速度动态变化
- 本节中,你总计完成了9行代码的编写工作
重要
出现的代码块
- 加速度分量(每个分量的有效值: -10.24~+10.24), BlueFi的Sensors类acceleration属性, 加速度传感器的三个分量值
x方向分量、y方向分量、z方向分量