干货 | 当BLE遇到MEMS——惯性系统的基础知识
EEWorld
电子资讯 犀利解读
技术干货 每日更新
来介绍一些惯性系统的基础知识,用提问的方式循序渐进的学习。
MEMS叫做微机电系统(MEMS, Micro-Electro-Mechanical System),MEMS常见的产品包括加速度计、麦克风、微马达、光学传感器、压力传感器、陀螺仪、湿度传感器等。
IMU叫做惯性测量单元(Inertial measurement unit)是测量物体三轴姿态角(或角速率)以及加速度的装置。 陀螺仪及加速度计是IMU的主要元件。
“捷联(Strapdown)”这一术语的英文原义就是“捆绑”的意思。因此,所谓捷联惯性系统也就是将惯性敏感元件(陀螺和加速度计)直接“捆绑”在运载体的机体上。
所以我们现在购买到的MEMS结构的IMU都是捷联惯性系统。
坐标的作用是确定一点的位置等信息,生活中我们经常使用各种坐标而不自知。比如“太阳东升西落,”参考的坐标系就是大地坐标系。“我的左边,”参考的坐标系就是体坐标。
体坐标与物体固连,XYZ三个轴可以自己定义,要符合右手定则。为了理解的方便这里我们用人来做物体,将人体的中心点定义为B点。定义头顶方向为BZ轴,前面是BY轴,右边是BX轴,那么这个体坐标系就建立好了。描述向前运动可以这么说,向体坐标BY轴正方向移动。
通常说的地坐标是指的地面坐标系,定义地球表面的一个点为E点,EX轴为指向地面平面的任意方向。EZ轴铅垂向上,EY与EZ轴构成的平面垂直,构成右手坐标系。这里我们将EX轴定义为指向西方,那么EY轴就指向南方,EZ轴指向天空。那么这个地面坐标系就建立好了。这里定义的地面坐标系最好是可以体坐标方向重合哦,比如人面向南方站立,体坐标就和地坐标系重合了。描述向西运动可以这么说,向地坐标EX轴正方向移动。
如果说以BZ轴为轴心旋转90度,这时候如果只有上面的坐标就做不到了。因为首先没有定义旋转的方向,也即90度该顺时针转还是逆时针转,同样没有定义90度是参考哪个坐标系。因为体坐标是一直固连在物体上的,你转它也转。这时候就需要一个参考体坐标系(坐标原点为体坐标的原点,不随物体旋转),同时还需要定义哪个方向转为正。
那我们现在定义坐标轴射出纸面的轴逆时针旋转为正。也即逆时针转为绕Z轴正转,向后躺下为绕着X轴正转,向右倒下为绕着Y轴正转。例如图上X轴转到X’,Z轴转到Z’,Y轴不动,产生的角度就是以Y轴为中心顺时针旋转θ角度。这样就解决了旋转的问题,要旋转多少度都以参考体坐标系为标准,那么要描述以身体为轴逆时针旋转90度,也就是以Z轴为轴心逆时针转90度,但是每次都要这么描述旋转就太过于麻烦,因此便产生了欧拉角。
参阅上图,设定xyz-轴为参考系的参考轴。称xy-平面与XY-平面的相交为交点线,用英文字母(N)代表。
α /'ælfə/ (或 φ/faɪ/或yaw) x轴和N轴之间的角度,代表绕z轴的旋转。
β /'bi:tə/ (或 θ/'θi:tə/或pitch) z轴和Z轴之间的角度,代表绕N轴的旋转。
γ /'gæmə/ (或 ψ/ps/或roll) N轴和X轴之间的角度,代表绕Z轴的旋转。
欧拉角在导航中用yaw(偏航),pith(俯仰)和roll(翻滚)描述,图如下:
那么前面说的以身体为轴逆时针旋转90度,就可以说成α或φ或yaw转动90度。
前面介绍了欧拉角可以描述物体的旋转,但是有多个欧拉角时就出现了问题,因为三个欧拉角的旋转顺序不同,导致的结果不同,这里举个例子,两个动作:1,朝着眼前方向转动90度,2,以身体为轴逆时针转90度。先做1和先做2会得到两个不同的姿态。
所以通常会约定以下的旋转顺序:
1. XYZ 绕Z轴(初始时与z轴重合的那个轴)旋转角度α. 现在X 轴位于交轨线上。
2. XYZ绕现在的X轴角度为β. Z轴现在已经位于其最终的位置, X轴还停留在交轨线上。
3. XYZ绕新的Z轴角度为γ。
用动画表示如下:
生成旋转矩阵的一种简单方式是把它作为三个基本旋转的序列复合。roll, pitch 和 yaw 旋转。因为这些旋转被表达为关于一个轴的旋转,它们的生成元很容易表达。
使用一个三行数组乘旋转矩阵就可以清晰了解上面表达式的含义。
使用上面旋转顺序进行相乘
(对于α 和 γ,范围是[−π, π],对于 β,范围是[0, π])
前面介绍了体坐标与地坐标,可是如果一直向前走,那么在地坐标下是想哪个方向走呢?这就涉及到坐标变换了,由于体坐标固定在物体上,物体旋转后体坐标也旋转,那么体坐标与地坐标间就存在着旋转关系。如果说知道了体坐标到地坐标的旋转矩阵,那么在体坐标中的方向,速度,角速度等量乘以旋转矩阵就可以得到在地坐标中的方向,速度,角速度。这就解决了前面我向前走是不是一路向西的问题。