0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

iNEMO模块的特点及用其实现人体姿态检测系统的设计

电子设计 作者:电子设计 2018-11-16 07:53 次阅读

近年来,MEMS技术的发展开辟了一个全新的技术领域和产业,采用MEMS技术制作的微传感器、微执行器、电力电子器件等在航空、航天、汽车、生物医学、军事等领域中都有着十分广阔的应用前景,同时人体姿态检测信息融合技术在人体医学工程、健康监护等领域的研究也逐渐开展起来。

目前人体姿态检测的主要手段有图像分析和加速度分析两种,图像分析的算法通过摄像捕捉人体运动姿态,经过一定的图像处理技术确定人体的姿态,该方法需要在人体运动的区域安装摄像头,价格昂贵、具有一定的局限性;传统的加速度算法采用SVM (Support Vector Machine) 算法对数据进行预处理,然后用KFD(Kernel Fisher Discriminant)算法和k-NN(Nearest Neighbour)算法进行精确判定,该方法计算量大、编程复杂。

本系统提出的算法主要是在加速度计、陀螺仪、磁力计采集人体运动姿态信息的基础上,运用扩展卡尔曼滤波将数据进行融合,得到人体腰部和腿部的角度信息,然后通过大量实验建立与姿态的对应关系,采用这种方式可以利用加速度计与磁力计克服单独采用陀螺仪引起的姿态角发散,另外利用陀螺仪可以克服由于振动对于加速度计的影响与由于软硬铁磁对于磁力计的影响。

1 系统整体设计方案

系统分为上位机子系统和下位机子系统,下位机子系统由电源模块、2个iNEMO模块、GPRS模块和主控板组成,其中电源模块给整个系统提供3.3V和5V的工作电压,两个iNEMO模块分别固定在人体的腰部和腿部,完成对加速度计、磁力计、陀螺仪的信息采集,然后通过串口发送到主控板,主控板进行卡尔曼滤波融合出腰部和腿部的角度,然后根据腰部和腿部的角度值完成姿态的检测,最后GPRS模块通过socket协议将姿态信息打包传送到上位机,上位机实现远程监控。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图1 系统整体设计方案

2数据融合原理

在惯性导航领域,求取姿态角的数学表达式叫做方向余弦矩阵,用于表示方向余弦矩阵有两种方式:欧拉角与四元数。欧拉角的优点是比较直观,缺点是在俯仰角为正负90°时系统存在不稳定奇点。四元数的优点是当俯仰角为正负90°时系统不受影响,缺点是不直观,下面是它们之间的相互转换公式。

欧拉角转换成四元数

iNEMO模块的特点及用其实现人体姿态检测系统的设计

四元数转换成欧拉角

iNEMO模块的特点及用其实现人体姿态检测系统的设计

在程序中使用的是四元数,由于四元数不能直观的表示输出的角度,所以首先根据陀螺仪求取四元数,再将四元数转换成姿态角。根据运动体安装的三轴陀螺仪,可以得到在运动体坐标系下的三轴角速度( wx,wy,wz),用三轴角速度更新四元数

iNEMO模块的特点及用其实现人体姿态检测系统的设计

然后利用加速度计的信息,采用卡尔曼滤波的方法来对四元数进行修正,设系统的状态空间方程为

iNEMO模块的特点及用其实现人体姿态检测系统的设计

其中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数。Z(k)是k时刻的测量值,H是测量系统的参数。W(k)和V(k)分别表示过程和测量的噪声。

为了提高惯性导航仪的启动速度,需要利用欧拉角求取初始的四元数,首先根据运动体上三轴加速度计输出的三轴加速度( fx,fy,fz),求取俯仰角θ与横滚角φ

iNEMO模块的特点及用其实现人体姿态检测系统的设计

随后读取磁力计输出的三轴磁场强度,然后用加速度计对磁力计进行倾斜补偿

iNEMO模块的特点及用其实现人体姿态检测系统的设计

根据倾斜补偿后的磁力计输出,可以求得偏航角为

iNEMO模块的特点及用其实现人体姿态检测系统的设计

