基于三轴传感器的坐姿监测系统开发

2023-06-03 18:04张晶莹刘芳羽尚林乐黄少年陈荣元
电脑知识与技术 2023年10期
关键词:支持向量机

张晶莹 刘芳羽 尚林乐 黄少年 陈荣元

关键词:三轴传感器;坐姿监测;支持向量机;多分类

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2023)10-0035-05

0 引言

截至2022年1月,流行病学调查显示[1],我国青少年患有脊柱侧弯人数已经500万,并且该数据还在以每年30万左右的速度递增。继肥胖、近视之后,脊柱侧弯成了危害我国儿童青少年健康的第三大疾病。脊柱侧弯是一种三维结构畸形,在冠状面脊柱侧向弯曲,在水平面脊柱和胸廓发生旋转,在矢状面脊柱的生理曲度发生变化,因为人体有较多的单侧运动模式,两侧肌肉力量不同,不但会影响患者的形态美观,而且还会造成肌肉紧张,导致背痛发生。而当脊柱侧弯严重到一定程度时,很难再改变脊柱形态,恢复正常生理曲度,与此同时还会损害神经、压迫肺部,甚至会出现呼吸困难等影响正常呼吸的症状。

对脊柱侧弯所带来的其他延展性病变进行针对性治疗外,对于脊柱侧弯应采取重视态度,在日常生活中对于身体姿态的主动矫正尤为关键,侧弯节段的脊柱活动幅度会降低,脊柱不能主动挺直,侧彎通常会伴随椎体旋转,引起肋隆突或腰突。处于病态的脊柱,自主矫正存在着不确定性,因此借助外力协助人体进行姿势调节是必要的。

基于支持向量机算法研发的坐姿监测器,坐姿监测器可以长时间的对监测实体进行实时的监视,实时对检测实体进行坐姿矫正提醒,有效避免因坐姿错误对人体带来的伤害;因此坐姿监测器的市场需求旺盛,有足够的发展前景与可推广性。

1 坐姿监测器现状分析

传统的坐姿监测器已不能对正常人体脊柱生理曲度进行细致测算,并及时对用户发出信号,提醒用户进行坐姿监测。

1)强制性佩戴仪器对人体造成二次损伤

如今市场上已有的人体佩戴式坐姿监测器将对用户运动范围有很大程度的束缚,可能导致自身过度疲劳,还会伴随着酸痛,对于人体脊椎及其他脏器造成二次伤害[2],从主观层面而言,用户会更加排斥坐姿监测器的存在,对于预防及控制脊椎病无益。

2)无法进行感应人体脊椎压力

大多数的坐姿监测器为固定仪器,根据刻板的坐姿标准进行约束,该种商品无法把握用户当前坐姿对于自身脊椎所产生的实际压力,从而将坐姿监测的过程变成表面性工作,而没有将保持用户身体健康作为最终目的。

3)AI坐姿仪分散注意力

AI坐姿仪需要通过“主动提醒+主动调整”的模式,养成用户良好的坐姿习惯,但该种坐姿仪发出提示音会很大程度地分散用户及周围人群的精力,对于注意力集中无益,且该种用品同样无法根据用户实际用力方式进行坐姿调整,用户体验感较差。

对于现有坐姿监测仪的上述缺点进行规避,设计一款基于支持向量机算法研发的坐姿监测系统,该系统采用STM32模块为主控核心、MEMS传感器进行采集数据,使该监测器具有佩戴方式简单且轻便、监测功能灵敏等特点,可以很好地解决传统坐姿监测器存在的上述弊端。这使得产品的客户群体更加充实,在日常工作学习中都可以做到实时坐姿监测,减少对用户的负面影响,提高产品体验感。

2 系统设计

本系统使用STM32模块作为主控核心、MEMS传感器模块、辅助模块三大模块来实现对坐姿的监测,通过单片机中的程序,实现对系统的整体控制。

系统首先通过ADXL345采集移动过程中产生的三轴加速度后,将相应的数据传输到单片机中,单片机再根据SVM算法对数据进行二分法分类,根据分类结果与预置的数据进行比较,若超出所设定的范围,则发出震动提醒,并将相应数据通过蓝牙发送到手机让用户能实时查看具体情况。

