利用惯性测量元件进行三维定位的系统设计*
2019-09-11王静宜曾祥烨苏彦莽倪立强高东奇白梦帅
王静宜, 曾祥烨, 苏彦莽, 倪立强, 高东奇, 白梦帅
(河北工业大学 电子信息工程学院 天津市电子材料与器件重点实验室,天津 300401)
0 引 言
在城市化进程中,大型建筑物已成为人们栖身立业的主要场所。实现室内三维定位,可以更好地进行人群行动规划,出现火灾等意外时也可以更好保障人员财产安全,所以室内定位问题具有重要研究价值。
本文设计了以惯性元件为基础的室内三维定位系统,系统使用STM32F103单片机,从低成本的微机电系统(micro-electro-mechanical system,MEMS)惯性传感器LPMS-ME1获取行人行走时的惯性参量,从带温度补偿的气压传感器模块BMP180获取高度信息,经预处理后,通过无线数传模块CC1101将预处理结果传输至服务器,经服务器再处理实现行人的室内三维定位。
1 利用惯性测量元件进行三维定位的理论研究
本文利用惯性传感器陀螺仪来测量运载体本身的惯性参量,然后利用积分等数学运算得到运载体的运动速度、相对距离等信息,从而实现对运动目标的定位[1,2]。
导航坐标系记作OnXnYnZn。选取北东地地理坐标系,即导航坐标系的原点On位于运载体的重心,Xn,Yn,Zn分别指向北方、东方、大地方向,符合右手定律。载体坐标系记作ObXbYbZb。原点Ob位于运载体的重心,Xb,Yb,Zb分别指向运载体的前方、右方、下方,符合右手定律。载体坐标系(Xb轴为前进正方向)绕Xb,Yb,Zb轴旋转的角度分别记为γ,θ,ψ。
通过导航坐标系(n系)到载体坐标系(b系)的旋转矩阵可求出载体的翻滚角、俯仰角以及航向角。
基于惯性传感器的行人航位推算一般用于行人的二维定位,利用基于过零点检测法来计算行人步数。一般行人正常的行走的步幅范围为45~85 cm,并且同一个人在正常行走时的步幅变化不大[4]。拟合一种线性步长估计模型[5]。其第k步的步长估计模型为
SLk=a×Fk+b×As+c
(1)
式中SLk为第k步的步长,m;a,b,c分别为利用线性回归计算得到的估计参数;Fk和As分别为第k步的频率和合加速度。
行人的航向角可以由惯性传感器输出的欧拉角来获得。由于本系统的惯性传感器件将佩戴于行人腰间,且Zb轴平行于水平面指向行人的前方,所以,惯性传感器的翻滚角即为行人的航向角。
本文拟采用高度测量按键初始化的方法,人为地设定参考平面,即先采集初始位置的大气压值p'0作为参考大气压,再根据当前的大气压来计算相对高度。大气压与相对高度的对应关系式
(2)
式中p为气压传感器的当前测量值。
2 硬件系统设计
本系统数据采集终端由STM32F103单片机、9轴惯性传感器模块LPMS—ME1、带温度补偿的气压传感器模块BMP180以及工作频段为433 MHz的无线数传模块CC1101组成;服务器端由STM8L101单片机最小系统板、工作频段为433 MHz的无线数传模块CC1101以及PC机组成。硬件系统方框图如图1所示。
图1 硬件系统方框图
3 软件系统设计
数据采集终端的主要任务是对行人运动时的部分数据进行采样与初步处理,该部分的软件设计基于STM32F103ZET6的最小系统板,通过I2C和SPI通信协议分别与惯性传感器、大气压传感器和无线数据传输的发送模块进行数据交换。
无线通信的数据传输率为250 kBaud/s,每一包数据包含7个有效字节,分别是设备编号(1个字节)、数据类型代码(1个字节)、数据(4个字节)、校验和(1个字节)。
3.1 服务器端软件设计
服务器端的主要任务是对数据采集终端采集的数据进行接收与再处理,并将行人的定位结果显示出来。STM8L101单片机最小系统板通过SPI接口与无线数传的接收模块进行数据交换,将接收到的数据发送到PC机的串口,使用Python中的serial模块读取串口数据便可以实现对定位数据的接收与再处理。
3.2 基于惯性传感器的行人航位推算算法
为减小定位误差,将采用硬件复位,软件计算校正的方法。由于本系统中的惯性传感器佩戴在行人的腰间,且Zb轴平行于水平面指向行人的前方,所以,读取本惯性传感器的翻滚角即为行人的航向角。
将数据采集终端固定在行人的腰部,行人行走一段距离,将传感器采集到的加速度数据通过无线模块传输到服务器端,并绘制接收数据的二维图像,如图2所示。
图2 行人行走过程中身体纵向(X轴)加速度的变化
本文初步选用X轴方向的加速度值来计算步数,Y轴、Z轴方方向的加速度值可用来辅助计算步长。
当行人并没有走动或正常走动的过程中身体有抖动时,加速度计可能会将Z轴的波动计算在内而进行计步。为了避免这种情况的发生,设置一个Δt,表示检测到的两步的时间间隔。当行人正常行走时,一般1 s内行走步数少于3步[7],因此本文Δt=0.25 s。
行人正常行走的过程中,采集行人的运动数据,使用Excel对采集到的运动数据进行回归计算,求得步长模型
SLk=0.328 8×Fk+0.437 7×As-0.132 0
(3)
相关系数R2≈0.91,表明数学模型较好的符合原始数据。
4 测试结果与分析
4.1 结果展示
将传感器固定于行人腰部,进行计步测试,结果如表1。
表1 计步测试结果
将传感器固定于行人腰部,对步长估计模型的准确度进行测试。当行人正常行走时,测试结果如表2所示。
表2 步长估计模型测试结果
将传感器佩戴于测试人员腰部,进行变高测试。行人从一楼走上四楼,观察服务器端行人高度信息的变化。由于该大气压传感器的高度信息波动较大,所以,对原始的高度数据进行均值滤波,滤波之后的测试结果如图3所示。
图3 高度测试结果
为了验证本系统可以正常的完成基于惯性测量元件的室内三维定位,将传感器固定于行人腰部,行人在三楼初始化本系统之后,走到一楼,在服务器端对行人进行三维定位测试,测试结果如图4所示(单位:m)。
图4 室内定位结果
4.2 结果分析
由上述测试的结果可知,在行人身体没有太大抖动的前提下,计步算法的准确度达到了95 %以上,初步实现了对行人的步数计算功能,且误差在可以接受的范围之内;在行人正常行走的过程中,步长估计模型的步长估计准确度达到了90 %以上,实现了对行人的步长估计;由于气压容易受到外界的干扰,所以高度数据有较大波动,上下波动的范围在可接受的1 m以内。
5 结 论
本文研究的内容主要是基于惯性测量元件的三维定位,分别从硬件和软件两个方面阐述了利用惯性测量元件进行三维定位的系统设计方案,介绍了各个模块的基本原理及无线通信防碰撞的实现方法,定义了无线通信协议,实现了基于惯性传感器的行人航位推算以及空间高度信息获取。经过软硬件调试和实际测试结果得知:行人正常行走100 m,定位误差在1.5 m以内,完成了利用惯性测量元件进行三维定位系统的设计。