利用公式(3-5)和(3-7)可以完成对四元数的初始化工作。

3系统硬件设计

3.1 iNEMO模块简介

iNEMO惯性导航模块的基本原理如图2所示,利用MEMS传感器和主控芯片STM32F103RET6提供动静态方向和惯性测量功能。集成3个(4种)意法半导体传感器:3轴陀螺仪(L3GD20)、3轴加速度计+3轴磁力计(LSM303DLHC)以及气压传感器(LPS331AP),iNEMO传感器平台主控制器通过I2C总线与各传感器通信。iNEMO传感器平台可以通过串口向外界提供各传感器原始数据,还可以提供各传感器经AHRS算法融合后的横滚、偏航及俯仰角度。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图2 iNEMO惯性导航模块框图

3.2主控制器电路设计

图3为系统主控板电路图,其中处理器采用了STM32F103VCT6,STM32系列单片机以Cortex-M3为内核,时钟频率可达到72M Hz,具有丰富的片内外设,高性能、低成本、低功耗的特点使其成为32位产品用户的最佳选择。主控板拓展了多个串行接口,和iNEMO腿部模块、iNEMO腰部模块和GPRS模块进行串口通信。稳压芯片选用了LM2576D2T-5,其最大输入电压为45V,可稳定输出5V电压,再经过REG1117-3.3的稳压电路,产生3.3V工作电压,当电流异常导致温度过高时,保险丝F1、F2可以自身熔断切断电流,起到保护电路的作用。另外主控电路还包括复位电路、晶振电路、电容滤波电路以及JTAG下载接口等。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图3主控板电路图

3.3 GPRS电路设计

图4为GPRS电路图,主要包括MCUSIM300模块、SIM卡卡槽、稳压电路四部分。MCU同样采用了STM32F103VCT6,围绕它设计了单片机最小系统,包括晶振电路、复位电路、电容滤波电路等,MCU通过串口向SIM300发送控制指令以及接收SIM300返回的数据;SIM300模块与PCB板的连接方式为60引脚的板板连接器,全部引脚从该连接器引出,SIM300的网络状态指示灯引脚可根据模块的网络状态输出不同频率的电压脉冲,方便观测模块是否正常工作,对于不需要用的音频接口、LCD接口等,对应的引脚悬空即可;稳压芯片选择方面,可以使用开关型稳压芯片或者LDO线性稳压芯片,开关型稳压芯片转换效率高,但是需要的外围器件较多,且多为功率器件,占用空间比较大,为了节省PCB空间,设计中采用MIC5219-3.3BM5稳压芯片作为SIM300的电源调理芯片。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图4 GPRS电路图

4系统软件设计

4.1系统软件整体流程图

图5所示为系统软件整体流程图,首先对STM32进行初始化配置,包括时钟电路RCC高速时钟和低速时钟的起振、通用引脚GPIO输出输出模式的配置、串口USART波特率的设置,然后将SIM300设置为透传模式,进行网络连接(具体过程可参考3.3),成功连接网络之后,配置iNEMO模块各传感器的分辨率、字节对齐方式、读取频率等,然后分别读取腰部和腿部iNEMO模块的加速度、陀螺仪、磁力计原始数据,获得原始数据之后根据分别率的设置计算磁力计、陀螺仪、加速度的大小,最后通过扩展卡尔曼滤波融合得到腰部的俯仰角PITCH、腿部的偏航角YAW,结合两个角度信息通过查表法进行姿态判断,设置相应的标志位,通过GPRS将姿态标志位打包后发送到远程监控端。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图5系统软件整体流程图

4.2姿态检测

如图6所示,iNEMO模块中L3GD20、LSM303DLHC以及LPS331AP通过I2C串行总线与单片机进行通信,I2C总线两根双向信号线一根是数据线SDA,另一根是时钟线SCL,通过上拉电阻接到正电源VDD,每个接到I2C总线上的器件都有唯一的地址,主机发送地址时,总线上的每个从机都将7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址。

iNEMO模块的特点及用其实现人体姿态检测系统的设计