下面通过硬件与软件两方面对系统进行详细说明。

2.1 硬件设计

系统的硬件部分主要分为四大模块来实现对坐姿的监控及矫正处理,主要设备包括:1 个STM32F103ZET6作为单片机控制模块、1个ADXL345 三轴加速度传感器、1个HC-06蓝牙模块、1块1 000mA可充电锂电池,总体硬件结构框架如图1所示。

当用户的坐姿不正确时,ADXL345三轴传感器可即时测算出相应的加速度,并根据预置程序将相关信息通过蓝牙传输至手机,用户可以实时查看自己坐姿的不正确之处并及时采取调整措施。

核心模块STM32F103ZET6具有72MHz的CPU速度和高达1MB的闪存。能够满足对传感器等模块的控制。

2.1.1 MEMS 传感器模块

ADXL345是基于MEMS技术的三轴、数字输出的加速度传感器[3]。在系统运行过程中,首先由ADXL345测出加速度大小,再通过相应模块内部的感应电信号器件,将加速度转换为可识别的电信号,最后通过AD 转换器将模拟电信号转换成数字信号。AD转换器输出的16位二进制补码输入单片机中,将其转化为三轴加速度和三维坐标进行分类处理。

将ADXL345的x 轴、y 轴、z 轴的加速度值转换为坐标系的角度值。函数连续读出数据并将其存储于BUF中,以x 轴加速度和轴坐标为例:

Acc_X=(float)Acc_dis_data*3.9/1000*9.8;//计算数据x轴加速度

temp_X=(float)dis_data*3.9;//计算数据和显示x 轴坐标y 轴和z 轴数据同理可以得出。

传感器还需要通过IIC通信方式与单片机进行通信。首先需要将CS引脚拉高至Vddi/o,使ADXL345 处于IIC 模式,ALT ADDRESS 引脚置1,即处于高电平。然后选定测量范围为±16g,速率设定为25,选择电源模式且使能DATA_READY中断。器件的7位IIC 地址是0x1D,随后为R/W位。将其转化为0x3A写入,0x3B读取。再通过ALT ADDRESS引脚接地,此时也可以选择备用IIC地址0x53(随后为R/W位),将其转化为0xA6写入,0xA7读取。设置好通信方式后,即可与单片机连接,在单片机代码中配置实现传感数据的输入。

2.1.2 其他辅助模块

1)电源模块

系统采用1000 mA锂电池进行供电。使用锂电池充电管理芯片对充电功能进行管理。所用锂电池的充电电压为5V,并且通过单片机能够即时获取电量的剩余量。电源模块主要负责为单片机、加速度传感器以及蓝牙模块供电。

2)蓝牙模块

蓝牙模块使用HC-06 芯片,通过串口实现与STM32之间的联系。将STM32上的PA2、PA3与HC-06上的RX、TX连接。并将驱动代码烧录到单片机芯片中并进行配置调整,即可实现系统与手机之间的信息传输。

2.2 软件设计

根据SVM算法进行二分法分类,如果是错误坐姿,则需要判断弯曲是否保持40秒以上,若超过这个设定时间,那么根据需求选择进行报警提示,过程中一直保持检测状态,检测到脊柱状态调整到正常后停止报警。

2.2.1 坐标系建立

传感器芯片如图3摆放时,根据图4的关系可知,此时Xout=+1g,Yout=0g,Zout=0g,沿着敏感轴加速时,相应的输出电压会增加。

2.2.2 数据采集与预处理

在三轴传感器数据采集中,以脊柱和传感器的贴合点为中心建立三维坐标轴,采用STM32F103ZET6 处理数据,对采集的数据进行实时滤波预处理。通过限幅滤波,滤除异常数据。经过预处理后,将数据传至芯片处理。

数据采集时存在过大的加速度数据,但这并不是真实的数据,需要通过模块输出补码值转化成十六进制,再转化为补码从而转换为有符号数,最终得到真实X轴加速度,以部分正常坐姿数据为例。

通过计算转化后,可以得到实际坐标数据,2 500 左右的值实际为负值。

2.2.3 支持向量机

