首页 理论教育 摔倒检测软件的设计方案

摔倒检测软件的设计方案

时间:2023-06-23 理论教育 版权反馈
【摘要】:角度测量的主要方法包括相对测量、绝对测量、间接测量及小角度测量等。直角尺主要用以检测直角和划线。图6-25摔倒检测主函数程序截图图7-1 用样板、塞尺直接测量角度2)光学分度头检测。其实质的测量过程是以工件回转中心为基准,对零件中心角进行的检测。3)角度仪、电子游标万能角度尺检测。由于此类仪器和检测方法是用于对角度测量的基准进行检测的,所以它是高精度的角度检测方法,所用仪器的精度也很高。

摔倒检测软件的设计方案

1)摔倒检测的原理

摔倒检测是利用MPU-6050所测量的数据来分析盲人的姿态,从而判定盲人是否摔倒。MPU-6050能够传回加速度传感器数据、陀螺仪数据,不过这些原始数据用处不大,我们期望得到的是姿态数据,也就是欧拉角:航向角(Yaw)、横滚角(Roll)和俯仰角(Pitch)。有了这3个角,就可以得到当前系统设备的姿态(也就是盲人的姿态),这才是我们想要的结果。要得到欧拉角数据,就得利用我们的原始数据,进行姿态融合解算,这个比较复杂,所以借鉴了已有的算法程序。比较令人高兴的是,MPU-6050自带了数字运动处理器(DMP)。结合MPU-6050的嵌入式运动驱动库,可以将原始数据直接转换成四元数输出。在到四元数数据之后,就可以很方便计算出欧拉角,从而得到Yaw、Roll和Pitch。利用这3个角度数据,就可以对盲人的摔倒进行检测。

在这3个角度中,俯仰角(Pitch)的精度为0.1°,其范围是-90.0°~90.0°;横滚角(Roll)的精度是0.1°,其范围是-180.0°~180.0°;航向角(Yaw)的精度是0.1°,其范围是-180.0°~180.0°。导盲系统大部分的传感器以及模块都会集成为一条腰带模式,MPU-6050也不例外。通过分析人体摔倒后与摔倒前的变化,发现如果人体摔倒,4个方向必定会有变化,也就是前、后、左、右这4个方向。MPU-6050是水平安置,也就是说,盲人如果摔倒,俯仰角和横滚角的角度必定至少有一个会异常,所以通过这两个欧拉角便可以判断盲人是否摔倒。

2)摔倒检测的STM32实现

经过摔倒检测的原理解析,我们的目的就很明确了,主要就是利用MPU-6050的原始数据,计算出欧拉角,然后判断欧拉角的角度变化,从而判定盲人是否摔倒,使用MPU-6050的DMP输出的4元数是q30格式的,也就是浮点数放大了2的30次方倍。在换算成欧拉角之前,必须先将其转换为浮点数,也就是除以2的30次方,然后再进行计算,其C语言的计算公式如式(6-2)—式(6-5)所示。

其中quat[0]—quat[3]是MPU-6050的DMP解算后的四元数,q30格式,所以要除以一个2的30次方,其中q30是一个常量:1073741824,即2的30次方,然后带入公式,计算出欧拉角。上述计算公式的57.3是弧度转换为角度,即180/π,这样得到的结果就是以度(°)为单位的。如图6-24所示为摔倒检测程序流程图

(www.xing528.com)

图6-24 摔倒检测程序流程图

摔倒检测所用的模块MPU-6050主要是通过I2C进行数据通信,通过模块自带的数字运动处理器(DMP)进行数据处理。InvenSense提供的MPU-6050运动驱动库是基于MSP430的,我们需要将其移植一下,才可以用到STM32F1上面,官方DMP驱动库移植起来,还是比较简单的。欧拉角的C语言计算公式见式(6-6)—式(6-8)。

如图6-25和图6-26所示为基于MPU-6050摔倒检测主函数程序截图与欧拉角计算函数程序截图。

图6-25 摔倒检测主函数程序截图

图6-26 欧拉角计算函数程序截图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