图6 I2C串行总线示意图

iNEMO各个传感器的地址码宏定义如下:

#define ACC_ADDRESS 0x32 //加速度计地址码

#define MAG_ADDRESS 0x3C //磁力计地址码

#define GYRO_ADDRESS 0xD6 //陀螺仪地址码

采集到传感器的数据之后,首先利用三轴陀螺仪信号,采用四元数的姿态表达式,积分求得姿态角,然后采用三轴加速度计和三轴磁力计,利用大地磁场和重力磁场在地理坐标系和运动坐标系之间的方向余弦进行绝对角度的解算,然后采用卡尔曼滤波进行前三者数据的融合,得到腰部的俯仰角PITCH、腿部偏航角YAW.通过大量实验建立姿态角与人体姿态的对应表如下:

表1姿态与YAW、PITCH的对应表

iNEMO模块的特点及用其实现人体姿态检测系统的设计

4.3 GPRS发送

SIM300参数的设定、TCP/ IP连接的建立以及数据的传输都是通过AT指令来实现的,AT指令是终端设备与PC应用之间的通信方式,一般由终端设备(如PC、控制板等)向终端适配器(如GPRS模块等)发送。AT指令以AT开头,以回车作为结尾;每条指令是否成功执行都有相应的响应返回。SIM300的TCP/IP功能支持普通和透传两种模式,本文采用的是透传模式,一旦建立连接模块就进入数据模式。

SIM300透传模式的配置大致分为以下四步:

(1)匹配波特率,发送“AT”指令后,延时一段时间发送“ATE0”。

(2)注册网络,发送“AT+CREG?”,若返回“OK”,则网络注册成功。

(3)设置透传模式,发送“AT + CIPMODE=1”,若返回“OK”,则设置成功。

(4)连接网络,发送“AT+CIPSTART=”TCP“,”219.236.xxx.xxx“,”7000“”,其219.236.xxx.xxx为PC的IP地址,7000为端口号。连接成功返回:CONNECT OK

5系统测试

为了验证系统姿态检测功能的可靠性,选取了不同的人分别佩戴该系统做了大量的实验,完成了对站立、坐下、行走、弯腰、躺下、趴倒的识别率的测试。从测试结果表2可以看出,大部分动作均可以准确无误的识别出来,行走、弯腰两个动作出现了误识别,这是由于不同的人佩戴该系统时,各个姿态对应的角度阈值会有少许的差别,但是百分之九十五以上的识别率足够满足用户的要求。

表2测试结果

iNEMO模块的特点及用其实现人体姿态检测系统的设计

结束语

人体姿态检测装置实现了对人体姿态的检测,可以很好地应用在对老人的监护、体感游戏等领域。数字式传感器的应用简化了硬件电路,GPRS模块的网络传输突破了射频传输距离短的缺陷,扩大了传输距离,整个系统体积小巧方便、应用性强。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 射频
    +关注

    关注

    101

    文章

    5356

    浏览量

    165833
  • GPRS
    +关注

    关注

    21

    文章

    980

    浏览量

    128610
  • 电源模块
    +关注

    关注

    32

    文章

    1495

    浏览量

    91659
