一种基于惯性传感器和气压计的爬山与爬楼梯分类识别方法
2021-04-23王丰
王丰
摘要:在日常生活中,用户可能会戴手表爬山或者爬楼梯,这两者的共同特征是手表内置的气压计报出来的高度值发生变化。如果再使用GPS定位,可以进一步识别用户是爬山还是爬楼梯,但是GPS功耗较大而且信号有时候不太稳定,即使定位准确,也无法区分用户是在爬山还是在山里的大楼里爬楼梯。
本文的方法,抓住爬山和爬楼梯的本质特征区别,通过手表内置的加速度传感器、陀螺仪以及气压计,不需要GPS信号也可以准确区分用户是爬山还是爬楼梯,而且可以区分是攀登山上的阶梯还是爬楼房里的阶梯,进而给智能手机以及其他无GPS芯片的智能终端设备增加了此类场景识别,改善了用户体验。
关键词:佩戴;手表;加速度传感器 陀螺仪;爬山;爬楼梯
惯性传感器包含加速度传感器(获取平移运动信息)和陀螺仪(获取旋转运动信息)等,可以用来获取用户运动的三个轴的加速度和绕三个轴的旋转角速度,使用这些数据通过算法可以计算多种运动特征。
加速度传感器内置于移动终端里,体积小,功耗低,在室内运动没有GPS信号的情况下也可以实时地精确地记录用户的运动信息。
陀螺仪内置于移动终端里,可以记录每时每刻用户携带的终端设备绕三个轴旋转的角速度,进而估计用户的转动动作及其周期性。
气压计可以通过测量移动终端的气压变化,进而得到高度值及其变化量。
准备阶段
抓住爬山和爬楼梯的本质特征区别,在无GPS信号的情况下,把加速度传感器、陀螺仪和气压计采集的气压值(转化为高度值)数据结合,判断用户是爬山还是爬楼梯,具体方法如下。
(1)使用加速度传感器判断相邻两个步伐所持续的时间区间Tq1、Th1,前两个步伐和后两个步伐所持续的时间区间Tq2和Th2,以及前三个步伐和后三个步伐所持续的时间区间Tq3和Th3。
例如用户走了12步,则相邻两个步伐所持续的时间区间Tq1、Th1为第1步与第2步、第2步与第3步、第3步与第4步,以此类推。
前两个步伐和后两个步伐所持续的时间区间Tq2和Th2为第1、2步与第3、4步,第3、4步与第5、6步,第5、6步与第7、8步,以此类推。
前三个步伐和后三个步伐所持续的时间区间Tq3和Th3为第1、2、3步与第4、5、6步,第4、5、6步与第7、8、9步,第7、8、9步与第10、11、12步,以此类推。
(2)计算在对应的这些时间区间内的气压计的高度值的增量Hq1、Hh1、Hq2、Hh2、Hq3、Hh3。
这里指的是气压计通过测得的气压值在内部换算之后得到的高度值,这个高度值的确会存在个体差异,也会有不小的误差,但是高度值的增量基本上就比较准确了。本方法只需要使用高度值的增量即可(高度值的增量=对应时间区间内的终点时刻的高度值减去起点时刻的高度值),而且气压计还可以根据气象局的高度值数据定时校准自身的高度值数据。
(3)计算相邻步伐的高度值增量的偏差abs(Hq1-Hh1)/abs(Hq1+Hh1)、abs(Hq2-Hh2)/abs(Hq2+Hh2) 、abs(Hq3-Hh3)/abs(Hq3+Hh3)。
(4)相邻步伐的高度值增量的偏差的和abs(Hq1-Hh1)/abs(Hq1+Hh1)+abs(Hq2-Hh2)/abs(Hq2+Hh2) +abs(Hq3-Hh3)/abs(Hq3+Hh3) 是否小于或者等于对应的阈值。
如果是,则认为用户在爬楼梯;如果否,则认为用户在爬山。
因为爬楼梯的时候,前一次步伐的高度值增量与后一次步伐的高度值增量比较接近,所以对于相邻步伐的高度值增量的偏差的和,爬楼梯时比爬山时更小;
楼梯的相邻两个台阶的高度值增量是很接近的,但是爬山的时候相邻两个步伐的高度值增量在绝大多数情况下都不是很接近,所以上述相邻步伐的高度值增量的偏差的和小于预设的阈值的时候是爬楼梯。
(5)判断是否满足陀螺仪的三个轴的旋转角度呈现明显的周期性。
目前很多山都是有階梯的,因此方案的更精确的区分可以通过如下方法解决,可以抓住爬山时候的阶梯与爬楼梯时候阶梯的特征差异进行区分。
楼房里的阶梯的特点是每层楼有相同的陀螺仪旋转特征,比攀登山上的阶梯有明显的陀螺仪旋转的周期性特征。
第一,楼房里的阶梯大多数是每层楼有两段方向相反的阶梯。这种情况下,当用户在两段阶梯之间拐弯的时候,手机陀螺仪的旋转特性是相同的,例如如果用户在两段阶梯之间拐弯的时候手机的y轴正方向是竖直向上的,则绕y轴旋转180度;如果用户在两段阶梯之间拐弯的时候手机的z轴正方向是竖直向上的,则手机绕z轴旋转180度;无论拐弯的时候手机的姿态如何,每次拐弯的时候,陀螺仪的三个轴的旋转角度呈现明显的周期性。
第二,少数情况下,楼房里的阶梯如果是每层楼有三段阶梯,则上述的每段阶梯拐弯处的旋转角度从180度变成90度,而且三段阶梯是同一个方向旋转90度,然后到达上一个楼层以后在平路上走一小段距离再旋转90度。
总之,无论楼层之间分为几段阶梯,无论拐弯的时候手机的姿态如何,相邻两个楼层之间,陀螺仪的三个轴的旋转角度呈现明显的周期性。而气压计可以比较准确地检测到相邻两个周期内的高度的变化量。如果陀螺仪的三个轴的旋转角度呈现明显的周期性,而且相邻两个周期内气压计检测到的高度变化量是相等的(或者高度变化量的差值小于预设的阈值,例如小于0.1米),则认为用户是在楼房里爬楼梯,而不是在爬山上的阶梯。
随着高度的增加,同样高度的台阶,气压计读出来的高度值可能误差会有一些差别,但是高度值增量还是比较准确的,而且气压计读出来的高度值跟当前海拔高度有关,但是相邻步伐的高度值增量跟当前海拔高度关系很小,相邻步伐的高度值增量的偏差只是体现了相邻两个步伐的相似性,跟当前所处的海拔高度无关;所以相邻步伐的高度值增量的偏差的和abs(Hq1-Hh1)/abs(Hq1+Hh1)+abs(Hq2-Hh2)/abs(Hq2+Hh2) +abs(Hq3-Hh3)/abs(Hq3+Hh3) 跟当前所处的海拔高度无关。
具体实施步骤
Step 1:采集加速度传感器陀螺仪和气压计的数据;
Step 2: 使用加速度传感器判断相邻两个步伐所持续的时间区间Tq1、Th1,前两个步伐和后两个步伐所持续的时间区间Tq2和Th2,以及前三个步伐和后三个步伐所持续的时间区间Tq3和Th3;
Step 3:计算在对应的这些时间区间内的气压计的高度值的增量Hq1、Hh1、Hq2、Hh2、Hq3、Hh3;
Step 4:计算相邻步伐的高度值增量的偏差abs(Hq1-Hh1)/abs(Hq1+Hh1)、abs(Hq2-Hh2)/abs(Hq2+Hh2) 、abs(Hq3-Hh3)/abs(Hq3+Hh3);
Step 5:相邻步伐的高度值增量的偏差的和abs(Hq1-Hh1)/abs(Hq1+Hh1)+abs(Hq2-Hh2)/abs(Hq2+Hh2) +abs(Hq3-Hh3)/abs(Hq3+Hh3) 是否小于或者等于对应的阈值。
如果是,则进入Step 6,进一步确认;如果否,则判断为携带着移动终端的用户在爬山(无阶梯)。
Step 6:是否满足陀螺仪的三个轴的旋转角度呈现明显的周期性(参考准备阶段第(5)点),而且相邻两个周期内气压计检测到的高度变化量是相等的,或者高度变化量的差值小于预设的阈值,例如小于0.1米。
如果是,则认为用户是在楼房里爬楼梯;如果否,则认为用户是在爬山(攀登山上的阶梯)。
流程图
见左图。
结尾
本文通过惯性传感器和气压计可以比较准确地识别用户是在爬山还是爬楼梯,不依赖于GPS,对于没有GPS模块的移动终端以及GPS信号较差的移动终端有很高的使用价值,即使在GPS较好的移动终端里也可以不依赖于GPS,进而大幅度地节省功耗。
参考文献
【1】田博显.采用惯导、GPS与气压计数据的飞控系统高度滤波算法,北京航空航天大学,《国际航空航天科学》2018年第4期77-87,共11页.