头部跟踪系统设计在虚拟听觉的应用毕业论文(62页).docx

上传人:1595****071 文档编号:36833102 上传时间:2022-08-29 格式:DOCX 页数:61 大小:502.30KB
返回 下载 相关 举报
头部跟踪系统设计在虚拟听觉的应用毕业论文(62页).docx_第1页
第1页 / 共61页
头部跟踪系统设计在虚拟听觉的应用毕业论文(62页).docx_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《头部跟踪系统设计在虚拟听觉的应用毕业论文(62页).docx》由会员分享,可在线阅读,更多相关《头部跟踪系统设计在虚拟听觉的应用毕业论文(62页).docx(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-头部跟踪系统设计在虚拟听觉的应用毕业论文-第 54 页头部跟踪系统设计在虚拟听觉的应用毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学

2、校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位

3、论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不

4、及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前

5、的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教

6、研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文

7、(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日目录摘要2Abstract2第一章 绪论21.1 课题研究背景及意义21.2 虚拟声音与头部跟踪21.2.1 虚拟声音生成21.2.2 头部跟踪2第二章 头部跟踪系统设计22.1 头部跟踪作用与原理22.2 DCM互补滤波器设计22.2.1 DCM矩阵22.2.2 互补滤波器设计22.3 IMU计算方程22.3.1 旋转的表示方式22.3.2 四元数22.3.3 由传感器数值与四元数22.

8、3.4 四元数微分方程22.4 系统实现22.4.1 芯片选择22.4.2 硬件电路22.4.3 软件实现2第三章 3D声音渲染系统23.1 3D声音渲染原理23.2 光线追踪算法23.3 房间冲击响应计算23.3.1 HRTF数据库介绍23.3.2房间冲击响应计算方法23.4 软件实现23.4.1 系统构架23.4.2 多线程声音卷积播放2第四章 整体系统与效果24.1 整体系统24.2 效果说明2英文文献2英文文献中文翻译2总结2致谢2参考文献2附录2头部跟踪核心代码2imu.c23D声音渲染核心代码2hrtf.cpp2wav.c2Primitive.cpp2main.cpp2有关图纸2头

9、部跟踪系统原理图2摘要虚拟听觉技术是继视频技术之后又一重要的人机接口。本课题实现了在虚拟环境中加入与虚拟场景相对应的三维虚拟声音,使收听者在虚拟环境中收听到的声信号逼近在真实环境声场中收听到的声信号,从而增强虚拟现实环境的逼真度和沉浸感。此设计中使用光线追踪的方式模拟声音的传播,通过与头相关函数数据库结合,计算出双耳房间冲击响应,使之与原始声音卷积即可得到与房间真实情况相仿的三维虚拟声音。为了使听者真实感提升,本课题将使用捷联惯导方法实现的头部跟踪系统与虚拟听觉相结合,可以给用户提供更逼真的交互式听觉体验。本设计实现了一个半实时的包含头部跟踪的三维声音渲染系统,效果良好,头部跟踪系统每秒计算姿

10、态400次,每秒上传50帧数据给计算机,精度1-2,三维声音渲染部分可以连续播放声音,房间冲击响应每秒钟更新一次,声音方位感明显。关键词:头部跟踪,三维声音渲染,头相关函数, 双耳房间冲击响应AbstractVirtual auditory is another important technology in human machine interface since video technologies. This design combined the 3d virtual sound rendering with a virtual scene, making the listeners

11、 hear acoustic signals that approximate to sound in a real scene, thereby enhancing the fidelity and immersive of the virtual reality environment. The system uses ray tracing to simulate sound propagation, with the head-related transfer function(HRTF) database from the MIT KEMAR dummy head model the

12、 system generates the binaural room impulse responses(BRIR) of the virtual scene. After convolving the original sound with the BRIR, a virtual sound that is similar to the sound in a real environment can be generated. This design also combined the head tracking system that uses the inertial navigati

13、on method with the virtual auditory, which can provide users with a more realistic interactive listening experience. This design has implemented a half real time 3d sound rendering system with head tracking. The head tracking system calculates postures 400 times per second, uploads data 50 frames pe

14、r second through Bluetooth. The 3D sound rendering system can render continuously, updates binaural room impulse response once per second.Key words: Head tracking, 3D sound rendering, head-related transfer function (HRTF), binaural room impulse response (BRIR).第一章 绪论1.1 课题研究背景及意义虚拟现实环境不仅追求真实的视觉效果,还需

15、有身临其境的听觉效果。虚拟听觉技术是继视频技术之后又一重要的人机接口。虚拟听觉技术就是在虚拟环境中加入与场景对应的三维虚拟声音,使收听者在虚拟环境中收听到的声信号逼近在真实环境声场中收听到的声信号,从而增强虚拟现实环境的逼真度和沉浸感。在移动平台上,音乐的再现往往是通过耳机来实现。而通过耳机的音频再现通常给人的感觉是不自然的,因为声源被定位在头的内部,如果使用3D虚拟声音技术,可以将声源位置移动到外部,给人更好的听觉感受1。心理声学的实验也表面,使用了虚拟声音技术,给以给人接近真实情况的感知。传统的虚拟听觉系统并没有将人头部的运动和姿态考虑进虚拟声音系统,这样限制了声音与人的交互,减少了真实性

16、。虚拟声音中的前后混叠现象十分明显1。现实中,人们可以通过转动头部,感受声音新位置,从而准确判断声音的新位置,减弱前后混叠的影响。所以在虚拟声音中加入头部跟踪系统是必要的。使用了头部跟踪可以大大提高虚拟声源位置的精度。可以使前后混叠发生的平均几率由28%降低到7%1。本课题将头部跟踪系统与虚拟听觉相结合,可以给用户提供更逼真的交互式听觉体验。1.2 虚拟声音与头部跟踪1.2.1 虚拟声音生成虚拟听觉生成的主要算法为:头相关函数(HRTF)和基于光线追踪(Ray Tracing)的算法。头相关函数用人头录音方式记录了不同方向声源在人耳处的冲击响应,将声音和头相关函数卷积,就可以得到来自该方向的声

17、音。基于光线追踪算法的虚拟听觉采用光线追踪来模拟声音的传播,通过计算可以得到声音从声源-经过场景的反射、衍射、折射-到听者的房间BRIR响应。由于声场的波长比场景中障碍物的尺寸大,所以使用这样的方法计算散射是合适的2。图1-1 HRTF数据以及计算出的 BRIR1.2.2 头部跟踪头部跟踪系统的应用十分广泛,它可以用来捕捉人头部的运动,近年来在游戏、虚拟现实领域发挥着越来越重要的角色。其实现主要有基于光学和基于捷联惯导算法两种方式。基于光学的方式比起捷联惯导方式的优势在于可以检测到头部的平动,而捷联惯导方式只可以检测到头部转动。不过光学方式需要高速红外摄像头,实现成本很大,同时实时性并不好。鉴

18、于本系统用于虚拟听觉,对转动要求高,平动部分可以使用键盘控制,所以我们将使用捷联惯导算法来实现头部跟踪系统。为了对传感器数据滤波,本系统中使用的是DCM互补滤波3方法,虽然Kalman滤波20方法可能会有更好的效果,不过考虑到在单片机中计算的时间复杂度,而且两者实际效果差距相似,所以我们使用互补滤波方法。图1-2 头部跟踪系统 人类听觉在水平面上可以对声源做非常准确的定位,因为水平面上不单单是依靠单耳来确定位置,而是依靠双耳的时间差ITD、强度差ILD来定位。而确定仰角时只能依靠单耳信息,也就是人头部、身体、外耳廓对声音频谱的滤波作用,所以是不准确的1。由于人类对水平方位感知更明显,在头部跟踪

19、系统中我们着重考虑水平方向的精度。在水平面上,人类对声音角度感知的最小值是1左右,少于1的角度变换人类无法察觉。本系统的精度在水平方向是1-2,所以是符合虚拟声音对头部跟踪的要求的。第二章 头部跟踪系统设计2.1 头部跟踪作用与原理在虚拟现实系统中,如果可以知道用户头部的转动姿态,根据这些信息调整虚拟现实中场景声音的生产,使用户的获得更真实的感受。图2-1 头部跟踪在虚拟听觉中的作用如果没有头部跟踪,用户头部旋转了90度,虚拟声源的位置也会随之旋转90度;而如果加上头部跟踪系统,转动时可以将声源位置反向旋转同样角度,这样,声音对于用户依然保持在同一位置。图2-2 头部的转动头部跟踪系统的本质是

20、通过传感器来检查头部在X, Y, Z三轴方向的转动角 Roll ,Pitch , Yaw。使用加速度传感器可以检测到重力的方向,有了重力的方向,我们就可以用之计算出Roll和Pitch信息;使用地磁传感器可以检测出地磁场的方向,使用地磁信息,我们可以计算出Yaw方向的数值。不过由于无论是重力计还是地磁计,它的响应速度都是较慢的,为了纠正他们的数据,还需要使用陀螺仪来检测角速度。使用角速度信息来加快姿态调整。传感器数据波动较大,如何更好地融合加速度计、地磁计和陀螺仪的数据计算出准确的姿态是亟待解决的问题,这就需要DCM互补滤波器。2.2 DCM互补滤波器设计传感器输入数据不稳定,为了得到稳定的结

21、果,需要融合不同的传感器数据进行滤波。2.2.1 DCM矩阵首先,我们需要定义2个坐标系:地理坐标系:真实世界所在的坐标系。重力向量为(0,0,1g),地磁向量是(0,1,x)两个三维向量,对于地磁我们不关心其垂直分量。头部坐标系:上面有加计、陀螺、电子罗盘传感器,三个三维向量。图2-3 两个坐标系的转换方向余弦矩阵(Direction Cosine Matrix)是表示从坐标系OXYZ到坐标系Oxyz变换的矩阵,使用它,我们可以实现地理坐标系与头部坐标系这两个坐标系间的转换。如上图所示,这是一个3维空间中的坐标系变化。在我们的系统中,OXYZ是世界坐标系,Oxyz是头部跟踪系统所在的局部坐标

22、系。使用DCM的目的也就是将坐标从世界坐标系变换到头部坐标系,以便进行姿态计算。设X, Y, Z为世界坐标系中的3个单位向量:X=100 Y=010 Z=001 设x, y, z是局部坐标系中的3个单位向量:在全局坐标中:xG=xxGxyGxzG则:xxG=xGcos(X,xG)其中cos(X,xG)是X和xG的夹角。所以有:即为DCM矩阵,表示从世界坐标系到头部局部坐标系的变换。且有。2.2.2 互补滤波器设计图2-4 互补滤波示意图为了准确融合加速度、地磁、角速度三个传感器的结果,我们需要使用互补滤波器。这样做有2个好处:1、高通滤波器可以抑制陀螺仪低频漂移2、低通滤波器可以很好的抑制加速

23、度计的噪声也就是说,加计和地磁传感器在长久来看是很准确的,而陀螺仪在短时间内是很准确的,结合二者数据,可以得到较优的结果。伪代码:angle = (K)*(angle + gyro * dt) + (1-K)*(x_acc);上述伪代码即为互补滤波器融合加计和陀螺仪数值的简单例子。2.3 IMU计算方程IMU(Inertial measurement unit, 惯性测量单元)是用于姿态解算的单元。姿态解算运算中需要用到大量的旋转操作,所以选择合适的旋转方式对系统的计算十分重要。2.3.1 旋转的表示方式常用的选择表示方法有:旋转矩阵、欧拉角、四元数。旋转矩阵、欧拉角、四元数主要用于:向量的旋

24、转、坐标系之间的转换、方位的平滑插值计算。表2-1 各旋转表示方法比较任务/性质旋转矩阵欧拉角四元数在坐标系间(物体和惯性)旋转点能不能(必须转换到矩阵)不能(必须转换到矩阵)连接或增量旋转能,但经常比四元数慢,小心矩阵蠕变的情况不能能,比矩阵快插值基本上不能能,但可能遭遇万向锁或其他问题Slerp提供了平滑插值易用程度难易难在内存或文件中存储9个数3个数4个数对给定方位的表达方式是否唯一是不是,对同一方位有无数多种方法不是,有两种方法,它们互相为共轭可能导致非法矩阵蠕变任意三个数都能构成合法的欧拉角可能会出现误差积累,从而产生非法的四元数欧拉角显然是最直接的方式,与人类对旋转的感知最为接近,

25、但是欧拉角会出现万向锁这样的问题,即三轴系统中由于其中一轴旋转90度导致损失一轴的自由度,三轴系统的自由度退化为2轴。也就是说:当任意一轴旋转90的时候会导致该轴同其他轴重合,此时旋转被重合的轴无法产生任何效果,这就是万向锁(Gimbal Lock)。图2-5 万向锁作为旋转变换,矩阵是必要的,可以把四元数或欧拉角作为主数据,同时维护一个旋转矩阵,当四元数或欧拉角变化时更新矩阵。欧拉角虽然占用更少的内存(比四元数少1/4),但是转换到矩阵的时间要比四元数更慢一些。平滑的插值只能用四元数完成。直接用欧拉角插值会产生奇怪的转动。综上考虑,我们选择四元数作为旋转的表示方式,因为四元数插值方便、没有万

26、向锁问题、运算速度较快。2.3.2 四元数四元数是由哈密顿在1843年爱尔兰发现的。当时他正研究扩展复数到更高的维次(复数可视为平面上的点)。他不能做到三维空间的例子,但四维则造出四元数。根据哈密顿记述,他于10月16日跟他的妻子在都柏林的皇家运河(Royal Canal)上散步时突然想到i2=k2=j2=ijk=-1的方程解。之后哈密顿立刻将此方程刻在附近布鲁穆桥(Brougham Bridge,现称为金雀花桥 Broom Bridge)。这条方程放弃了交换律,是当时一个极端的想法(那时还未发展出向量和矩阵)4。四元数常见于控制论、信号处理、姿态控制,用来表示旋转和方位。这是由于四元数转换组

27、合比很多矩阵转换组合在数字上更稳定。四元数一般定义如下:q=w+xi+yj+zk其中 w,x,y,z是实数。同时,有:i2=j2=k2=-1四元数也可以表示为:q=w,v其中v=(x,y,z)是矢量,w是标量,虽然v是矢量。当用一个四元数乘以一个向量时,实际上就是让该向量围绕着这个四元数所描述的旋转轴,转动这个四元数所描述的角度而得到的向量。四元数加法:四元数取模:四元数乘法:四元数共轭:四元数倒数:对于四元数,我们最重要的是用是用它来旋转一个向量,假设有一个用四元数表示的旋转为:,有一个向量 ,则经过旋转后的结果v为:其中 q*为四元数q的共轭四元数,是转动角度。有了四元数,如果应用于变换,

28、我们还需要将四元数转化成相对应的矩阵。把上述的表示为Qv,则有上式在其次坐标下可以简化为:当N(q)=1时,上式可以进一步简化为:2.3.3 由传感器数值与四元数我们可以获取到地磁、加速度计和陀螺仪的数值,根据这些数值我们可以实时更新四元数方程,使四元数表示的方位与头部所在的姿态保持一致。首先,我们需要根据之前计算出的四元数来反算出前一时刻头部所在的姿态的重力方向,然后,计算此时传感器得到的重力信息和前一时刻的差,更新四元数。 上述公式即为由前一状态四元数计算出重力参考方向。Vx, Vy, Vz分别为重力在三轴的分量。这个公式来自从2.3.1中的:重力向量就是Q的第三行。与重力一样,我们也需要

29、计算地磁场的参考方向,并且依据地磁的方向来更新Yaw方向的四元数。地磁参考方向计算如下: hz=2*mx*(q1q3-q0q2)+2*my*(q2q3+q0q1)+2*mz*(0.5-q1q1-q2q2); bx = sqrt(hx*hx) + (hy*hy);bz = hz; mx,my,mz是地磁传感器得到的数值的归一化表示,hx,hy,hz是计算出来的地磁参考方向。由于我们并不关心地磁垂直方向的量,所以把地磁的y轴和x轴做了融合,得到新的参考方向bx,bz。之后是由上一时刻四元数表示的方向计算地磁的方向:上公式依旧来源于2.3.1中的有了重力和地磁的参考方向,我们可以计算出传感器得到的方

30、向与场的方向间的差值,这种求差值本质上是进行了一次向量叉乘运算:其中,是传感器和场方向的差,是加速度计数值,是重力场参考方向,是地磁计数值,是地磁场参考方向。将向量展开成分量,则有: ex = (ay*vz - az*vy)+(my*wz - mz*wy); ey = (az*vx - ax*vz)+(mz*wx - mx*wz); ez = (ax*vy - ay*vx)+(mx*wy - my*wx);最后,我们需要把陀螺仪的数值融合到误差E中,对E做一些PID控制,使结果更加平滑准确。 gx = gx + IMU_Kp*ex + exInt; gy = gy + IMU_Kp*ey +

31、eyInt; gz = gz + IMU_Kp*ez + ezInt;上述伪代码中的gx,gy,gz即是陀螺仪的三轴的数值,与上面的E相融合以后,就可以使用在四元数微分方程里来更新四元数了。2.3.4 四元数微分方程数值分析中,龙格库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明5。下面举一个具体例子来说明龙格库塔方法。令初值问题表述如:则,对于该问题的如果使用四阶龙格库塔方法由如下方程给出:其中下一时刻的输出yn+1是由当前值加上估算的斜率与时间差的乘积。估算的斜率是k1,k2,k3,k4斜率

32、的加权平均,中点的斜率有更大的权值:上例中使用的是四阶方法,考虑到单片机的处理速度,我们使用的是1阶龙格库塔法。设有一个矩阵微分方程:X(t)=fXt,w(t)其一阶龙格库塔的解为:Xt+T=Xt+TfXt,w(t)对于四元数Q,其微分方程为:Q=12Q*蠅B矩阵形式为:则带入一阶龙格库塔的解为 qt+T=qt+T*12蠅b*q(t)即:表示为伪代码为: iq0 = (-q1*gx - q2*gy - q3*gz)*halfT; iq1 = (q0*gx + q2*gz - q3*gy)*halfT; iq2 = (q0*gy - q1*gz + q3*gx)*halfT; iq3 = (q0

33、*gz + q1*gy - q2*gx)*halfT; 其中,iq0,iq1,iq2,iq3分别为Q的四个分量的增量,halfT是上面公式中的12T。Qnext=Q+iq2.4 系统实现2.4.1 芯片选择实现头部跟踪设备时,我们综合考虑单片机的性能、价位、资料丰富程度等因数,选择了STM32系列的STM32F103C8T6单片机作为系统的处理器。STM32是基于ARM Cortex-M3内核的32位微处理器,最高到72MHz的主频,可以实现单周期乘法和硬件加速的除法,它以8位机的价格实现了32位机的性能。同时资料丰富,爱好者众多。系统中主要的传感器芯片主要有2片:MPU6050:3轴加速度计

34、与3轴陀螺仪HMC5883L:3轴电子罗盘系统中还使用了蓝牙模块HC-06与PC通信。图2-6 MPU6050MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。MPU-6050整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术。MPU-6050的角速度全格感测范围为250、500、1000与2000/se

35、c (dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为2g、4g8g与16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。MPU6050大量使用在姿态检测、体感游戏与手机中。图2-7 HMC5883LHoneywell HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带Honeywell专利的集成电路包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在 12的 12 位模数转换器.简易的 I2C 系列

36、总线接口。HMC5883L 是采用无铅表面封装技术,带有 16 引脚,尺寸为 3.0X3.0X0.9mm。HMC5883L 的所应用领域有手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统。 HMC5883L 用Honeywell各向异性磁阻(AMR)技术,该技术的优点是其他磁传感器技术所无法企及。这些各向异性传感器具有在轴向高灵敏度和线性高精度的特点.传感器带有的对于正交轴低敏感行的固相结构能用于测量地球磁场的方向和大小,其测量范围从毫高斯到 8 高斯(gauss)。图2-8 HC-06同时,为了让系统可以无线的与PC通信,发回姿态数据,我们选择HC-06蓝牙串口芯片作为通信芯片。HC

37、-06有以下特点:蓝牙 2.0 带 EDR, 2Mbps-3Mbps 调制度内置 2.4GHz 天线, 用户无需调试天线外置 8Mbit FLASH低电压 3.3V 工作(3.1V4.2V)配对时3040MA波动,配对完毕通信 8MA可选 PIO 控制标准 HCI端口(UART or USB)作为一个完整的蓝牙模块,HC06给用户使用蓝牙提供了极大地便利。在使用HC-06芯片前,需要使用串口的TX和RX接入HC-06的TX和RX来配置HC-06的蓝牙配对信息。HC-06的默认波特率是9600,首先将电脑串口也设为9600波特率,然后发送”AT”,如果HC-06返回”OK”,则代表HC-06工作

38、正常。本系统使用的是115200,所以需要改变系统的波特率。改变波特率使用:AT+BAUDn,n与波特率的对应关系是:1:1200;2:2400;3:4800;4:9600;5:19200;6:38400;7:57600;8:115200;9:230400;A:460800;B:921600;C:1382400所以本系统中需要执行”AT+BAUD8”,如果设置正常,HC-06会返回”OK115200”,此后,HC-06的串口波特率已经改为115200,所以,PC上的波特率也需要做响应的修改。不建议用在超过115200的波特率,信号的干扰会使系统不稳定。设置超过115200后用电脑无法使用,要用

39、单片机编程于高于115200才能使用此波特率。用AT命令设好波特率后,下次上电使用不需再设,可以掉电保存波特率。发送”AT+NAMExxx”可以设置搜索蓝牙时的蓝牙显示名。发送”AT+PIN1234”可以设置于其他蓝牙设备配对时的配对密码,出厂默认密码是1234。2.4.2 硬件电路图2-9 头部跟踪系统PCB预览设计头部跟踪系统时候,原理图使用Cadence Orcad绘制,PCB使用Cadence Allegro绘制。上图为PCB的3D预览和布局图。制版选择在深圳的PCB工厂,他们提供高质量快速的小批量PCB打样业务。PCB第一次打板时上有电路问题,第二次重新调整电路后加工得到现在使用的头

40、部跟踪系统。电源部分:图2-10 电源电路电源电路部分主要有AMS1117作为稳压芯片,保证系统的Vcc维持在3.3V。AMS1117边的10uF电容用于滤去电源低频噪声, 0.1uF电容用于滤去电源高频噪声。D4是一个发光二极管,提示系统是否上电。单片机电路:图2-11 单片机电路单片机电路中,系统使用8M外部晶振,内部通过PLL倍频到72MHz;BOOT0和BOOT1都用10K电阻下拉到GND,BOOT0和BOOT1这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序:BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。BOOT1=0 BOOT0=1 从系

41、统存储器启动,这种模式启动的程序功能由厂家设置。BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。蓝牙电路:图2-12 蓝牙电路HC-06模块将蓝牙封装成串口,只需要将单片机串口的TX和RX接过来,就可以使用蓝牙通信了。LED D6的作用是提示蓝牙状态,蓝牙未配对时D6会不停闪烁,配对成功时D6会保持常亮状态。惯性测量模块电路:图2-13 惯性导航电路惯性测量部分主要是MPU6050和HMC5883L,它们的SCL和SDA上拉了10K的电阻接到STM32的PB6和PB7,通过这两个端口来传输数据。图2-14 实物图 左图为背面 右图为正面2.4.3 软件实现头部跟踪软件

42、部分使用Keil 4开发,用j-link v8下载和调试程序。代码结构:SRCalgorithm:IMU算法SRCalgorithmimu.c(.h):惯性导航姿态检测实现SRCdriver:驱动程序SRCdriverdelay.c(h):基于system tick的延迟SRCdriverhmc5883l.c(h):hmc5883l地磁传感器读取SRCdriverioi2c.c(h):GPIO模拟i2c驱动SRCdrivermpu6050.c(h):mpu6050读取SRCdrivertimer.c(h):32位高精度计时器,用于算法时间差计算SRCdriverUARTs.c(h):串口通信S

43、RCmain.c:主程序软件部分总体的框架是: While(1) 读取MPU6050 读取HMC5883L 姿态计算 IMU_getYawPitchRoll 蓝牙串口发送帧头标记位 蓝牙串口发送加计数值 ax ay az 蓝牙串口发送陀螺仪数值gx gy gz 蓝牙串口发送地磁计数值mx my mz 蓝牙串口发送解算的姿态yaw pitch roll其中最核心的是姿态解算部分void IMU_getYawPitchRoll(int16_t * angles,int16_t *data),*angles是指向解算结果的指针(angles0是yaw, angles1是pitch, angles2是roll),*data是指向传感器数据的指针(data0, data

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com