【技术实现步骤摘要】
智能机姿态测定及虚拟现实漫游方法
本专利技术涉及信息
,具体涉及智能机姿态测定及虚拟现实漫游方法。
技术介绍
虚拟现实技术是让用户沉浸在智能机显示屏展现的虚拟或真实三维场景中,将虚拟目标标签叠加到其中,提示交互信息给用户。传统的三维虚拟场景,如数字三维城市、游戏等应用已经非常成熟,但是在三维场景里漫游却主要通过鼠标、键盘、滚动球等传统控制设备,控制设备的方向和观察到的实际场景无法直观的对应,渲染设备庞大而笨拙,这都会给操作者带来极大不便,影响了这些三维数字技术的广泛应用。因此迫切需要一种将控制设备与显示设备合二为一的非常直观轻便的智能机定姿态与渲染技术。本专利技术正解决了这个问题。由于智能机姿态不一样,同样位置看到的现实场景不一样,智能机姿态精度影响导航精度和虚拟现实漫游仿真精度,因此智能机姿态的精确测定具有重要意义。虚拟现实应用中对智能机姿态精度提出了更高要求。传统的智能机姿态测定,主要利用方向传感器单轴航向角数据信息,系统对智能机姿态摆放有特定要求,如要求智能机平行于地面,或垂直于地面摆放,而虚拟现实应用中用户手持智能机的姿态千变万化,并不一定严格平行或者垂直于地面,这将导致导航方位不准。此外智能机姿态测定的误差将带来虚拟现实漫游误差,影响用户体验,因此迫切需要一种考虑智能机X-Y-Z三轴旋转的姿态测定算法。基于位置的服务LBS日益受关注,但用户更关心的不仅是位置,而是自己与目标间的方向和距离。很多老年人和方向感不强的人很难将实际看到的生活场景与地图中的东南西北联系在一起,因此智能机任意角度摆放情况下,叠加在实景视频上的目标信息及其相关服务将给用 ...
【技术保护点】
智能机姿态测定方法,包括以下步骤:1)定义局部坐标系:局部坐标系是指原点在智能机,Z轴指向地球表面法方向,Y轴或X轴与纬线相平行的坐标系;或局部坐标系原点位于地球上任意一点,Z轴与重力方向一致,且 若智能机磁力计指示方向是北,则北代表局部坐标系X轴,西代表局部坐标系Y轴;若智能机磁力计指示方向是东,则东代表局部坐标系X轴,北代表局部坐标系Y轴;若智能机磁力计指示方向是南,则南代表局部坐标系X轴,东代表局部坐标系Y轴;若智能机磁力计指示方向是西,则西代表局部坐标系X轴,南代表局部坐标系Y轴;2)测定智能机姿态矩阵Rg Rg是一个相对于局部坐标系的3x3单位正交矩阵,Rg由下法之一获得:方法(1)采用重力传感器与磁力计或方向传感器如果智能机有重力传感器,且有磁力计或方向传感器,用以下公式(1)计算Rg(1)其中vax,vay,vaz是智能机测出来的智能机重力加速度传感器的x,y,z三个方向的值,或是这三个值经滤波的结果;Ra是重力传感器芯片相对于智能机的姿态转换矩阵; L=若智能机检测到的重力加速度传感器定义为负值:当≤0时,s = 1,>0时,s = ‑1;若智能机检测到的重力加 ...
【技术特征摘要】
2013.12.29 CN 2013107361701;2013.12.29 CN 201310731.智能机姿态测定方法,包括以下步骤:1)定义局部坐标系:局部坐标系是指原点在智能机,Z轴指向地球表面法方向,Y轴或X轴与纬线相平行的坐标系;或局部坐标系原点位于地球上任意一点,Z轴与重力方向一致,且,若智能机磁力计指示方向是北,则北代表局部坐标系X轴,西代表局部坐标系Y轴;若智能机磁力计指示方向是东,则东代表局部坐标系X轴,北代表局部坐标系Y轴;若智能机磁力计指示方向是南,则南代表局部坐标系X轴,东代表局部坐标系Y轴;若智能机磁力计指示方向是西,则西代表局部坐标系X轴,南代表局部坐标系Y轴;2)测定智能机姿态矩阵Rg:Rg是一个相对于局部坐标系的3x3单位正交矩阵,Rg由下法之一获得:方法(1)采用重力传感器与磁力计或方向传感器:如果智能机有重力传感器,且有磁力计或方向传感器,用以下公式(1)计算Rg:其中,vax,vay,vaz是智能机测出来的智能机重力加速度传感器的x,y,z三个方向的值,或是这三个值经滤波的结果;Ra是重力传感器芯片相对于智能机的姿态转换矩阵;若智能机检测到的重力加速度传感器定义为负值:当az≤0时,s=1,az>0时,s=-1;若智能机检测到的重力加速度传感器定义为正值:当az≤0时,s=-1,az>0时,s=1;若采用方向传感器:带入公式(1)计算Rg;若采用磁力计传感器:计算其中Rm是磁力传感器芯片相对于智能机的姿态转换矩阵;{vmx,vmy,vmz}是智能机上磁力传感器检测到的三个值或这三个值经滤波的结果;再计算利用磁力计计算方位角的三角函数为:带入公式(1)即可算出Rg;若既无磁力计,也无方向传感器,方位角角初值为0,当模拟逆时针绕重力方向旋转时增加角,模拟顺时针绕重力方向旋转则减小角;方法(2)用旋转矢量传感器:如果智能机配置有旋转矢量传感器,首先采用下述(a)(b)(c)中的一种方式得到Rg0矩阵:(a)如果检测到智能机上的旋转矢量传感器只有3个数据values[0],values[1],values[2],采用以下公式得到:q1=values[0],q2=values[1],q3=values[2],则Rg0矩阵为:(b)如果检测智能机上的旋转矢量传感器有4个数据,q0=values[3],q1=values[0],q2=values[1],q3=values[2],则Rg0矩阵为:(c)智能机上指定传感器类型为旋转矢量类型TYPE_ROTATION_VECTOR,实时得到旋转矢量传感器的观测值;利用智能机上的旋转矢量转矩阵函数将传感器的观测值转换成绘图转换矩阵R44,R44矩阵的左上角3x3子阵是Rg0;然后根据智能机旋转矢量传感器坐标系定义的不同,采取以下几种情况之一得到Rg:若旋转矢量传感器的X轴指向东,Y轴指向北,则若旋转矢量传感器的X轴指向北,Y轴指向西,则Rg=Rg0;(3)若旋转矢量传感器的X轴指向南,Y轴指向东,则方法(3)采用陀螺仪、加速度计与磁力计迭代:第1步:选用方法(1)或方法(2)计算Rg的初值,将Rg转换成4元数q0,q1,q2,q3作为以下第2-7步迭代的初值;第2步:设定exInt,eyInt,ezInt原始值为0,exInt=0,eyInt=0,ezInt=0;第3步:根据接收到的磁力计矢量{mx,my,mz},得到正确磁场矢量{wx,wy,wz};先将矢量{mx,my,mz}替换成将其单位化以后的矢量得到局部坐标系下磁场的正确的磁场方向矢量{bx,0,bz};hx=2×mx×(0.5-q2×q2-q3×q3)+2×my×(q1×q2-q0×q3)+2×mz×(q1×q3+q0×q2);hy=2×mx×(q1×q2+q0×q3)+2×my×(0.5-q1×q1-q3×q3)+2×mz×(q2×q3-q0×q1);hz=2×mx×(q1×q3-q0×q2)+2×my×(q2×q3+q0×q1)+2×mz×(0.5-q1×q1-q2×q2);bz=hz;再转换到正确磁场矢量{wx,wy,wz}:wx=2×bx×(0.5-q2×q2-q3×q3)+2×bz×(q1×q3-q0×q2);wy=2×bx×(q1×q2-q0×q3)+2×bz×(q0×q1+q2×q3);wz=2×bx×(q0×q2+q1×q3)+2×bz×(0.5-q1×q1-q2×q2);第4步:根据接收到的重力加速度计数据ax,ay,az,和{wx,wy,wz}得到误差矢量{ex,ey,ez}并计算其累计值exInt,eyInt,ezInt:先将矢量{ax,ay,az}替换成将其单位化以后的矢量vx=2*(q1*q3-q0*q2);vy=2*(q0*q1+q2*q3);vz=q0*q0-q1*q1-q2*q2+q3*q3;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);计算误差累计值;exInt替换为exInt+ex×Ki;eyInt替换为eyInt+ey×Ki;ezInt替换为ezInt+ez×Ki;其中Ki为一可调节的正系数,Ki在0.00001至0.5中任意选取;第5步:根据误差矢量{ex,ey,ez}及其累计值纠正陀螺仪数据{gx0,gy0,gz0}:假设智能机读出当前的一组陀螺仪数据为{gx0,gy0,gz0},gx=gx0+Kp×ex+exInt;gy=gy0+Kp×ey+eyInt;gz=gz0+Kp×ez+ezInt;其中Kp为一可调节的正系数,Kp在0.000001至20.0中任意选取;第6步:根据陀螺仪数据gx,gy,gz修正四元数:随着不断接收到陀螺仪数据gx,gy,gz,对4元数按如下方式修正,halfT为修正周期,halfT=0.00001~10.0,q0替换为q0+(-q1×gx-q2×gy–q3×gz)×halfT;q1替换为q1+(q0×gx-q3×gy+q2×gz)×halfT;q2替换为q2+(q3×gx+q0×gy-q1×gz)×halfT;q3替换为q3+(-q2×gx+q1×gy+q0×gz)×halfT;第7步:输出Rg矩阵和四元数:将四元数{q0,q1,q2,q3}单位化成输出;4元数转Rg矩阵公式如下:第8步:回到第3步继续接收陀螺仪运动数据更新姿态4元数q0~q3,在循环的过程中每次到第7步都能输出当前的Rg矩阵和四元数。2.智能机显示屏的姿态测定方法,包括以下步骤:智能机显示屏的姿态矩阵为:rx是智能机显示屏像素阵列x轴方向在局部坐标系中的分量;ry是智能机显示屏像素阵列y轴方向在局部坐标系中的分量;rz是垂直于智能机显示屏表面方向向智能机显示屏内部朝前看的视线方向在局部坐标系中的分量;1)按权利要求1的方法测定智能机姿态,并得到智能机的姿态矩阵Rg;2)计算R=ΔR×Rg;得到智能机显示屏的姿态矩阵;ΔR为智能机显示屏姿态矩阵R相对于智能机姿态矩阵Rg的一个固定的方向的转换,智能机自身Z轴定义为智能机加速度计的z轴方向,当显示屏观察方向和智能机自身Z轴方向刚好相反时当显示屏观察方向和智能机自身Z轴方向完全一致时否则可在智能机上选择一个与智能机显示屏姿态一致的摄像头,即摄像头的xyz三轴分别与显示屏的xyz三轴平行且方向一致,采用摄影测量后方交会方法测量出智能机摄像头相对于局部坐标系的姿态矩阵RA,并用权利要求1方法测得此时智能机的姿态矩阵Rg,得到ΔR=RARg-1。3.基于智能机姿态的虚拟现实漫游方法,包括以下步骤:1)采用权利要求2所述的方法得到智能机显示屏的姿态矩阵R,2)移动控制漫游观察者在局部坐标系中的位置:定义漫游观察者是在局部坐标系中的一个具备自身位置、姿态且用于观察周边场景的对象;智能机显示屏所渲染的场景就是漫游观察者在局部坐标系中所应看到的场景图像;定义漫游观察者在局部坐标系中的坐标为Xd,Yd,Zd;用以下三种模式之一控制漫游观察者在虚拟场景中的移动:(1)模式1:普通二维移动当手指按{ΔX,ΔY}方向滑过智能机显示屏平面的时候,相当于局部坐标系下,Xd增加Vx=ΔXr11+ΔYr21;Yd增加Vy=ΔXr12+ΔYr22;Zd不变...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。