• [XMOVE自主设计的体感方案] 历代版本系统介绍(一)XMOVE1.0


    编者注: X-MOVE是作者在业余时间于2010年6月份启动的以运动传感开发,算法和应用的平台,目前已经发展了三个版本,第四版的开发接近尾声。发布在博客园仅为交流技术,不存在商业目的,作者保留一切权利。

     一 . 前言和怀旧-关于1.0

      XMOVE目前已经发展了四代,为了更好的让大家了解它的发展历程,本系列的博文将介绍XMOVE各代系统的特性,硬件特征和软件。同时也能更好的总结系统中的不足。

        

      XMOVE1.0开发时间2010年6月-2010年8月。 

      XMOVE1.0是我在本科三年级准备考研的六月份着手开发的。当时的我郁闷于考研繁重的复习,想找些乐子。在经过激烈的思想斗争和听取同学意见后,我还是决定开始这个项目——也是我在本科期间完成的第三个大型嵌入式开发项目。下这个决心是需要勇气的,因为考研需要心无旁骛,我原以为用一点点课余时间就可以,没想到,一做就是满当当的两年。现在开发体感的人不计其数,但在2010年上半年,我这样的开发者绝对是少数,可是,当年没有抓住机会啊。

      大三期末考试一完,我就疯狂的从淘宝上买东西,选器件,创造了一天拿五次快递的记录。于是,一个拉杆箱里放着烙铁芯片传感器各种工具,就那么浩浩荡荡的回家了,考研?等来了再说!于是,在家里,那段时间我没有打一分钟游戏,看一部电影,穿着小短裤在燥热的七月份焊板子调代码。传感器是MMA7455,那叫一个不好焊,不论怎样都不通,最后还是找家乡一个修手机的大哥帮忙解决了。

      那是一个非常燥热的晚上,我弄到十二点钟,可是SPI总线的数据还是读不出来!应该不是硬件问题,于是仔细的检查了代码发现了问题,可是这时调试器不能用了。纠结了半天,还是先洗洗睡了。一晚上都是各种奇怪的梦,第二天6点起床,上电,传感器的值很好的读出来了!哈哈,现在想起来都非常开心。这种快乐,比吃了一顿大餐强太多了。 接下来就是外围工作,开发上位机界面,写无线协议,研究算法,都算比较顺利。

      准确的讲,XMOVE1.0的开发时间仅仅从7月到8月一个月时间。它的出生代表了我的不成熟,所有的开发工具和方法都非常山寨,好在自己在嵌入式开发上已经有了丰富的经验。PCB做的有火柴盒那么大,接收器用的是以前买来的巨大的MSP430开发板,上位机软件使用MFC开发:连图表控件都是我用GDI画图一点点描出来的,整个程序只有一个主文件,超多的流程跳转和奇怪的注释,不过,这也是当年的独特记忆,有无比兴奋的短暂暑假,有搞不出来到城南吃的夜宵,不是么?

      下图是XMOVE1.0的传感器硬件,很山寨吧?

      下面这张图记录了当时的开发场景:

       下面是我当时制作的宣传折页

      内页:

     下面,我将当时的设计文档的多数部分介绍给大家,同时描述它的主要系统架构和实现细节。

    二. 背景和问题的提出

    (一)研究背景和问题提出

      现代技术的发展,使得生产力水平大大提高,以往众多必须由人参与的过程可由速度更快,精度更高且不知疲倦的机器替代。而人,也希望更方便的与机器进行交流。以下是一些案例:

      案例1. 当前,病人(尤其是精神病人)需要全天候监护,但往往医院的人力资源有限,不可能做到这点。医疗系统迫切的希望找到一种渠道,不仅可方便的监控病人的心跳,血压等数据,更希望计算机可掌握病人当前在做什么,处于何地。这种需求,对婴幼儿监控,更是必要的。

      案例2运动员的运动过程,到现在为止多数还是由教练员进行评定和考核。但是人的反应速度是有限的,人很难掌握运动过程中的很多细节:如瞬时加速度,速度等运动学特征及可数学推导出的力学细节。

      案例3:计算机科学发展迅速,计算机处理性能和存储容量有了巨大的进步。但人机交互方式依然仅限于普通的键盘鼠标。这对于一些残障人士是不利的,而更直观的动作控制可大幅度的提高人机交互的速率和有效性。

      因此,解决上述问题的关键,在于能找到一种方法对动作进行监控和分析的方法,使得以其为基础的“动作监控”,“动作控制”成为可能。

      这种动作监控系统应具有以下基本特征:

    1.    具有重量轻,封装小,使其对宿主的影响减到最低程度。

    2.    尽可能详细准确的获得运动数据。(这部分将在以后部分详细介绍)

    3.    低成本,面向大众

    4.    可编程器件,具备高速处理特征和升级特征,而不限于已固定的方法。

    5.    整套的软硬件系统,实现方便的操作和高可靠性。

    (二)核心问题和解决思路

      

      五大需求中,电子技术似乎给出了最好的回答。当前的电子技术,使得小型封装,低功耗,低成本的信息高速处理成为可能。而当今的射频技术,更将系统脱离了线缆的限制,可方便的挂载于宿主身上。而核心问题,即整个系统的关键,在于如何尽可能详尽的获得“运动数据”。

      下面,我们以人体为讨论对象,来分析这个问题。

      人体动作的表现,主要是四肢动作。获得四肢的动作,基本相当于获得了人动作的核心数据。但不能将四肢看成四个质点,因为四肢会有平移运动,更有转动等。传感节点挂载在手腕和脚腕这些容易活动的部位,可更好的掌握当前的运动信息。因此,各个节点的运动维度是6维,包含了三个绝对位移坐标轴,三个角度转动坐标轴。因此,需要采用动作传感器获得这六维的运动数据。而所谓的动作传感器,就是“微机电传感器”——MEMS.

      

    获得运动数据的关键

      MEMS(Micro Electro Mechanical Systems)本质上是一种把微型机械元件(如传感器、制动器等)与电子电路集成在同一颗芯片上的半导体技术。一般芯片只是利用了硅半导体的电气特性,而 MEMS 则利用了芯片的电气和机械两种特性。

      那么,MEMS传感器的工作原理是什么?在 MEMS 传感器芯片内,三轴(X、Y、Z)上的运动或倾斜会引起活动硅结构的少量位移,造成活动和固定元器件之间的电容发生变化。在同一封装上的接口芯片把微小的电容变化转变成与运动成比例的校准模拟电压。为确保可重复使用的性能,接口芯片允许出厂后微调,因此,无需对终端产品的生产线进行调整。通常的模拟量采样的方式有两种:静电电容式和压电电阻式的更有优势,而前者在低功耗方面更具优势,消耗电流更低。硅电容加速传感器的元件是由单晶硅和玻璃做成的。这种设计能确保相对于时间和温度的例外的可靠性、准确性和稳定性。通常一个 1g 的元件能承受多于 40 000g 的加速度 (1g = 地球自由引力的加速度) 。

    1.  三轴加速度传感器

      加速度传感器的原理,在于利用芯片中微机电结构,利用间接测量由于动作变化产生的电容改变,来获得加速度值。当然,不同的传感器,原理不同。数字式传感器与模拟的相比,是在芯片中内置和AD转换器,数字式芯片对外界电路干扰不敏感,但价格稍贵。加速度计的主要用途是测量加速度值,当然,利用算法,可以测得速度,位移,绝对倾角等物理信息。

    2.三轴陀螺仪

      提供运动处理能力的另一关键技术,就是传统上用于测量绝对旋转速率的陀螺仪。振动质量陀螺仪利用科氏加速度在一个结构的两个共振模式之间产生的能量传递,科氏加速度出现在旋转参照坐标系中,并与旋转角速度成正比,参见图1。陀螺仪通过测量科氏加速度来获得角速度(Ω)。
      

    3.  磁场计

      为校正加速度计的旋转误差,一些厂商使用磁力计来完成传统上用陀螺仪实现的传感功能。这些器件确定手持设备相对于磁北方向的旋转运动,并通常用于调整地图的显示方向以使之与用户当前面对的方向相对应。磁力计无力实现快速旋转测量(大于5赫兹),而且,在存在外部磁场时(如存在扬声器、音频耳机),甚至当设备周围存在铁磁材料时,数据易于受到污染。

    4. GPS

      对于大尺度的速度和位移监测,由于以上的惯性坐标系统会因为误差漂移问题产生累积错误,故在条件允许的情况下应加入GPS(全球卫星定位)获得人体的位置和速度数据。它在人体监控方面是非常重要的,但对人机交互方面,却不是必须的。

      虽然加速度计可为简单的方位和倾斜应用提供基本的运动传感,但在光学图像稳定(OIS)等更复杂的应用中,却存在一些影响加速度计操作和性能的限制。加速度计只能提供线性和向心加速度、重力和振动的总和。需要增加陀螺仪才能提取加速度的线性运动信息的某个分量。在运动处理方案中,陀螺仪必须精确地测量角速度旋转运动。

      要满足最终用户的功能预期,需要获得三轴旋转运动和三轴直线运动的信息。一个常见的误解是,要使手持系统具有运动处理功能,工程师需要加入陀螺仪或加速度计,即只需二选一。确实,已经有业界分析师提出这样的问题,“哪一个将在运动传感器竞赛中获胜?”

      


        事实上,要准确地描述线性和旋转运动,需要设计者同时用到陀螺仪和加速度计。单纯使用陀螺仪的方案可用于需要高分辨率和快速反应的旋转检测;单纯使用加速度计的方案可用于有固定的重力参考坐标系、存在线性或倾斜运动但旋转运动被限制在一定范围内的应用。但同时处理直线运动和旋转运动时,就需要使用陀螺仪和加速度计的方案。
        在跟踪倾斜和旋转运动时,加速度计在设备不运动时提供更准确的加速度测量,而MEMS陀螺仪在设备运动时测量精度更高。如图2所示,传感器融合算法通常用来把加速度计和陀螺仪的数据相结合,从而在较宽的频带内实现准确的旋转测量。

      

    我们需要的是怎样的传感器

      经过如上的分析,我们认识到,加速度传感器在运动监测中非常关键的,但在低速度下可提供较为详细的数据,而陀螺仪的使用,可大幅度提高在快速运动中的精度。磁场计可方便的标正地磁方向,GPS导航系统可在大尺度下实现速度,位置的测量。以下是各传感器的情况分析:

      可以看到,传感器使用的越多,其测量性能会更好,但也会不可避免的带来额外问题。如成本大幅度上升,功耗大大提高,软件复杂度不可估计,主CPU处理性能带来瓶颈等问题。

      获得人体运动的关键数据,一个节点是断然不可能解决问题的,需要多节点组网。其设计对成本变得更加敏感,但也同样有好处:我们不需要在每个节点都使用所有传感器。这个问题将在下面进行分析。

    组网节点的需求

      由前述分析,我们可得知,为了获得人体的动作数据,需进行多节点组网。这就需要有如下的解决原则:

    •  不是所有节点都要使用全部传感器,这样可简化系统,节约成本
    • 一主多从的星型网络结构,中央节点将承担数据通信,控制和计算作用
    •   尽可能将计算分布化,减小中央节点计算量,减小延迟。
    •   合适的节点数量

      经过仔细的考虑和分析,我们采用三个子节点,一个中央节点的处理原则。这样可较为准确的获得运动数据,同时不会将系统变得过分复杂。

      以下是各节点的设计方案和介绍:

      

      如左图,显示了各个子节点的系统结构,传感器将数据收集并交给主控CPU,CPU将数据处理后发送给无线通信模组,并实时响应中央节点的信息。供电系统保证节点正常工作。 下图为系统整体结构,各节点将数据压缩返回中央节点,中央节点处理后发送给拓展总线,可以连接电脑或其他外部设备,实现多种控制和运用。

    三.  器件选型和介绍

      (一)总体需求

      如上所述,我们需要低成本,低功耗的传感器,也需要满足低功耗的高速CPU,充分考虑到原型机的设计环境,选择合适的,方便焊接的封装模式也是重要的。

      器件应具备这些条件:

    • l  低电压工作:3.3V核心电平
    • l  小型封装,方便焊接,尽可能选用SOP等封装,避免采用BGA封装的芯片
    • l  良好的抗干扰特性,优先选用数字器件
    • l  具备低功耗模式

    (二)主控CPU选择

      MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。 MSP430 系列单片机的电源电压采用的是 1.8~3.6V 电压。因而可使其在 1MHz 的时钟条件下运行时芯片的电流会在 200~400uA 左右,时钟关断模式的最低功耗只有 0.1uA 。 

      本系统选用的CPU是MSP430F169, MSP430F1xx 基于闪存的 MCU 提供 1.8 伏至 3.6 伏工作电压、高达 60kB 的闪存/ROM 和 8 MIP(带有 FLL + SVS),利用锁相环技术(FLL),将其频率锁定在16MHz。正常工作电流1毫安。

      丰富的片内外设包含了ADC和DAC,可方便的对传感器传递的模拟电压进行分析和采集。同时具备低功耗模式,切换自如。包含了硬件的SPI/I2C总线,和RS232串口。

      具备低成本特性,单样片价格在50元,大批量采购可获得更低的成本。

      

    (三)加速度传感器MMA7455L

      本设计采用了飞思卡尔MMA7455方案,融合了MMA7455L 的I2C 和SPI2 种接口模式,MMA7455L 是XYZ 轴(±2g, ±4g, ±8g)三轴加速度传感器[注:1g=9.807m/s2]。可以实现基于运动的功能,如倾斜滚动、游戏控制、按键静音和手持终端的自由落体硬盘驱动保护,门限检测和点击检测功能等,具有更高的封装高度,但价格却更低。提供I2C和SPI接口,方便与MCU的通讯,,此非常适用于手机或个人设备中的运动应用,包括图像稳定、文本滚动和移动拨号。 

      

      它是全球最薄的三轴加速度传感器,I2C总线需外接上拉电阻,因此本系统采用了SPI方式将其接入。成本低可低至每片20元,数字接口方便使用。

    (四)GPS导航模组

        GPS导航模组选用的是HOLUX 公司的GR-87系列GPS模块,它使用了SiRF star III解决方案,内置了ARM7处理器和1MB的SRAM,具有低功耗,搜星速度快的特点,利用RS232方式接入系统。

      

    (五)电源供应  

          考虑到该系统是为手持移动设计的,除了在软件方面尽可能节约电能以外,选用合适的稳定电源是必须的,故系统选用了锂电池供电,设计了稳定的5V转3.3V稳压芯片和RC滤波电路,为系统提供纯净的3.3V核心电压。使用USB口充电,尽可能的考虑到了充电的方便性。

       另外,一路状态指示灯和开关也是应当的。

             电源具有如下特征:

    • 3.7V,330MAH容量
    • l  支持过冲,过放保护
    • l  充电限制电压5V
    • l  具备状态指示灯,以及一路电源硬件开关。

     

    四.  硬件设计介绍

    (一)子节点介绍

      上图即是已完成的原型机。为了尽可能减小对使用者的影响,本设计采用了小型化的封装。使得其电路尺寸达到了45*24*13mm,重量不足22g(含电池).可方便的挂载于人体的手腕和脚踝上,可靠方便,实用美观。

      实例图给出了系统的佩戴方式。

      系统外形参数:

        长,宽,高:50*28*13mm (封装尺寸,含外壳)

        质量(含电池):21.2g

          (不含电池):9.8g

        节点数量:3个。分别挂载于两个手腕和右脚踝上。

      

      

      节点性能指标

    (1)        动作检测性能:

      2G模式下最高1/64G精度,8G模式下最高1/32G精度。最大承受5000G冲击。

      算法模拟了一个精度为3度的倾角测试仪。

    (2)        无线通信性能

      空旷室外最远距离:50m。

      室内直线最远距离:80m

      测试表明,最远距离下系统丢包严重,为提高系统性能,并未设计反馈重传机制。远距离下会导致控制动作不连续,因此合理的通信距离为15m之内且尽量避开障碍物。

    (3)        电源管理性能:

      3.7V,330mAH锂电池模组,系统设计了过载和过放保护。充电时间为2小时。可不间断运行48小时以上,低功耗模式待机时间理论值为1个月。快速充电特性:5分钟充电可供半小时以上的正常使用。

      由于各工作模式系统状态不同,因此无法给出详细的工作功耗,在3.3v电平下,系统功耗约在8mA左右(理论平均值)。但实际上,大部分的电流消耗在了无线模块以及LED指示灯上。

      

    (二)中央节点硬件成品和结构

    中央节点是整体系统中非常重要的一环,它需要接收,处理数据,并向电脑发送控制和监视信号。同时还要响应电脑端的信号,发送给下位机使其改变工作模式。

       整个系统对中央节点性能要求很高,因此选用了处理能力更为强大的MSP430F449,将其倍频到最快速度,由于直接采用USB供电,故不需考虑省电问题。

    1.   中央节点结构框图

    注意:由于开发时间限制,中央节点的主控CPU电路板不是作者设计的。仅为接口齐全方便而使用之。这也造成了中央节点体积较为臃肿的问题。

      

    2. USB-RS232桥接器设计方案

      作者对于串口编程较为熟悉,自带USB链路的控制芯片会带来众多不确定性,因此本设计采用了专门的RS232转USB桥接器CH340T芯片进行数据转在电脑端可被识别为一路硬件串口。可自适应波特率,性能优异。它直接将CPU产生的3.3V串口信号转换为USB链路数据。

    五.软件框架结构

    (一)总体软件结构

        系统软件分为三个部分,子节点软件,中央节点软件和上位机终端软件,缺一不可。其中,子节点和中央节点涉及嵌入式软件编程,采用了IAR系列编译软件将其编译至MSP430。其细节请查阅相关资料。

    1.子节点软件部分

      如图所示,子节点的运行模式较为简单,系统控制单元管理着工作模式和数据处理算法的选择,主任务采集数据并处理后,将有用的信息通过射频方式发送出去。

      

      子节点的工作流程,通过定时器获得准确的定时,通过中断方式采集和处理数据,每次完成数据处理和发送后,再次检查工作状态。若工作状态由于中央节点的控制而改变,则重新写入配置选项而继续处理。  

    2.    中央节点软件部分

      

      中央节点的软件结构和子节点有所区别,其接受无线模组的数据,进行数据处理,然后将其发送到电脑端,这包含了串行数据协议和动作感应协议。

    3.    电脑监控终端的软件框架

      电脑监控终端采用了MFC结构编制,其软件编译环为Visual C++ 6.0,串口编程采用了MSCOMM控件。使用了多种控件实现了复杂的功能。其使用和介绍请参考《使用说明》,程序编制请参考MFC相关书籍。此处不再赘述。

      

    五.    软件核心算法

    (一)加速度传感器相关

            加速度传感器MMA7455L支持2G,4G,8G加速度模式检测,脉动检测模式和自由落体检测。也包括休眠功能。它们的主要特点如下表:下面将对几类核心算法和问题进行分析。

    工作模式

    工作特点

    适用范围

    案例

    2G检测

    三轴2G量程,1/64G精度

    静态倾角测试仪

    低速动作检测

    四肢倾斜角度测量

    手势动作

    4G检测

    三轴4G量程,1/32G精度

    高速人体运动检测

    快速出拳,快速跳跃

    8G检测

    三轴8G量程,1/32G精度

    高速机械运动检测

    (不适合人体运动)

    碰撞,击打

    脉动检测

    中断输出

    拍打检测

    鼠标单双击运用

    门限和自由落体检测

    中断输出,自由落体时所有值为0

    硬盘保护应用等

    (不适合人体运动)

    休眠模式

    低功耗

    休眠时适用

    不工作休眠

    1.   2G模式下的倾角计算算法

      倾角检测是一项最为简单有效的功能,它可在静止情况下获得很准确的二维倾角值。这在动作检测中相当常用。下面具体讨论它的实现算法。

     在静止情况下,可读取当前X,Y轴的加速度值,则这两个加速度的平方和可为:

            再将上面的计算结果与Z轴上的加速度值做正切运算,即可求出倾角:

       

    2.   手势动作检测

       手势动作检测的主要原理是利用采集的加速度值与存储器中对应的动作进行曲线拟合,以获得对当前动作的判断。但由于CPU本身的处理性能限制以及对判断准确性的要求,不可能也没有必要提取其全部信息进行分析,更多的是将其门限化,获得关键数据。

    它可检测的动作类型有:上,下,左,右,击打,画圆和画十字。

             以下是采用监控终端对不同的动作的加速度曲线进行的记录。

      

      

      下面,我们将向上运动作为具体案例,来分析算法。此时,我们将注意力放在Z轴上(铅垂轴),比较方便进行数据处理。

           如下图,向上运动分为两个部分,一是上升部分,另外是下降部分。曲线图中加速度曲线是理想状态下的加速度值,数字对应点反应了加速度的变化。而速度曲线则是加速度的积分,此处为了说明问题,不强求曲线的绝对准确性。

             1-3点:速度从0改变至负最大,加速度是负的,加速度在点3值为0。

             3-4点:速度从负值变为正值,加速度在点4从正变为0。

      4-1点:速度从正变为0,加速度在点1从负变为0。

      然而,实际采集的加速度曲线并不完美,它有各种毛刺和突变现象,且到现在为止,作者都没有找到一种合适的方法进行曲线拟合。但是,另一种解决办法就是右图所示的思路。它将曲线进行门限判断,成为方波,则加速度值仅需表示为0,1,-1三种情况。但三个加速度值不容易存储和处理,因此做以下变换:

      

    原加速度

    编码为

    +1

    1,0

    0

    0,0

    -1

    1,0

      这样,每个手势都能转换为8位的加速度值,进而能编码为16位的Unsigned int数据类型,与存储的手势动作矩阵相比较,就能获得当前的手势动作。

      但问题依然存在,检测动作可能会出错,这类似于通信中的“误码”问题。直接将不符合的剔除,会在实际使用中造成极大的错判。实际证明,必须采用权重计算的方法,查找最适合的手势动作。步骤如下:

    (1)     存储7种标准手势动作到如下的权重矩阵中:

     

      SP是在内存中存储的7种标准动作信息。P是总共的类型,该例中位7,I是单位

    (2)     若向量Sq存储了当前需要计算判断的手势,采用如下迭代算法:

     

     

         经过几次连续迭代,V(n)存储的值就是当前的动作手势。

    实践证明,这样的匹配算法是合适的,但不同的动作准确率不同,经测试表明,上下测试的准确率能达到80%以上,但画圈和画十字的准确率降低到60%,对于一般的动作感应而言已足够。

            采用其他的更复杂的算法,如利用离散积分获得速度和位移信息,也可以解决此类问题,但也会遇到更多的困难,此部分将在后面描述。

    3. 离散积分算法

    • 理论回顾

             物理学的加速度积分可获得速度,而速度积分可获得位移信息。三轴加速度传感器可实现加速度的测量,但通常3D检测是困难的,因为你无法判断绝对坐标系,且无法判断g的分量,此时,就必须引入陀螺仪甚至磁场计来计算。但此部分,我们仅考虑二维情况,即前提是z轴保持水平,仅计算X,Y方向上速度和位移。这适用于鼠标的情况。

           上述两式给出了加速度,速度和位移三者的关系。但是,数字系统中采集的数据都是离散的,而且采样频率也是一限制值,故积分运算时,将转化为离散积分进行。而准确度和简单有效的算法,则是需要讨论的重点问题。

    •  低通滤波器

      由于信号有有一定的毛刺影响结果,为更好的提高精确度,应使数据过低通滤波器加以平滑。但阶数不能太高,否则会造成对信号变化的不敏感

    • 精确定时

      离散积分中,必须严格的规定数据采样时间以获得准确的间隔。本系统采用了系统的硬件定时器,每秒钟采样100次。这样可大幅度提高精确性。

    • 提高精确度的技巧

      由于无法采用积分中取极限的办法,因此采用一定技巧获得更高精确度是非常有意义的。下图指出了积分中误差的主要原因,即通常的计算中,将每个“小细条”看成矩形,而多余的那些构成了一大主要误差。解决办法是在原来矩形面积的基础上再加上三角形的面积。

      

    • 静止判定

      不论采用何种误差补偿方法,误差都会存在且会随着积分的进行变得越来越大。因此必须考虑消除误差的做法。系统采用了静止检测,当发现超过20次采样值低于门限时,将其判断为静止,这样可将加速度和速度归零。以避免误差的继续增大。

    • 实践中遇到的问题

      此原理并不复杂,左图给出了完整的流程图,并有相应的完整源程序,来源于飞思卡尔半导体公司的技术文档,但作者将其实践后发现了一些不可逾越的问题。

      此原理是可行的,但也许适用于加速度变化较大的应用,如汽车和其他机械。以人移动鼠标动作为例,它仅能提供1-2m/s2的加速度,刚刚超过了传感器本身的门限,这样会大大的影响其精度,而G的干扰,使得一旦测量平面和水平面形成角度差,误差便迅速增大而导致自激现象。因此,必须指出,若想测量低速条件下的动作,陀螺仪的引入必不可少。

    4.陀螺仪-加速度计组合判断简述

      我们先认识下实用准确但更复杂的运用——惯性导航,它会给我们带来另外的思路。

          军事中,惯性导航时一项很重要的运用。它不存在信号的电磁干扰,全天候,机动灵活;其可靠性,小体积和抗恶劣环境的能力使其广泛地应用于战术导弹,炮弹的惯性导航系统。但军事运用中所用的陀螺仪和加速度传感器的精度要求都极高,其陀螺漂移不能超过1度/小时,加速度零偏不超过10-6m/s2。强大的传感器加上极准确优秀算法,可使得飞行器在不与外界通信的条件下通过计算获得当前需要的数据。但其成本也是惊人的,一枚陀螺仪传感器的价格可达几万美元,且对中国实行禁运。

      微型惯性测量组合系统结构可分为平台式惯性导航系统(惯性导航组合安装在惯性平台的台体上)和捷联式惯性导航系统(惯性导航组合直接安装在载体上)。后者省去平台,所以结构简单、体积小、维护方便,但仪表工作条件不佳,影响精度且计算工作量大。而本系统,可将其看成是大大简化的捷联式惯性系统。

          下图显示了采用陀螺仪和加速度计组合的动作判断方法。其原理是陀螺仪将外界刚体的转动抵消,这样加速度计就可在绝对坐标系下进行工作,配合高精度的加速度计,就可获得非常精确地离散积分结果。

      而这种抵消运算的方法,可简单的表述为加速度矢量坐标运算和姿态矩阵运算。这些运算方法,由于硬件和时间限制,作者并未实际运用于本系统中。

      下面简述这种矩阵变换的原理,其涉及了很复杂的矩阵运算,因此仅做简要介绍。更详细的理论可查看有关惯性导航的书籍。

    (1) 地理坐标系和载体坐标系

            由于不涉及大尺度的导航运用,我们将地理坐标系看成标准三维空间。规定铅垂方向,正北和正东方向。

        载体坐标系是固连在载体上的坐标系,假设OXYZ是载体坐标系,由于它与运动物体固连在一起,因此载体坐标系的中心通常都取在物体的重心处,OX轴沿载体向前,OY轴沿载体向右,OZ轴垂直于OXY面并且x、Y、z轴构成右手坐标系。微惯性测量组合的加速度计和陀螺仪都是直接安装在载体上的,因此传感器的输出信号就是微惯性测量组合在载体坐标系相对于惯性空问的各个方向上所敏感到的信号。载体坐标系与载体固连, 而我们的任务,则是地理坐标系和载体坐标系的变换,以获得在地理坐标系上的绝对运动状态。

      

    (2)  两种坐标系的变换算法

    假设开始时载体坐标系于地理坐标系重合与坐标系OXYZ如图2-6。载体坐标系Oxyz先绕Oz轴转动 ,得到坐标系 ,再绕 轴转动 ,得到坐标系 ,最后绕 转动 ,得到地理坐标系 ,这是载体相对于地理坐标系的姿态角 , , 中分别称为载体的航向角,俯仰角和滚动角,根据坐标轴转动的顺序,载体坐标系 到地理坐标系Oxyz的转换矩阵 为:

     

      上述的旋转顺序是z.Y.X,事实上,可能的旋转顺序有12种,不同的旋转顺序对应不同的转换矩阵,对于其余的11种情况,坐标变换矩阵可以用同样的方法推导出来。不同的旋转顺序就对应于不同的Euler角,如何选择旋转顺序不仅是一个理论问题,也是一个工程问题。当矩阵 求得以后,就可以根据载体坐标中测量的加速度求得在相应的地理坐标系中的加速度,从而便可以进行导航计算。

    (3)   可行性分析

      上面的转换矩阵,将涉及大量的线性和非线性运算,而为了提高精度,必须采用浮点算法。但这不是问题的关键,即使这样做了,离成功还很远。我们还需要以下的工作:

    • l卡夫曼滤波或中值滤波以消除噪声干扰
    •  进一步改进的离散积分算法,以获得对干扰和偏离的不敏感性。

      维数的增加会导致算法复杂度倍增,改进算法是必须的工作。而现有模型已经无法满足计算要求,需引入方向余弦矩阵的正交化和四元数的运算。而为了实现准确的手势轨迹判断,必须安装很高精度的三轴加速度传感器和陀螺仪。并依赖复杂的算法和无线数据传送。这些工作已经超出了一个普通本科生能力范围。而成本亦是极大地难题,三轴陀螺仪的价格普遍在200元每个以上,而精度足够的加速度传感器亦在100元以上。作者走到这步时,不得不选择放弃。因为没有精确度很高的硬件和强大的处理性能,即使再强的软件算法也是无可奈何的事情。

    七. 无线组网应用

    (一)无线通信方案

      当前主流通信方案有以下几类,如蓝牙,802.11b(WIFI)以及基于2.4GHZ的ZIGBEE等等协议,但它们在这个运用中都不是最适合的,因为,本系统要求高速而简单的星型组网模式,CPU的主要任务应尽可能的安排给数据采集和处理,是不适合放置动辄几十KB的无线协议和算法的。因此,选用合适的,低功耗的RF方案势在必行。

      由作者的经验,选择了由NORDIC公司生产的NRF24L01型RF射频通信模组进行点对多点通信。作者对其较为熟悉,因此大大缩短了RF无线通信所需的时间。

      它具备以下特点:

    (1) 2.4Ghz 全球开放ISM 频段免许可证使用

    (2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合

    (3) 126 频道,满足多点通信和跳频通信需要

    (4) 内置硬件CRC 检错和点对多点通信地址控制

    (5) 低功耗1.9 - 3.6V 工作,待机模式下状态为22uA;掉电模式下为900nA

    (6) 内置2.4Ghz 天线,体积小巧15mm X29mm

     

      以上为其系统结构图。

       该设备的无线系统应具有如下的需求:

    1.    通信速率要求较高,为保证尽可能短的延时,数据包可能每秒发送100次以上。

    2.    可靠性要求低,不需要反馈重传机制,以提高速率。

    3.    提供中断设计,使得在发送和接受数据完成或开始时提供中断提示。

    4.    简单星型组网设计,中央节点主要接收数据,子节点主要发送数据。但中央节点也会发送控制指令,改变子节点的工作方式。

    5.    具备低功耗休眠状态

    6.    尽可能简洁的通信协议,方便程序编制和数据处理。

      设计的NRF24L01模组将板载于主控板上,利用SPI总线接入系统,中断指示接口IRQ接入CPU中断脚。系统采用Enhanced ShockBurstTM收发模式。Enhanced ShockBurst TM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。Enhanced ShockBurstTM技术同时也减小了整个系统的平均工作电流。

      三个子节占用三个子频道,芯片硬件支持最多6个频道的数据侦听,这样做尽可能的避免了干扰。

    八. 应用介绍和展望

    (一)项目当前的进度

             该项目进行了两个月,取得了很多的进步和成就,得到了很多老师和同学的认可,也促使我写完这篇技术文档。对于一个普通大学生而言,技术文档可能并不能一针见血的指出问题的关键。我知道去逛电子市场被人愚弄的痛苦,也知道焊接电路突然焊错而几百块钱付之一炬的艰辛。但项目依旧继续。马上考研的我已不能继续投入我更多的心血。但我想说,我在努力。

             众多的更新和运用并没有写入该文档,因为它们不涉及核心算法。但可罗列如下:

    l  上位机3D绘图-可3D显示当前模组的姿态,并加以动态着色

    l  FPS游戏模式,一只手模拟鼠标,一只手模拟键盘,可方便的实现运动和视角控制,但尚无法建立对射击和其他快捷键的控制。

    l  双手极品飞车模式

    l  更加美化的产品外包装。

    l  其他更多拓展

      我依然无法原谅自己没有使用陀螺仪这一致命的错误,使得很多问题没法得到根本解决。它的作用不仅仅可用于离散积分的角度校正,更能获得很多让人惊异的功能。可以说,使用加速度计,该系统吸引了别人的眼球,若再加上陀螺仪,她就足够让人欢呼雀跃了。但这些,我却没有做到。

      感慨之余,我不得不认识到,产品开发非常有可能产生全部推倒重来的结果。但是这是必须的,但对于一个学校的项目而言,要求这么多也许有点太过苛刻了。作者不想在这篇技术文档中袒露太多感情因素,但若说关注,仅仅自己一个人是远远不够的,而且,即时做出来了,又能如何?

    (二)总结和展望

      不同于学校里的很多课程报告,一些内容很空泛的总结写在文章的结尾作为结束。这篇技术文档的读者,读者如果真的能看到这个位置,我就已经很感激了。

      如果机会成熟,该项目会在作者考研结束,即2011年时继续开工,那时作者将会将硬件方案进行扩充,主要涉及以下几点:

    l  重新设计电路板,使得其满足更小型化和精致的封装

    l  改用其他更高级型号的传感器——精度更好,当然价格更贵的加速度传感器,三轴陀螺仪。

    l  重新加强和拓展软件功能,修改无线通信和其他信道的通信协议

    l  更多精细的优化判断算法

    l  更小型化的中央处理节点,使得其真正U盘化。

      而我更希望,她在我的手中,变得真正强大起来,获得更多的人的认可。

  • 相关阅读:
    穷举
    菱形
    docker安装cloudera manager,切换cloudera-scm用户报错can not open session
    修改cloudera manager的端口号
    postgresql拓展if、ifnull、group_concat函数
    clion调试postgresql
    Java面向切面原理与实践
    Spring-boot非Mock测试MVC,调试启动tomcat容器
    spring-cloud-feign 使用@RequetParam报错QueryMap parameter must be a Map: class java.lang.String
    linux虚拟机拓展大小
  • 原文地址:https://www.cnblogs.com/buptzym/p/2584012.html
Copyright © 2020-2023  润新知