将ADXL345的x 轴、y 轴、z 轴的加速度值转换为坐标系的角度值,对于采集的三轴感应器加速度的数据,根据欧拉旋转矩阵结合加速度补偿角速度的算法,减小姿态角误差。选择合适的关于三轴加速度和坐标的核函数,先预设一个阈值作为约束条件。

支持向量机[4]对数据进行二分类的一种分类方式,“间隔”是指作为支持向量的点到超平面的几何距离之和,支持向量机的学习训练过程就是使间隔最大化的过程。

将数据样本分成两组,80%用于训练样本,20% 用于检测系统,并且根据检测的结果对于参数等进行优化,使结果准确率更高。支持向量机二分方式如图6所示。

若是对于坐姿进行多分类,则是对于训练的样本进行再次分组、训练和检验,以此类推[6]。

3 系统实现与讨论

3.1 系统使用方式

将各模块组合起来后,如图7所示,将其佩戴至腰间,并贴近尾椎骨处,注意芯片摆放位置,使得采集的数据更贴近真实值,分类更准确。

3.2 数据分析

根据上述算法描述以及数据收集情况,利用归一化方法对基于支持向量机算法的三轴运动传感坐姿监测装置进行准确性预测,对三轴运动传感装置进行数据收集,数据模块以补码形式给单片机进行处理,得到数据后利用Python进行数据分析,得到相关因素之间的关系图8所示。

由图片可知,Y轴加速度对于不同坐姿情况下的影响非常明显,四种坐姿的数据分布区别较大,易于分析,因此可以得出,对于坐姿判断所涉及的判断因素里,Y轴加速度为主要影响因素。

而与Y轴加速度相互影响的因素关系,可由热力图(图9)所示:

由图9可知,X轴加速度与Y轴加速度的相关性较强,其相关系数可达到0.7;其次,X轴加速度与Z轴加速度也呈正相关趋势,相关系数为0.2,从而可以利用支持向量机算法对少量的支持向量进行计算分析

3.3 系统实现

系统测试时将总数据随机按比例分为训练集和测试集,分别约占总数据集的80%和20%。首先用大量的训练集对系统进行训练和测试[7],得到相对合适的阈值约束条件,再通过训练集对系统进行检验,根据分类结果分析。随着数据集的训练,准确率和适用范围都会随之改变。

根据系统实现结果可知,对于正确和错误的坐姿区分度较高,而错误坐姿之间的区分度不高。

区分度存在差异的原因在于部分错误坐姿的三轴坐标和加速度数据接近,对于某种坐姿的判断标准比较主观化,影响结果呈现。总数据集仅有两千左右,测试人数和数据总量较少,系统的训练不到位。此外个人的脊柱情况存在差异,笔者的数据和测试范围只涉及20岁左右的大学生群体,检测结果比较接近,适用范围比较局限,普适性不高。但是我们的系统是可进化型,在大量数据的测试下,可以达到更准确的测试结果,在后续产品系统的开发过程中可以对不同年龄段进行分类,开发出适用于不同年龄阶段的监测产品。

4 结束语

在該应用环境下,应用支持向量机算法的优点为最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,使得少数支持向量决定了最终结果,这不但可以剔除大量冗余样本、抓住关键样本,该方法不但算法简单,而且具有着较好的稳定性[8]。对于用户使用坐姿监测器时所产生的数据,都可以进行很好的记录和分析,而非支持向量样本的增加或减少对系统并不会产生影响,因此对用户错误坐姿进行提醒,可以减少坐姿监测器的错误率;缺点为对于非线性问题缺乏通解,求得对应应用条件下的核函数过程复杂。

就如今的坐姿监测产品趋势而言,监测器的准确性和及时性是判断产品可行性的重要依据。针对市面上坐姿监测器的弊端,探讨研究了这款基于三轴传感器ADXL345的坐姿监测系统。根据系统实现结果可知,对于该系统来说,区分坐姿的正确率较高,但对于错误坐姿的细分正确率仍有待提高。后续将对分类方式及算法进行进一步优化,以达到更加准确的分类效果。

猜你喜欢
支持向量机
基于支持向量回归机的电能质量评估
基于智能优化算法选择特征的网络入侵检测
基于改进支持向量机的船舶纵摇预报模型
基于支持向量机的金融数据分析研究
管理类研究生支持向量机预测决策实验教学研究