收藏 人收藏

    评论

    相关推荐

    【爱芯派 Pro 开发板试用体验】人体姿态估计模型部署前期准备

    得到当前的运动状态,如用户是否跌倒(可以帮助监控老年人),以及用户当前身体状态等。 2、人体姿态估计任务技术路线 其实人体姿态估计任务已经有
    发表于 01-01 01:04

    什么是iNEMO模块?什么是iNEMO_M1?

    什么是iNEMO模块?什么是iNEMO_M1? #inemo #module以上来自于谷歌翻译以下为原文 What is an iNEMO
    发表于 11-27 16:03

    怎么51单片机编程实现用两个人体红外感应模块检测人员进出

    怎么51单片机编程实现用两个人体红外感应模块检测人员进出,并无人时提示报警
    发表于 12-03 10:34

    基于STM32F103C8T6的嵌入式服务机器人体感遥控器设计

    手部姿态的识别,同时还具有LCD显示模块、无线收发模块和电源模块;软件上,采用嵌入式操作系统μC/OS-II
    发表于 07-03 07:34

    怎么实现基于iNEMO模块姿态检测及数据传输系统设计?

    怎么实现基于iNEMO模块姿态检测及数据传输系统设计?
    发表于 05-19 06:06

    基于单片机的人体健康检测系统 精选资料分享

    环境:widows10+keil5+C+AT89C52参考资料1.基于单片机的便携式人体健康指标检测系统设计,汇编实现2.基于单片机控制的人体
    发表于 07-19 07:58

    基于STM32的人体检测系统设计

    STM32人体检测(体温、心率、心跳、跌倒检测)+zigbee笔者前言在闲鱼有缘结识的一个哥们,帮助做的基于STM32人体检测系统,我负责硬件程序开发设计,哥们负责客户端服务器微信程序
    发表于 08-04 06:21

    如何去实现一种基于物联网感知的家居人体健康状况检测系统设计

    为什么要设计一种基于物联网感知的家居人体健康状况检测系统?如何去实现一种基于物联网感知的家居人体健康状况
    发表于 10-20 06:23

    人手姿态检测系统的设计与实现

    为了增强人机交互的交互性以及遥控操作的可控性,设计并实现了一款基于磁场传感器与微加速度计的人手姿态检测系统。利用坐标变换理论,通过磁场传感器数据解算
    发表于 09-09 11:35 66次下载
    人手<b class='flag-5'>姿态</b><b class='flag-5'>检测</b><b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    滤波在飞行器姿态获取系统中的实现

    滤波在飞行器姿态获取系统中的实现滤波在飞行器姿态获取系统中的实现滤波在飞行器
    发表于 06-08 17:29 0次下载

    iNEMO模块姿态检测设计方案

    近年来,MEMS技术的发展开辟了一个全新的技术领域和产业,采用MEMS技术制作的微传感器、微执行器、电力电子器件等在航空、航天、汽车、生物医学、军事等领域中都有着十分广阔的应用前景,同时人体姿态检测
    发表于 10-15 10:40 0次下载
    <b class='flag-5'>iNEMO</b><b class='flag-5'>模块</b>的<b class='flag-5'>姿态</b><b class='flag-5'>检测</b>设计方案

    基于深度学习的二维人体姿态估计方法

    集基准、姿态估计方法和评测标准等方面,对近年来基于深度学习的二维人体姿态估计的诸多研究工作进行系统归纳与整理,将现有方法分为单人姿态估计方法
    发表于 03-22 15:51 5次下载
    基于深度学习的二维<b class='flag-5'>人体</b><b class='flag-5'>姿态</b>估计方法

    【STM32项目】- 人体检测(体温、心率、心跳、跌倒检测

    STM32人体检测(体温、心率、心跳、跌倒检测)+zigbee笔者前言在闲鱼有缘结识的一个哥们,帮助做的基于STM32人体检测系统,我负责硬件程序开发设计,哥们负责客户端服务器微信程序
    发表于 11-23 17:36 74次下载
    【STM32项目】- <b class='flag-5'>人体检测</b>(体温、心率、心跳、跌倒<b class='flag-5'>检测</b>)

    利用opencv+openpose实现人体姿态检测

    利用opencv+openpose实现人体姿态检测,附详细代码。 通过一个偶然机会,我了解到了人体姿态
    的头像 发表于 06-26 10:15 2279次阅读
    利用opencv+openpose<b class='flag-5'>实现</b><b class='flag-5'>人体</b><b class='flag-5'>姿态</b><b class='flag-5'>检测</b>

    AI深度相机-人体姿态估计应用

    够构建一个可以检测、分析和响应人体运动的应用程序和系统。代码我们的演示视频如下,该视频展示了这项技术的实际功能。您可以看到使用虹科AI深度相机实现
    的头像 发表于 07-31 17:42 613次阅读
    AI深度相机-<b class='flag-5'>人体</b><b class='flag-5'>姿态</b>估计应用