CN104748746B - 智能机姿态测定及虚拟现实漫游方法 - Google Patents

智能机姿态测定及虚拟现实漫游方法 Download PDF

Info

Publication number
CN104748746B
CN104748746B CN201410163542.0A CN201410163542A CN104748746B CN 104748746 B CN104748746 B CN 104748746B CN 201410163542 A CN201410163542 A CN 201410163542A CN 104748746 B CN104748746 B CN 104748746B
Authority
CN
China
Prior art keywords
msub
mrow
mtd
mtr
msup
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410163542.0A
Other languages
English (en)
Other versions
CN104748746A (zh
Inventor
刘进
陶重芝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Xiong Chu Gao Jing Technology Co., Ltd.
Original Assignee
刘进
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 刘进 filed Critical 刘进
Priority to CN201410163542.0A priority Critical patent/CN104748746B/zh
Publication of CN104748746A publication Critical patent/CN104748746A/zh
Application granted granted Critical
Publication of CN104748746B publication Critical patent/CN104748746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • G01C21/16Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation
    • G01C21/165Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments
    • G01C21/1654Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments with electromagnetic compass
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/04Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by terrestrial means
    • G01C21/08Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by terrestrial means involving use of the magnetic field of the earth
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/025Services making use of location information using location based information parameters
    • H04W4/027Services making use of location information using location based information parameters using movement velocity, acceleration information

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Electromagnetism (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Geology (AREA)
  • General Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Multimedia (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Analysis (AREA)
  • Measuring Magnetic Variables (AREA)
  • Studio Devices (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明提供一种智能机姿态测定及虚拟现实漫游方法,用户在三维空间中以任意姿态摆放智能机都能在视窗内观察到与该位姿对应的周边真实或虚拟三维渲染场景。由于用户手持智能机的姿态与三维场景中渲染的三维效果完全一致,用户会体验到一种极其逼真的身临其境三维效果。利用智能机的姿态控制观察角度,手指滑动或移动控制智能机位置,用户可在三维场景中进行漫游,基于本发明可测定智能机的姿态,并实现三维数字城市漫游,商铺广告信息三维发布、虚拟现实电子商务、游戏控制、虚拟地图旅游、摄影测量测绘等。

Description

智能机姿态测定及虚拟现实漫游方法
技术领域
本发明涉及信息技术领域,具体涉及智能机姿态测定及虚拟现实漫游方法。
背景技术
虚拟现实技术是让用户沉浸在智能机显示屏展现的虚拟或真实三维场景中,将虚拟目标标签叠加到其中,提示交互信息给用户。传统的三维虚拟场景,如数字三维城市、游戏等应用已经非常成熟,但是在三维场景里漫游却主要通过鼠标、键盘、滚动球等传统控制设备,控制设备的方向和观察到的实际场景无法直观的对应,渲染设备庞大而笨拙,这都会给操作者带来极大不便,影响了这些三维数字技术的广泛应用。因此迫切需要一种将控制设备与显示设备合二为一的非常直观轻便的智能机定姿态与渲染技术。本发明正解决了这个问题。
由于智能机姿态不一样,同样位置看到的现实场景不一样,智能机姿态精度影响导航精度和虚拟现实漫游仿真精度,因此智能机姿态的精确测定具有重要意义。虚拟现实应用中对智能机姿态精度提出了更高要求。传统的智能机姿态测定,主要利用方向传感器单轴航向角数据信息,系统对智能机姿态摆放有特定要求,如要求智能机平行于地面,或垂直于地面摆放,而虚拟现实应用中用户手持智能机的姿态千变万化,并不一定严格平行或者垂直于地面,这将导致导航方位不准。此外智能机姿态测定的误差将带来虚拟现实漫游误差,影响用户体验,因此迫切需要一种考虑智能机X-Y-Z三轴旋转的姿态测定算法。
基于位置的服务LBS日益受关注,但用户更关心的不仅是位置,而是自己与目标间的方向和距离。很多老年人和方向感不强的人很难将实际看到的生活场景与地图中的东南西北联系在一起,因此智能机任意角度摆放情况下,叠加在实景视频上的目标信息及其相关服务将给用户带来所见即所指的极大便利,将成为未来信息服务的发展新趋势,我们将这种服务称为“智能机全方位虚拟现实或增强现实信息服务”。应用包括:
1.为商铺以及供需双方发布相对于其他海量用户的方位和距离提供信息;
2.为用户相对于指定地名,指定单位的方位与距离提供可视化信息服务;
3.为用户之间相互联络提供方位和距离可视化信息;
4.为车、船、人、物流提供相对于目的地的方位和距离可视化信息。
5.快递、送货,用于电子商务的最终递送环节。邮递员通过智能机即可知道收货人,收件人位置,收件人通过智能机知道邮递员位置和方向。
6.提供一种全新三维场景、数字城市、数字地球、游戏漫游模式,不需手指触碰控制方向,而采用直观的智能机姿态控制保证渲染的地图与三维场景对应。
7.提供了一种全新的地图浏览查询模式,不需要用手指触碰方式,而是采用直观的智能机姿态控制保证渲染出的地图与实景对应。
传统的导航服务是地图导航服务,用户看到的是智能机姿态与周边实景不对应的地图,用户需要费力的去把实景与地图联想起来才能得到正确的方向。
传统导航服务依据经纬度网格组成的2维坐标系进行导航,地球当做经纬度组成的一个平面处理,因为相同维度差对应的距离偏移≥经度差对应的距离偏移,所以不同地区导航算法需进行经纬比例调整,只适合于中低纬度地区的小区域,不适合全球,极地附近这种方法已经无法再适用,非常不便于全球化普及。而本发明采用局部坐标系转换后能把全球任何位置的三维场景很好地展现出来。
传统的姿态检测技术主要用于飞机,汽车等大型设备,追求很高精度,用于军事、工业等领域,而且非常贵重和笨重,而本发明主要考虑用廉价轻便的智能机终端实现普通个人周边地区的视频信息叠加服务。
本发明不仅考虑方向传感器的value[0]得到的航向角,在有其他传感器,如重力加速度磁力计和陀螺仪情况下,还考虑了其他几种姿态传感器捕获到的数据,使得检测到的姿态更加精确,在没有这些传感器条件下也能得到粗略姿态。本发明可以在智能机,诸如Andriod,苹果系统上方便地实现虚拟现实漫游、地图浏览功能。
考虑到当前智能机传统应用的各种缺陷和不足,本发明提供一种考虑智能机3轴旋转任意姿态测定的虚拟现实或增强现实三维渲染及漫游方法,用户在三维空间中以任意姿态摆放智能机都能在视窗内观察到与该位姿对应的周边真实或虚拟三维渲染场景。由于用户手持智能机的姿态与三维场景中渲染的三维效果完全一致,用户会体验到一种极其逼真的身临其境三维效果。
因此基于本发明可以实现虚拟现实电子商务、虚拟现实商铺广告信息实景三维渲染发布、三维数字城市漫游,实景三维地图标注,实景三维游戏、摄影测量测绘等。同时商铺也能借助服务平台广泛发布其广告信息。
基于本发明可实现电子商务服务,用户客户端之间,用户客户端与商铺之间可以用视频实景预览观察相互之间的位置、方位关系,同时商铺也能借助服务平台广泛发布其广告信息。
本发明中智能机包括一切含显示显示屏和姿态传感的智能设备,如手机,平板电脑,笔记本电脑,带姿态传感和显示屏的摄像头,相机,智能显示器,智能电视机显示屏、以及各种可穿戴设备。
发明内容
本发明所要解决的问题是提供智能机姿态测定及虚拟现实漫游方法,该方法使用户在智能机上获得便捷、直观的可视化信息。
本发明提供的技术方案是,智能机姿态测定及虚拟现实漫游方法,包括以下内容:
智能机姿态测量方法的输入输出定义
输入:
方法(1)重力加速度计传感器的三个值ax、ay、az,要求配置最低,适用性最广磁力计传感器的三个值{mx,my,mz}或方向传感器的航向角value[0]
方法(2)旋转矢量传感器的三个或四个输出。需旋转矢量传感器
方法(3)重力加速度计,磁力计和陀螺仪。另需陀螺仪输出:
完整描述智能机局部坐标系姿态的矩阵
Rg矩阵是一个3x3单位正交矩阵,由三行组成,每行一个三维矢量,三个矢量分别为rgx,rgy,rgz。第一行rgx是智能机自身x轴在局部坐标系下的单位矢量;
第二行rgy是智能机自身y轴在局部坐标系下的单位矢量;
第三行rgz是智能机自身z轴在局部坐标系下的单位矢量。
如图1所示,智能机姿态矩阵Rg的三个行矢量rgx,rgy,rgz是其自身三轴在局部坐标系下的三个单位矢量。
本发明智能机姿态测定方法,包括以下步骤:
测定智能机姿态矩阵Rg。Rg是一个3x3单位正交矩阵,是相对于局部坐标系的,局部坐标系Z轴与重力方向一致,
若智能机磁力计指示方向是北,则北代表局部坐标系X轴,西代表局部坐标系Y轴;
若智能机磁力计指示方向是东,则东代表局部坐标系X轴,北代表局部坐标系Y轴;
若智能机磁力计指示方向是南,则南代表局部坐标系X轴,东代表局部坐标系Y轴;
若智能机磁力计指示方向是西,则西代表局部坐标系X轴,南代表局部坐标系Y轴;
局部坐标系的原点可以定义为位于地球上任意一点。
Rg由下法之一获得:
方法(1)采用重力加速度计与磁力计
如果智能机有重力加速度计,且有磁力计或方向传感器,用以下公式(1)计算Rg
其中
vax,vay,vaz是智能机测出来的智能机重力加速度传感器的x,y,z三个方向的值,或这三个检测值经过滤波的结果,如过程中检测到新值vax’,vay’,vaz’可采用:
αvax’+(1-α)vax替换原来的vax
αvay’+(1-α)vay替换原来的vay
αvaz’+(1-α)vaz替换原来的vaz
α是介于[0,1]之间的一个值。
Ra是重力传感器芯片相对于智能机的姿态转换矩阵。对于大部分智能手机而言,
当az<0时,s=-1,az≥0时,s=1;
若采用方向传感器:带入公式(1)计算Rg
若采用磁力计传感器:{vmx,vmy,vmz是是智能机上磁力传感器检测到的三个值或这三个值经滤波的结果,如过程中检测到新值vmx’,vmy’,vmz’可采用:
αmvmx’+(1-αm)vmx替换原来的vmx
αmvmy’+(1-αm)vmy替换原来的vmy
αmvmz’+(1-αm)vmz替换原来的vmz
αm是介于[0,1]之间的一个值。
计算
其中Rm是磁力计传感器芯片相对于智能机的姿态转换矩阵。对于大部分智能手机而言,
再计算
利用磁力计计算方位角的三角函数为:
带入公式(1)计算Rg
反复利用上述公式(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矩阵为:
有的版本的
android系统需要先将{values[3],values[0],values[1],values[2]}单位化以后才能作为
{q0,q1,q2,q3}使用。
(c)智能机上指定传感器类型为旋转矢量类型,实时得到旋转矢量传感器的观测值
利用智能机上的旋转矢量转矩阵函数将传感器的观测值转换成模型转换矩阵R44,R44
阵的左上角3x3子阵是Rg0
然后根据智能机旋转矢量传感器坐标系定义的不同,采取以下几种情况之一得到Rg:
若旋转矢量传感器的X轴指向东,Y轴指向北,则
若旋转矢量传感器的X轴指向北,Y轴指向西,则
Rg=Rg0;(3)
若旋转矢量传感器的X轴指向南,Y轴指向东,则
方法(3)采用陀螺仪迭代方法计算智能机姿态矩阵Rg
若智能机有陀螺仪,可采用以下方法迭代得到Rg矩阵:
第1步计算q0,q1,q2,q3的初值
选用上述公式(1)或(2)(3)(4)计算Rg的初值,然后利用姿态矩阵转4元素成熟技术将Rg矩阵转换成4元素q0,q1,q2,q3
将4元数q0,q1,q2,q3作为以下迭代计算的初值
第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,和第3步得到的正确磁场矢量{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}纠正成{gx,gy,gz}
假设智能机读出当前的一组陀螺仪数据为{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步输出4元数和Rg矩阵
将四元数{q0,q1,q2,q3}单位化成
4元数转Rg矩阵公式如下
第8步回到第3步继续接收陀螺仪运动数据更新姿态4元数q0~q3,在循环的过程中每次到第7步都能输出当前的Rg矩阵;
本发明测定智能机上显示屏姿态的方法:
定义智能机上显示屏的姿态矩阵为
rx是显示屏水平方向在局部坐标系中的分量;
ry是显示屏上下方向在局部坐标系中的分量;
rz是垂直于显示屏表面方向向显示屏内部看的视线方向在局部坐标系中的分量。
包括以下步骤:
1)按本发明测定智能机姿态的方法,得到智能机的姿态矩阵Rg
2)计算R=ΔR×Rg;得到显示屏的姿态R矩阵
ΔR为智能机显示屏姿态矩阵R相对于智能机姿态矩阵Rg的一个固定的方向的转换,当显示屏观察方向和智能机自身Z轴方向刚好相反时当显示屏观察方向和智能机自身Z轴方向完全一致时否则可在智能机上选择一个与显示屏xyz三轴姿态一致的摄像头,采用成熟摄影测量后方交汇法通过摄像头精确标定ΔR。方法如下:
1.建立控制场坐标系,即原点位于智能机的GPS接收点或北斗定位点的局部坐标系;
2.用智能机摄像头拍摄控制场坐标系中的点集;按权利要求1方法测定智能机拍摄点集时的Rg,Rg也是相对于控制场坐标系定义的;
3.根据控制场点集中各已知点转换到控制场坐标系的3维坐标与拍摄图像中点集像坐标的对应关系,采用摄影测量后方交会方法测量出智能机摄像头相对于控制场坐标系的姿态矩阵RA和摄像头光心相对于控制场坐标系的坐标ΔT;
4.按下式得到ΔR=RARg -1
ΔT同时也是摄像头光心,近似为显示屏中心,相对于智能机GPS或北斗定位点的局部坐标系偏移;
通过测定该摄像头的姿态R得到虚拟现实中智能机显示屏观察姿态矩阵R。
本发明还提供了基于智能机姿态的虚拟现实漫游方法:
基于前述方法得到智能机显示屏姿态矩阵R矩阵,采用以下步骤:
1)采用本发明方法得到与智能机显示屏姿态一致的摄像头姿态R即为智能机显示屏姿态矩阵R
若无此摄像头,则当智能机自身姿态Z轴方向和智能机显示屏观察姿态方向相反时当智能机自身姿态Z轴方向和智能机显示屏观察姿态方向一致时R=Rg.
2)移动控制漫游观察者在局部坐标系中的位置
定义漫游观察者是在局部坐标系中的一个具备自身位置、姿态、用于观察周边场景的对象。智能机显示屏所渲染的场景就是漫游观察者在局部坐标系中所应看到的场景图像;
定义漫游观察者在局部坐标系中的坐标为Xd,Yd,Zd
用以下三种方法之一控制漫游观察者在虚拟场景中的移动:
(1)模式1:普通2维移动
当用户手指按{ΔX,ΔY}方向滑过智能机显示屏平面的时候,相当于局部坐标系下,Xd增加Vx=ΔXr11+ΔYr21;Yd增加Vy=ΔXr12+ΔYr22;Zd不变
此方法主要适合于智能机显示屏接近水平时的情况。
(2)模式2:智能2维移动
当手指按{ΔX,ΔY}方向滑过智能机显示屏平面的时候,采用如下方法:
首先选择R矩阵右侧一列中的r13,r23,r33中哪一个分量的绝对值最大,
如果|r33|最大,Xd增加Vx=ΔXr11+ΔYr21Yd增加Vy=ΔXr12+ΔYr22
如果|r23|最大,Xd增加Vx=ΔXr11+ΔYr31Yd增加Vy=ΔXr12+ΔYr32
如果|r13|最大,Xd增加Vx=ΔXr31+ΔYr21Yd增加Vy=ΔXr32+ΔYr22
(3)模式3:3维漫游移动
因为手机显示屏只有2维,单个手指滑动只能进行2维操作,单指划过手机显示屏时ΔX,ΔY与滑动位移成正比,那么可采用用户双指滑动触碰智能机操作实现3维操作,采用双指合拢相当于ΔZ<0,双指拉开相当于ΔZ>0(或者双指合拢相当于ΔZ>0,双指拉开相当于ΔZ<0)。当智能机接收到手指控制信息{ΔX,ΔY,ΔZ}的时候,
Xd增加Vx=ΔXr11+ΔYr21+ΔZr31Yd增加Vy=ΔXr12+ΔYr22+ΔZr32Zd增加Vz=ΔXr13+ΔYr23+ΔZr33
3)设置漫游观察者在局部坐标系里的位置和方向:
根据漫游观察者的局部坐标系坐标Xd,Yd,Zd,以及步骤1测定得到的姿态矩阵R,利用OpenGL,OpenES,OS X OpenGL,Direct3D或osg绘图软件库中用于设定虚拟观察相机位姿的图形库函数,设置漫游观察者在局部坐标系里的位置和方向:
需要设定以下几个量:
1.漫游观察者自身观察的垂直视场角θ,就是智能机显示屏上边缘中点的视线方向与下边缘中点的视线方向的夹角。通常可选取θ=45度.
2漫游观察者所在的位置Xd,Yd,Zd,由步骤2漫游算法修改;
3.漫游者观察方向{r31,r32r33}或者用户注视点坐标(Xd+r31,Yd+r32,Zd+r33)
4.漫游者自身向上方向的矢量{-r21,-r22,-r23}
其中rij是智能机显示屏姿态R矩阵中的第i行j列
比如在Android OpenES中采用
GLU.gluLookAt(gl,(float)Xd,Yd,Zd,
Xd+r31,Yd+r32,Zd+r33,-r21,-r22,-r23);
其中rij是R矩阵第i行j列的元素值
编程实现设置漫游观察者位置和姿态
4)在局部坐标系下渲染绘制三维场景
预先在智能机的可视显示屏内设置一个3维渲染图层进行三维场景渲染,可视窗口内预先叠加视频或地图图层;
这里被绘制的三维场景中的点、线、面和物体模型的几何坐标都要转换成局部坐标系下的坐标[Xi Yi Zi]T,即与漫游者的坐标Xd,Yd,Zd在同一个局部坐标系下;用OpenGL,OpenES,OS X OpenGL,Direct3D或osg绘图软件库实现局部坐标系下的三维绘图。
在上述步骤4)中,在局部坐标系中绘制一个标有广告符号、文字的纹理多边形面或模型定义为广告牌。将广告牌的实际地理坐标转换到局部坐标系,再按如下三种方法渲染绘制都可使得广告牌的正面始终正对着漫游观察者。
方法1
(a)假设商铺广告牌的局部坐标系坐标在Xi Yi Zi,按如下方法设置模型绘制转换矩阵:
将m设定为模型转换矩阵。
(b)在y-z平面上绘图即可让广告牌永远正对智能机方向
方法2
(a)假设商铺广告牌的局部坐标系坐标在Xi Yi Zi,按如下方法设置模型绘制转换矩阵:
将m设定为模型转换矩阵。
(b)在x-z平面上绘图即可让广告牌永远正对智能机方向方法(1)(2)绘制出来的广告牌都具有近大远小的立体效果。
方法3
(a)假设商铺广告牌的局部坐标系坐标在Xi Yi Zi,按如下方法设置模型绘制转换矩阵:
将m设定为模型转换矩阵。
(b)在x-z平面上绘图即可让广告牌永远正对智能机方向
这样绘制出来的广告牌将不具有近大远小的效果,远近一样大,方便用户观察。
上述渲染的商铺信息内容包括名称、符号属性、类别、与智能机的距离、角度和/或高度。
根据智能机的真实地理坐标进行虚拟现实漫游:
本发明设定局部坐标系原点是智能机显示屏中心,即Xd,Yd,Zd是相对于智能机显示屏中心的局部偏移坐标,步骤4)之前增加如下操作:
(a)获取智能机的高度hs,纬度θs和经度
θs是智能机的纬度,是智能机的经度,由智能机上自带的GPS接受模块获取;
(b)计算智能机所在经纬度的Rv
(c)计算智能机所在纬度θs经度高度hs的地心坐标系坐标Ts
利用大地测量学中经典的转换公式。
其中
hs是智能机离地面高度
Ns是随纬度变化的卯酉圈曲率半径。
a,b是地球椭球的长短轴,是大地测量学中的已知常量;
e是偏心率,是定值。
(d)根据地球上任何一个点的经度纬度θi和高程hi得到该点地心坐标系坐标T0i=[X0i Y0i Z0i]T
利用大地测量学中经典的转换公式
其中
hi是点离地面高度
Ni是随纬度变化的卯酉圈曲率半径。
a,b是地球椭球的长短轴,是大地测量学中的已知常量;
e是偏心率,是定值。
如果已知一个物体所在经纬度和θi,通过本步骤计算出它的地心坐标系坐标T0i
(e)地心坐标系坐标T0i转换为局部坐标系中的坐标(Xi Yi Zi)T
ΔT是智能机显示屏中心相对于智能机GPS接收天线的局部坐标系偏移。这样保证了权利要求3中的(Xi Yi Zi)T和(Xd Yd Zd)T都是相对于智能机显示屏中心的偏移坐标。可近似取ΔT=[0 0 0]T
权利要求3中步骤4)中绘制三维场景须用这种转换为局部坐标系中的坐标(Xi YiZi)T
在基于智能机姿态的虚拟现实漫游方法步骤2)中设置加速度模拟漫游效果:
步骤2)中如果需要模拟加速度漫游移动特效,当手指滑动的时候,根据手指滑动速度大小给予一个初速度{Vx,Vy,Vz},Xd,Yd,Zd将不停地增加速度分量Vx,Vy,Vz,然后让速度分量Vx,Vy,Vz随时间推移不断衰减,其中VZ在权利要求3步骤2)模式1,2情况下恒等于零。
让速度体现到局部坐标系下的漫游位移
Xd增加Vx
Yd增加Vy
Zd增加Vz仅用于权利要求3步骤2)模式3
最后要在不停的移动过程中速度大小不断衰减,
Vx,Vy,Vz不停地衰减:可采用以下两种方法:
1)运动过程中Vx,Vy,Vz自身分别不断地乘以k=0.1~0.9999进行衰减,
运动过程中Vx自身不断地乘以k,直到Vx减小为0为止;
运动过程中Vy自身不断地乘以k,直到Vy减小为0为止;
运动过程中Vz自身不断地乘以k,直到Vz减小为0为止;
或者
2)运动过程中Vx,Vy,Vz自身分别不断地进行以下增量操作
Vx自身不断地增加-Vx*k,直到Vx减小为0为止;
Vy自身不断地增加-Vy*k,直到Vy减小为0为止;
Vz自身不断地增加-Vz*k,直到Vz减小为0为止;
其中k=0.0001~0.5
以上过程不断循环即可实现局部加速度漫游效果。
本发明还涉及虚拟现实场景中的2维标签的恒水平于地面的显示方法:
2维标签是指2维文字、图符、图片、标记、编码、对话框、编辑框、列表框等一切在智能机显示屏中以2维形式显示的对象。
因用户双眼是水平于地面的,前述基于智能机姿态的虚拟现实漫游方法只能保证3维物体能正确显示,2维标签的显示姿态会随智能机旋转而旋转,用户看到的标签就不是正放的。故设计本方法使得标签始终正放显示。方法不局限于矩形显示屏,对常用矩形显示屏而言,采用以下方法。
在前述基于智能机姿态的虚拟现实漫游方法步骤3和步骤4)之间或步骤4)结束之后,将显示屏设定为2维绘图模式并设置若干个2维标签,针对每一个2维标签,按如下步骤显示:
步骤1)首先确定虚拟现实场景中2维标签的中心位置u,v;
如果标签用于标注三维场景中局部坐标系坐标为(X,Y,Z)的目标,则根据以下公式确定目标显示的中心位置u,v
ZO=r31(X-Xd)+r32(Y-Yd)+r33(Z-Zd)
式中:
w是智能机显示屏宽度,h是智能机显示屏高度。
r11~r33是权利要求2所述的方法中的R矩阵对应行列的元素。
θ是垂直视场角θ
Xd,Yd,Zd是漫游观察者在局部坐标系中的坐标。
如果满足ZO>0且0<u<w且0<v<h则u,v保持不变,
否则需要按下法修正u,v
若ZO=0则将[u v]替换为从点(w/2,h/2)出发
按矢量{r11(X-Xd)+r12(Y-Yd)+r13(Z-Zd),r21(X-Xd)+r22(Y-Yd)+r23(Z-Zd)}
方向的射线与显示屏边缘相交的2维点。
若ZO>0则将[u v]替换为点(w/2,h/2)到(u,v)的连线与显示屏边缘相交的2维点。
若ZO<0则将[u v]替换为点(u,v)到(w/2,h/2)的延长线与显示屏边缘相交的2维点。
如果标签不是用于标注目标,u,v为界面设计者设定的显示屏坐标,或是用户手指或鼠标点击的显示屏坐标。
步骤2)计算矢量{Qx,Qy}
方法(1)Qx=-r23/La Qy=r13/La
其中r23,r13是权利要求2所述的方法中的R矩阵对应行列的元素,
方法(2)利用权利要求1方法(1)所述加速度计的前两个输出值ax,ay得到
步骤3)在2维平面上经过以下矩阵旋转变换以后再绘制2维标签:
2维标签上每一点X,经过上式变换到坐标X’显示出来。
±取+是正放显示,取-是倒放显示,标签的水平轴始终平行于地面。
就会看到显示屏上该显示对象自身的水平轴始终平行于地平面,标签始终处于正放状态。
在基于智能机姿态的虚拟现实漫游方法的步骤4)中所述三维场景为一个空心的三维形体,三维形体可以是球,立方体、柱体、正多面体、锥体,三维形体的内壁以全景图作为纹理进行渲染。所述漫游观察者在虚拟场景中位于三维形体内部的某一固定点[Xd,Yd,Zd]=[0,0,0],一般位于三维形体中心,从三维形体内部观察三维形体的内壁纹理,实现利用智能机显示屏姿态R矩阵控制全景浏览。
本发明进一步提供了控制局部坐标系中三维物体姿态的方法:
将Rg矩阵设定为仿真软件系统中的模型转换矩阵M的左上角3x3矩阵
这实现了利用智能机姿态控制三维场景中某一物体的姿态。
附图说明
图1为智能机姿态矩阵R的三个行矢量rgx,rgy,rgz在局部坐标系中的所指的矢量方向。
具体实施方式
本发明针对3种方法需要智能机的3种配置类型的传感器输入
方法(1)用以下公式计算Rg
其中
利用磁力计计算方位角的三角函数为:
在实际操作中,若出现地磁偏角导致磁力方向不是指着正北,可通过下式计算Rg
重力加速度计传感器的三个值{vax,vay,vaz}要求配置最低,适用性最广;
磁力计传感器的三个值{vmx,vmy,vmz}或方向传感器的航向角value[0]
若既无磁力计,也无方向传感器,方位角角可通过用户界面滑块控制增减角。往地心看绕重力方向,模拟逆时针旋转时角增加,模拟顺时针旋转时角减小。
方法(2)旋转矢量传感器的三个或四个输出,需旋转矢量传感器。
方法(3)重力加速度计,磁力计和陀螺仪,另需陀螺仪。
计算过程中,很多变量如L和可以预存下来,避免重复计算,以提高速度。
本发明输出矩阵Rg的几何意义如下
完整描述智能机局部坐标系姿态的矩阵
Rg矩阵是一个3x3单位正交矩阵,由三行组成,每行一个三维矢量,三个矢量分别为rgx,rgy,rgz。第一行rgx是智能机自身x轴在局部坐标系下的单位矢量;
第二行rgy是智能机自身y轴在局部坐标系下的单位矢量;
第三行rgz是智能机自身z轴在局部坐标系下的单位矢量。
如图1所示,智能机姿态矩阵Rg的三个行矢量rgx,rgy,rgz是其自身三轴在局部坐标系下的三个单位矢量。(1)智能机显示屏的姿态测定方法中,
显示屏观察方向和智能机自身Z轴方向刚好相反时显示屏观察方向和智能机自身Z轴方向完全一致时否则可在智能机上选择一个与显示屏观察方向一致的摄像头,该摄像头的拍摄方向一定与观察显示屏的方向一致,通过摄影测量后方交汇法测定该摄像头的局部坐标系姿态RA以及对应的智能机姿态矩阵Rg,采用ΔR=RARg -1精确标定摄像头。
因ΔR描述了显示屏观察姿态和智能机自身姿态之间的固定转换关系,一旦精确测定以后,就是一个恒定值。任意给定Rg就可得到对应的显示屏姿态R=ΔRRg
基于智能机姿态的虚拟现实漫游描述的方法可用于与地理位置无关的虚拟现实漫游领域,如非实景地形游戏,体感游戏、三维虚拟数据仿真,虚拟全景等领域;
用户可采用实际旋转智能机的方式操控智能机姿态,所对准的方向和姿态在虚拟现实场景中观察的内容与其显示屏上显示的是对应的,采用手指滑动方式操纵控制在虚拟现实中平移。
基于智能机姿态的虚拟现实漫游步骤3的具体实施方式如下,
将显示屏设定为3维绘图模式可采用android系统中以下OpenES语句编程实现:
gl.glMatrixMode(GL10.GL_PROJECTION);//开始设置投影矩阵
gl.glLoadIdentity();//下面转换成二维平面信息绘制模式
GLU.gluPerspective(gl,θ,屏宽/屏高,0.01,(float)1000000);可选取θ=45度
在Android OpenES中采用
GLU.gluLookAt(gl,Xd,Yd,Zd,
Xd+r31,Yd+r32,Zd+r33,-r21,-r22,-r23);
在OpenGL里可采用以下语句实现
gluLookAt(Xd,Yd,Zd,Xd+r31,Yd+r32,Zd+r33,-r21,-r22,-r23)
其中rij是R矩阵第i行j列的元素值
编程实现设置漫游观察者位置和姿态
广告牌渲染效果通过如下方法实现:
ΔXi=Xi-XdΔYi=Yi-Yd
以上方法可采用OpenGL中的
m[16]={-ΔYi,ΔXi,0,0,ΔXi,ΔYi,0,0,0,0,L,0,Xi,Yi,Zi,1}
glMultMatrixf(m,0);语句编程实现
OpenES中的
m[16]={-ΔYi,ΔXi,0,0,ΔXi,ΔYi,0,0,0,0,L,0,Xi,Yi,Zi,1}
gl.glMultMatrixf(m,0);语句编程实现
根据智能机的真实地理坐标进行虚拟现实漫游中描述的方法可用于与地理位置有关的应用,如地图漫游,数字城市、飞行模拟三维漫游。在没有高程数据的情况下可以直接将图片绑定成纹理绘制在X,Y平面上,有高程信息条件下,可结合高程信息在虚拟现实XYZ空间中绘制出三维网格地形,实现智能机姿态结合手指滑动控制地图漫游。
漫游加速度模拟中可在软件中将Vx,Vy,Vz的衰减计算过程放在渲染线程中计算,也可以单独用一个线程处理。
智能机显示屏恒水平显示是指不论怎样绕X,Y,Z三轴任意转动智能机,智能机显示屏上2维标签自身的水平轴始终平行于地平面。
可将要显示的2维标签中的文字、标签,对话框等作为纹理绑定到内存。渲染的时候将此纹理渲染在经过
变换的多边形上。
因用户的双眼是平行于地平面的,所以不论智能显示器怎么旋转,其上显示的2维标签总能给观众一个正确的姿态显示效果。
可通过glMultMatrix(m);实现
其中
实现;
也可先Translatef(u,v,0),然后glMultMatrix(m);实现
其中
接着智能机姿态的虚拟现实漫游方法步骤4)之后,
将显示屏设定为2维绘图模式可采用android系统中的以下OpenES语句编程实现:
gl.glLoadIdentity();//下面转换成二维平面信息绘制模式
gl.glViewport(0,0,A_Main.screenWidth,A_Main.screenHeight);
gl.glMatrixMode(GL10.GL_PROJECTION);//开始设置投影矩阵
gl.glLoadIdentity();//下面转换成二维平面信息绘制模式
gl.glOrthof(0,A_Main.screenWidth,A_Main.screenHeight,0,-100,100);
gl.glMatrixMode(GL10.GL_MODELVIEW);//开始设置模型绘制矩阵
全景浏览方法中的三维形体一般采用球,立方体,正多面体这样的对称形状,漫游观察者一般位于对称体内部中心点。可采用ALPHA检测技术对球面纹理进行渲染。
控制局部坐标系中三维物体姿态的方法中可以用智能机姿态或者智能机显示屏姿态操纵物体,如果是智能机姿态操纵,采用矩阵Rg计算;如果是智能机显示屏姿态操纵,采用矩阵R计算。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (9)

1.智能机姿态测定方法,包括以下步骤:
1)定义局部坐标系:
局部坐标系是指原点在智能机,Z轴指向地球表面法方向,Y轴或X轴与纬线相平行的坐标系;或局部坐标系原点位于地球上任意一点,Z轴与重力方向一致,且,
若智能机磁力计指示方向是北,则北代表局部坐标系X轴,西代表局部坐标系Y轴;
若智能机磁力计指示方向是东,则东代表局部坐标系X轴,北代表局部坐标系Y轴;
若智能机磁力计指示方向是南,则南代表局部坐标系X轴,东代表局部坐标系Y轴;
若智能机磁力计指示方向是西,则西代表局部坐标系X轴,南代表局部坐标系Y轴;
2)测定智能机姿态矩阵Rg
Rg是一个相对于局部坐标系的3x3单位正交矩阵,
Rg由下法之一获得:
方法(1)采用重力传感器与磁力计或方向传感器:
如果智能机有重力传感器,且有磁力计或方向传感器,用以下公式(1)计算Rg
其中,
<mrow> <msub> <mi>R</mi> <mi>&amp;theta;</mi> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mfrac> <mrow> <msub> <mi>sa</mi> <mi>z</mi> </msub> </mrow> <mrow> <mi>L</mi> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> </mrow> </mfrac> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>sa</mi> <mi>x</mi> </msub> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mo>&amp;lsqb;</mo> <msup> <mi>L</mi> <mn>2</mn> </msup> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>&amp;rsqb;</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mi>x</mi> </msub> <mo>/</mo> <mi>L</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mi>s</mi> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> </mrow> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mfrac> <mrow> <mo>-</mo> <msub> <mi>sa</mi> <mi>x</mi> </msub> </mrow> <mrow> <mi>L</mi> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> </mrow> </mfrac> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>sa</mi> <mi>z</mi> </msub> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mo>&amp;lsqb;</mo> <msup> <mi>L</mi> <mn>2</mn> </msup> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>/</mo> <mi>L</mi> <mo>)</mo> </mrow> <mn>2</mn> </msup> </mrow> </msqrt> <mo>&amp;rsqb;</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mi>z</mi> </msub> <mo>/</mo> <mi>L</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>a</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mi>z</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msubsup> <mi>R</mi> <mi>a</mi> <mi>T</mi> </msubsup> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>a</mi> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>a</mi> <mi>z</mi> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
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
若采用磁力计传感器:计算
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>m</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mi>z</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msubsup> <mi>R</mi> <mi>m</mi> <mi>T</mi> </msubsup> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>m</mi> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>m</mi> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>v</mi> <mrow> <mi>m</mi> <mi>z</mi> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
其中Rm是磁力传感器芯片相对于智能机的姿态转换矩阵;{vmx,vmy,vmz}是智能机上磁力传感器检测到的三个值或这三个值经滤波的结果;
再计算
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>m</mi> <mrow> <mn>0</mn> <mi>x</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow> <mn>0</mn> <mi>y</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow> <mn>0</mn> <mi>z</mi> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msubsup> <mi>R</mi> <mi>&amp;theta;</mi> <mi>T</mi> </msubsup> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>m</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mi>z</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
利用磁力计计算方位角的三角函数为:
<mrow> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mi>&amp;phi;</mi> <mo>=</mo> <mfrac> <msub> <mi>m</mi> <mrow> <mn>0</mn> <mi>x</mi> </mrow> </msub> <msqrt> <mrow> <msubsup> <mi>m</mi> <mrow> <mn>0</mn> <mi>x</mi> </mrow> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>m</mi> <mrow> <mn>0</mn> <mi>y</mi> </mrow> <mn>2</mn> </msubsup> </mrow> </msqrt> </mfrac> <mo>,</mo> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mi>&amp;phi;</mi> <mo>=</mo> <mfrac> <msub> <mi>m</mi> <mrow> <mn>0</mn> <mi>y</mi> </mrow> </msub> <msqrt> <mrow> <msubsup> <mi>m</mi> <mrow> <mn>0</mn> <mi>x</mi> </mrow> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>m</mi> <mrow> <mn>0</mn> <mi>y</mi> </mrow> <mn>2</mn> </msubsup> </mrow> </msqrt> </mfrac> <mo>,</mo> </mrow>
带入公式(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],
<mrow> <msub> <mi>q</mi> <mn>0</mn> </msub> <mo>=</mo> <msqrt> <mrow> <mn>1</mn> <mo>-</mo> <msubsup> <mi>q</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>-</mo> <msubsup> <mi>q</mi> <mn>2</mn> <mn>2</mn> </msubsup> <mo>-</mo> <msubsup> <mi>q</mi> <mn>3</mn> <mn>2</mn> </msubsup> </mrow> </msqrt> <mo>,</mo> </mrow>
则Rg0矩阵为:
<mrow> <msub> <mi>R</mi> <mrow> <mi>g</mi> <mn>0</mn> </mrow> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
(b)如果检测智能机上的旋转矢量传感器有4个数据,
q0=values[3],q1=values[0],q2=values[1],q3=values[2],
则Rg0矩阵为:
<mrow> <msub> <mi>R</mi> <mrow> <mi>g</mi> <mn>0</mn> </mrow> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
(c)智能机上指定传感器类型为旋转矢量类型TYPE_ROTATION_VECTOR,实时得到旋转矢量传感器的观测值;利用智能机上的旋转矢量转矩阵函数将传感器的观测值转换成绘图转换矩阵R44,R44矩阵的左上角3x3子阵是Rg0
然后根据智能机旋转矢量传感器坐标系定义的不同,采取以下几种情况之一得到Rg:
若旋转矢量传感器的X轴指向东,Y轴指向北,则
<mrow> <msub> <mi>R</mi> <mi>g</mi> </msub> <mo>=</mo> <msub> <mi>R</mi> <mrow> <mi>g</mi> <mn>0</mn> </mrow> </msub> <msup> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mrow></mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> </mtr> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mo>;</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>
若旋转矢量传感器的X轴指向北,Y轴指向西,则
Rg=Rg0; (3)
若旋转矢量传感器的X轴指向南,Y轴指向东,则
<mrow> <msub> <mi>R</mi> <mi>g</mi> </msub> <mo>=</mo> <msub> <mi>R</mi> <mrow> <mi>g</mi> <mn>0</mn> </mrow> </msub> <msup> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> </mtr> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mrow></mrow> </mtd> </mtr> <mtr> <mtd> <mrow></mrow> </mtd> <mtd> <mrow></mrow> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mo>;</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>
方法(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);
<mrow> <msub> <mi>b</mi> <mi>x</mi> </msub> <mo>=</mo> <msqrt> <mrow> <msup> <msub> <mi>h</mi> <mi>x</mi> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>h</mi> <mi>y</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> <mo>;</mo> </mrow>
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矩阵公式如下:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>1</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>+</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mi>q</mi> <mn>2</mn> </msub> <msub> <mi>q</mi> <mn>3</mn> </msub> <mo>-</mo> <msub> <mi>q</mi> <mn>0</mn> </msub> <msub> <mi>q</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <msup> <msub> <mi>q</mi> <mn>0</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>1</mn> </msub> <mn>2</mn> </msup> <mo>-</mo> <msup> <msub> <mi>q</mi> <mn>2</mn> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>q</mi> <mn>3</mn> </msub> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
第8步:回到第3步继续接收陀螺仪运动数据更新姿态4元数q0~q3,在循环的过程中每次到第7步都能输出当前的Rg矩阵和四元数。
2.智能机显示屏的姿态测定方法,包括以下步骤:
智能机显示屏的姿态矩阵为:
<mrow> <mi>R</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mi>z</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>r</mi> <mn>11</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>12</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>13</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mn>21</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>22</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>23</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>r</mi> <mn>31</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>32</mn> </msub> </mtd> <mtd> <msub> <mi>r</mi> <mn>33</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
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不变;
(2)模式2:智能二维移动
当手指按{ΔX,ΔY}方向滑过智能机显示屏平面的时候,采用如下方法:
首先选择R矩阵右侧一列中的r13,r23,r33中哪一个分量的绝对值最大,
如果|r33|最大,Xd增加Vx=ΔXr11+ΔYr21,Yd增加Vy=ΔXr12+ΔYr22
如果|r23|最大,Xd增加Vx=ΔXr11±ΔYr31,Yd增加Vy=ΔXr12±ΔYr32
r23≥0时,±取+;r23<0时±取-;或者r23≥0时,±取-;r23<0时±取+;
如果|r13|最大,Xd增加Vx=±ΔXr31+ΔYr21,Yd增加Vy=±ΔXr32+ΔYr22
r13≥0时,±取+;r13<0时±取-;或者r13≥0时,±取-;r13<0时±取+;
(3)模式3:三维漫游移动
因为智能机显示屏只有二维,单个手指滑动只能进行二维操作,单指划过手机显示屏时ΔX和ΔY与滑动位移成正比;此时操作智能机的用户双指滑动触碰智能机操作实现3维操作:采用双指合拢相当于ΔZ<0,双指拉开相当于ΔZ>0,或者双指合拢相当于ΔZ>0,双指拉开相当于ΔZ<0;当智能机接收到手指控制信息{ΔX,ΔY,ΔZ}的时候,
Xd增加Vx=ΔXr11+ΔYr21+ΔZr31,Yd增加Vy=ΔXr12+ΔYr22+ΔZr32,Zd增加Vz=ΔXr13+ΔYr23+ΔZr33
3)设置漫游观察者在局部坐标系里的位置和方向:
根据漫游观察者的局部坐标系坐标Xd,Yd,Zd,以及步骤1)测定得到的姿态矩阵R,利用OpenGL,OpenES,OS X OpenGL,Direct3D或osg绘图软件库中用于设定相机位姿的图形库函数,设置漫游观察者在局部坐标系里的位置和方向:
需要设定以下几个量:
(1)漫游观察者自身观察的垂直视场角θ,就是智能机显示屏上边缘中点的视线方向与下边缘中点的视线方向的夹角;
(2)漫游观察者所在的位置Xd,Yd,Zd,由步骤2)漫游方法修改;
(3)漫游者观察方向{r31,r32r33}或者用户注视点坐标(Xd+r31,Yd+r32,Zd+r33);
(4)漫游者自身向上方向的矢量{-r21,-r22,-r23},
其中步骤(3)和(4)中的rij是智能机显示屏姿态R矩阵中的第i行j列,i=2或3,j=1、2或3;
4)在局部坐标系下渲染绘制三维场景:
预先在智能机的显示屏内设置一个3维渲染图层进行三维场景渲染;
这里被绘制的三维场景中的点、线、面和物体模型的几何坐标都要转换成局部坐标系下的坐标[Xi Yi Zi]T,即与漫游者的坐标Xd,Yd,Zd在同一个局部坐标系下;用OpenGL,OpenES,OS X OpenGL,Direct3D或osg绘图软件库实现局部坐标系下的三维绘图。
4.根据权利要求3所述的方法,其特征在于:步骤4)中几何坐标转换到局部坐标系下之后,再按如下三种方法之一渲染绘制使得局部坐标系中的一个标有广告符号、文字的纹理多边形面或广告牌的正面始终正对着漫游观察者:
方法1:
假设广告符号、文字的纹理多边形面或广告牌的局部坐标系坐标在Xi,Yi,Zi,按下法设置模型绘制转换矩阵M44
ΔXi=Xi-Xd,ΔYi=Yi-Yd
M44是一个4x4矩阵,其中每一元素的值如下设定:
<mrow> <msub> <mi>M</mi> <mn>44</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Z</mi> <mi>i</mi> </msub> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
<mrow> <mi>&amp;Delta;</mi> <mi>L</mi> <mo>=</mo> <msqrt> <mrow> <msup> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> <mo>+</mo> <msup> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> <mn>2</mn> </msup> </mrow> </msqrt> <mo>,</mo> </mrow>
将M44设定为模型转换矩阵;在y-z平面上绘图即可在虚拟场景中让广告符号、文字的纹理多边形面或广告牌永远正对漫游观察者;
方法2:
(a)假设广告符号、文字的纹理多边形面或广告牌的局部坐标系坐标在Xi,Yi,Zi,按如下方法设置模型绘制转换矩阵M44
ΔXi=Xi-Xd,ΔYi=Yi-Yd
M44是一个4x4矩阵,其中每一元素的值如下设定:
<mrow> <msub> <mi>M</mi> <mn>44</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> <mo>/</mo> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Z</mi> <mi>i</mi> </msub> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow> 6
将M44设定为模型转换矩阵;
(b)在x-z平面上绘图即可在虚拟场景中让广告牌永远正对漫游观察者;
方法3:
假设广告符号、文字的纹理多边形面或广告牌的局部坐标系坐标在Xi,Yi,Zi,按如下方法设置模型绘制转换矩阵M44
ΔXi=Xi-Xd,ΔYi=Yi-Yd
M44是一个4x4矩阵,其中每一元素的值如下设定:
<mrow> <msub> <mi>M</mi> <mn>44</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&amp;Delta;X</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&amp;Delta;Y</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mi>&amp;Delta;</mi> <mi>L</mi> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mtd> <mtd> <msub> <mi>Z</mi> <mi>i</mi> </msub> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>
将M44设定为模型转换矩阵;在x-z平面上绘图即可在虚拟场景中让多边形面或广告牌永远正对漫游观察者。
5.根据权利要求3所述的方法,其特征在于:
在所述步骤3)和步骤4)之间增加如下操作:
(a)获取智能机的高度hs,纬度θs和经度
θs是智能机的纬度,是智能机的经度,由智能机上自带的GPS接受模块获取;
(b)计算智能机所在经纬度的Rv
(c)计算智能机所在纬度θs经度高度hs的地心坐标系坐标Ts
利用大地测量学中经典的转换公式:
得到Ts
其中,
hs是智能机离地面高度,
Ns是随纬度变化的卯酉圈曲率半径;
a,b是地球椭球的长短轴,是大地测量学中的已知常量;
e是偏心率,是定值;
(d)根据地球上任何一个点的经度纬度θi和高程hi得到该点地心坐标系坐标T0i=[X0i Y0i Z0i]T
利用大地测量学中经典的转换公式:
得到T0i
其中,
hi是点离地面高度,
Ni是随纬度变化的卯酉圈曲率半径;
a,b是地球椭球的长短轴,是大地测量学中的已知常量;
e是偏心率,是定值;
如果已知一个物体所在经纬度和θi,通过本步骤计算出它的地心坐标系坐标T0i
(e)地心坐标系坐标T0i转换为局部坐标系中的坐标(Xi Yi Zi)T
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>X</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Y</mi> <mi>i</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Z</mi> <mi>i</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msub> <mi>R</mi> <mi>v</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>T</mi> <mrow> <mn>0</mn> <mi>i</mi> </mrow> </msub> <mo>-</mo> <msub> <mi>T</mi> <mi>s</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>&amp;Delta;</mi> <mi>T</mi> <mo>,</mo> </mrow>
ΔT是局部坐标系中智能机显示屏的几何中心相对于智能机GPS接收天线的局部坐标系偏移。
6.根据权利要求3所述的方法,其特征在于:
权利要求3步骤2)中当手指滑动的时候,根据手指滑动速度大小给予一个初速度{Vx,Vy,Vz},Xd,Yd,Zd将不停地增加速度分量Vx,Vy,Vz,此过程中让速度分量Vx,Vy,Vz随时间推移不断衰减,其中VZ在权利要求3步骤2)模式(1)或(2)情况下恒等于零;
让速度体现到局部坐标系下的漫游位移;
Xd增加Vx
Yd增加Vy
Zd增加Vz
漫游观察者在虚拟场景中移动过程中速度大小不断衰减,
采用以下方法使Vx,Vy,Vz不停地衰减:
1)运动过程中Vx,Vy,Vz自身分别不断地乘以k=0.1~0.9999进行衰减,
运动过程中Vx自身不断地乘以k,直到Vx减小为0为止;
运动过程中Vy自身不断地乘以k,直到Vy减小为0为止;
运动过程中Vz自身不断地乘以k,直到Vz减小为0为止;
或者,
2)运动过程中Vx,Vy,Vz自身分别不断地进行以下增量操作:
Vx自身不断地增加-Vx*k,直到Vx减小为0为止;
Vy自身不断地增加-Vy*k,直到Vy减小为0为止;
Vz自身不断地增加-Vz*k,直到Vz减小为0为止;
其中k=0.0001~0.5,
以上修改Xd,Yd,Zd及Vx,Vy,Vz的过程不断循环即实现局部加速度漫游效果。
7.根据权利要求3所述的方法,其特征在于:
在步骤3)和步骤4)之间或在步骤4)之后,将智能机的显示屏设定为二维绘图模式并设置若干个二维标签,针对每一个二维标签,按如下步骤显示:
1)首先确定二维标签的中心位置u,v;
如果标签用于标注三维场景中局部坐标系坐标为(X,Y,Z)的目标,则根据以下公式确定目标显示的中心位置u,v,
ZO=r31(X-Xd)+r32(Y-Yd)+r33(Z-Zd),
式中:cx,cy是智能机显示屏中心点的坐标,若显示屏是矩形,cx=屏宽/2,cy=屏高/2;
r11~r33是R矩阵对应行列的元素;
h是显示屏上下边缘垂直像素长,θ是漫游观察者自身观察的垂直视场角,
Xd,Yd,Zd是漫游观察者在局部坐标系中的坐标;
如果满足ZO>0且u,v在显示屏范围内,则u,v保持不变,
否则需要按下法修正u,v;
若ZO=0则将[u v]替换为从点(cx,cy)出发,
按矢量{r11(X-Xd)+r12(Y-Yd)+r13(Z-Zd),r21(X-Xd)+r22(Y-Yd)+r23(Z-Zd)},
方向的射线与显示屏边缘相交的2维点;若ZO>0则将u,v替换成从点(cx,cy)到点(u,v)的连线与显示屏边缘相交的2维点;若ZO<0则将u,v替换成从点(u,v)到点(cx,cy)延长线与显示屏边缘相交的2维点;
如果二维标签不是用于标注目标,u,v为显示屏范围内的一个由界面设计者设定的像素坐标,或是用户手指触摸或鼠标点击的显示屏像素坐标;
2)按下述方法(1)或(2)计算矢量{Qx,Qy}:
方法(1)Qx=-r23/La,Qy=r13/La;
其中r23,r13是权利要求2所述的方法中的R矩阵对应行列的元素,
<mrow> <mi>L</mi> <mi>a</mi> <mo>=</mo> <msqrt> <mrow> <msubsup> <mi>r</mi> <mn>13</mn> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>r</mi> <mn>23</mn> <mn>2</mn> </msubsup> </mrow> </msqrt> <mo>;</mo> </mrow>
方法(2)利用权利要求1所述的方法(1)所述加速度计的前两个输出值ax,ay得到Qx=-ay/La,Qy=ax/La,
3)在二维平面上经过以下矩阵旋转变换以后再绘制二维标签:
<mrow> <msup> <mi>X</mi> <mo>&amp;prime;</mo> </msup> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>u</mi> </mtd> </mtr> <mtr> <mtd> <mi>v</mi> </mtd> </mtr> </mtable> </mfenced> <mo>&amp;PlusMinus;</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>Q</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>Q</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <msub> <mi>Q</mi> <mi>y</mi> </msub> </mrow> </mtd> <mtd> <msub> <mi>Q</mi> <mi>x</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mrow> <mo>(</mo> <mi>X</mi> <mo>-</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>u</mi> </mtd> </mtr> <mtr> <mtd> <mi>v</mi> </mtd> </mtr> </mtable> </mfenced> <mo>)</mo> </mrow> <mo>,</mo> </mrow>
二维标签上每一点X,经过上式变换到坐标X’显示出来;
式中±取+是正放显示,取-是倒放显示,标签的水平轴始终平行于地面。
8.根据权利要求3所述的方法,其特征在于:
所述三维场景为一个空心的三维形体,三维形体为空心球,空心立方体、空心柱体、空心正多面体或空心锥体,三维形体的内壁以全景图作为纹理进行渲染;所述漫游观察者在虚拟场景中位于三维形体内部的某一点,从三维形体内部观察三维形体的内壁,实现利用智能机显示屏姿态控制全景浏览。
9.控制局部坐标系中三维物体姿态的方法,其特征在于:
(1)按权利要求1所述的方法得到的智能机姿态矩阵Rg
(2)利用智能机姿态矩阵Rg控制局部坐标系中三维物体的姿态:
在绘制三维物体之前,将Rg矩阵设定为仿真软件系统中的模型转换矩阵M44的左上角3x3矩阵
即实现利用智能机姿态控制局部坐标系中三维物体的姿态。
CN201410163542.0A 2013-12-29 2014-04-23 智能机姿态测定及虚拟现实漫游方法 Active CN104748746B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410163542.0A CN104748746B (zh) 2013-12-29 2014-04-23 智能机姿态测定及虚拟现实漫游方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN2013107361701 2013-12-29
CN201310736179 2013-12-29
CN2013107361792 2013-12-29
CN201310736170 2013-12-29
CN201410163542.0A CN104748746B (zh) 2013-12-29 2014-04-23 智能机姿态测定及虚拟现实漫游方法

Publications (2)

Publication Number Publication Date
CN104748746A CN104748746A (zh) 2015-07-01
CN104748746B true CN104748746B (zh) 2017-11-03

Family

ID=53477589

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201410163542.0A Active CN104748746B (zh) 2013-12-29 2014-04-23 智能机姿态测定及虚拟现实漫游方法
CN201410466348.XA Active CN104748751B (zh) 2013-12-29 2014-09-12 姿态矩阵的计算方法及基于姿态矩阵的定位导航方法
CN201480044865.6A Active CN105474033B (zh) 2013-12-29 2014-12-26 智能机姿态测定、全景影像生成及目标识别方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201410466348.XA Active CN104748751B (zh) 2013-12-29 2014-09-12 姿态矩阵的计算方法及基于姿态矩阵的定位导航方法
CN201480044865.6A Active CN105474033B (zh) 2013-12-29 2014-12-26 智能机姿态测定、全景影像生成及目标识别方法

Country Status (2)

Country Link
CN (3) CN104748746B (zh)
WO (1) WO2015096806A1 (zh)

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105004342A (zh) * 2015-07-15 2015-10-28 成都万维图新信息技术有限公司 一种基于互联网的旅游数据处理方法
CN105395252A (zh) * 2015-12-10 2016-03-16 哈尔滨工业大学 具有人机交互的可穿戴式血管介入手术三维立体图像导航装置
JP6362634B2 (ja) * 2016-02-05 2018-07-25 株式会社バンダイナムコエンターテインメント 画像生成システム、ゲーム装置及びプログラム
CN105911576B (zh) * 2016-04-08 2018-09-07 北京无线电计量测试研究所 确定分布式协同系统中副分系统的位置信息的方法及装置
CN107295393B (zh) * 2016-04-11 2019-12-13 腾讯科技(北京)有限公司 媒体播放中的附加媒体展示方法及装置以及计算设备和计算机可读存储介质
CN107644395B (zh) * 2016-07-21 2021-08-10 荣耀终端有限公司 图像处理方法以及移动设备
TWI614640B (zh) * 2016-08-11 2018-02-11 拓景科技股份有限公司 實境資訊影片之播放管理方法及系統,及其相關電腦程式產品
CN106352897B (zh) * 2016-08-26 2018-06-15 杨百川 一种基于单目视觉传感器的硅mems陀螺误差估计与校正方法
US10169914B2 (en) * 2016-08-26 2019-01-01 Osense Technology Co., Ltd. Method and system for indoor positioning and device for creating indoor maps thereof
CN107037403B (zh) * 2016-09-26 2020-07-24 蔚来汽车有限公司 基于增强现实的物体相对定位方法
CN106444809B (zh) * 2016-10-12 2024-04-16 湖南绿野航空科技有限公司 一种无人机飞行控制器
TWI596366B (zh) * 2016-10-24 2017-08-21 財團法人工業技術研究院 定位方法與其影像擷取裝置
CN106507086B (zh) * 2016-10-28 2018-08-31 北京灵境世界科技有限公司 一种漫游实景vr的3d呈现方法
CN106530218B (zh) * 2016-10-28 2020-04-10 浙江宇视科技有限公司 一种坐标转换方法及装置
CN106598229B (zh) * 2016-11-11 2020-02-18 歌尔科技有限公司 一种虚拟现实场景的生成方法、设备及虚拟现实系统
CN106403959A (zh) * 2016-11-22 2017-02-15 天津海运职业学院 一种应用多传感器阵列的电磁定位系统
CN106610721A (zh) * 2016-12-16 2017-05-03 飞狐信息技术(天津)有限公司 实现同时响应陀螺仪与手势拖拽交互的方法和装置及手机
JP6866646B2 (ja) * 2017-01-16 2021-04-28 オムロン株式会社 センサ支援システム、端末、センサおよびセンサ支援方法
CN107145706B (zh) * 2017-03-30 2020-09-18 重庆爱奇艺智能科技有限公司 虚拟现实vr设备融合算法性能参数的评估方法及装置
CN107462244A (zh) * 2017-04-24 2017-12-12 北京航空航天大学 一种基于gps定位和航摄图像匹配的航空遥感平台姿态角高精度测量方法
CN107402004B (zh) * 2017-07-28 2021-03-09 歌尔光学科技有限公司 传感器的姿态信息获取方法及装置
CN107493531B (zh) * 2017-08-04 2019-11-08 歌尔科技有限公司 一种头部姿态检测方法、装置和耳机
CN107545040B (zh) * 2017-08-04 2020-09-08 深圳航天智慧城市系统技术研究院有限公司 一种在计算机三维地理信息场景中标注方向的方法及系统
CN109389638B (zh) * 2017-08-08 2020-11-06 重庆虚拟实境科技有限公司 摄影机位置确定方法及系统
CN107516327B (zh) * 2017-08-21 2023-05-16 腾讯科技(上海)有限公司 基于多层滤波确定相机姿态矩阵的方法及装置、设备
CN110036259B (zh) * 2017-09-30 2021-03-30 华为技术有限公司 一种姿态矩阵的计算方法及设备
TWI649721B (zh) * 2017-12-06 2019-02-01 凌通科技股份有限公司 無人飛行機之全景拍照方法與使用其之無人飛行機
CN109900238B (zh) * 2017-12-08 2021-01-22 中国电信股份有限公司 基站天线角的测量方法、装置和计算机可读存储介质
CN108492123B (zh) * 2018-01-17 2022-02-15 上海大兮软件科技有限公司 一种基于虚拟现实技术的广告发布系统及其发布方法
CN110148205B (zh) * 2018-02-11 2023-04-25 北京四维图新科技股份有限公司 一种基于众包影像的三维重建的方法和装置
CN108444452B (zh) * 2018-02-11 2020-11-17 武汉雄楚高晶科技有限公司 目标经纬度和拍摄装置的三维空间姿态的检测方法及装置
GB2571306A (en) * 2018-02-23 2019-08-28 Sony Interactive Entertainment Europe Ltd Video recording and playback systems and methods
CN108801274B (zh) * 2018-04-16 2021-08-13 电子科技大学 一种融合双目视觉和差分卫星定位的地标地图生成方法
CN110417489B (zh) * 2018-04-26 2021-09-17 杭州海康机器人技术有限公司 一种无人机定向天线的校准方法及装置
CN108682036B (zh) * 2018-04-27 2022-10-25 腾讯科技(深圳)有限公司 位姿确定方法、装置及存储介质
FR3082329B1 (fr) * 2018-06-06 2020-05-15 Thales Procede de securisation du fonctionnement d'un systeme de vision synthetique d'un aeronef, produit programme d'ordinateur et systeme associes
CN108994820A (zh) * 2018-07-27 2018-12-14 国网江苏省电力有限公司徐州供电分公司 用于带电作业的机器人系统及作业场景构建方法
CN109407935A (zh) * 2018-09-14 2019-03-01 歌尔科技有限公司 一种虚拟现实显示控制方法、装置和系统
CN109490926B (zh) * 2018-09-28 2021-01-26 浙江大学 一种基于双目相机和gnss的路径规划方法
CN111145248B (zh) * 2018-11-06 2023-06-27 北京地平线机器人技术研发有限公司 位姿信息确定方法、确定装置和电子设备
CN109460077B (zh) * 2018-11-19 2022-05-17 深圳博为教育科技有限公司 一种自动跟踪方法、自动跟踪设备及自动跟踪系统
CN111220156B (zh) * 2018-11-25 2023-06-23 星际空间(天津)科技发展有限公司 一种基于城市实景的导航方法
CN109871739B (zh) * 2018-12-27 2023-06-23 南京国图信息产业有限公司 基于yolo-sioctl的机动站自动目标检测与空间定位方法
CN109785373B (zh) * 2019-01-22 2022-12-23 东北大学 一种基于散斑的六自由度位姿估计系统及方法
CN109636077B (zh) * 2019-02-19 2022-11-25 浙江大学 基于双重局部位姿变换的变节点装配路径规划方法
CN110036411B (zh) * 2019-02-27 2023-07-28 香港应用科技研究院有限公司 生成电子三维漫游环境的装置和方法
CN109920064A (zh) * 2019-03-14 2019-06-21 烟台九田自动化科技有限公司 一种基于增强现实技术的模型空间位姿的精确调整方法
CN110276471B (zh) * 2019-03-25 2023-06-16 东北大学 优化维修排队系统的方法
CN109827547B (zh) * 2019-03-27 2021-05-04 中国人民解放军战略支援部队航天工程大学 一种分布式多传感器空间目标同步关联方法
CN109959392B (zh) * 2019-04-04 2021-05-04 上海扩博智能技术有限公司 用于智能冰箱的运动传感器校准方法、系统、设备及介质
CN110033447B (zh) * 2019-04-12 2022-11-08 东北大学 一种基于点云方法的高铁重轨表面缺陷检测方法
CN110766738B (zh) * 2019-05-08 2024-03-26 叠境数字科技(上海)有限公司 基于多视角深度传感器的虚拟试鞋方法
CN110189315B (zh) * 2019-05-28 2022-09-16 李峥嵘 一种风电机组叶片无人机自动定位方法
CN112149467A (zh) * 2019-06-28 2020-12-29 北京京东尚科信息技术有限公司 飞机集群执行任务的方法和长机
CN110427106B (zh) * 2019-07-19 2022-07-12 武汉恒新动力科技有限公司 体感动作数据处理方法、设备及计算机可读存储介质
CN110490155B (zh) * 2019-08-23 2022-05-17 电子科技大学 一种禁飞空域无人机检测方法
CN110533647B (zh) * 2019-08-28 2023-02-03 东北大学 一种基于线特征匹配的液晶屏Mark点定位方法
CN110580720B (zh) * 2019-08-29 2023-05-12 天津大学 一种基于全景图的相机位姿估计方法
CN110609569B (zh) * 2019-09-26 2022-07-15 温岭市非普电气有限公司 一种应用于电力杆塔的自主控制无人机精准巡检系统和方法
CN112166340B (zh) * 2019-10-17 2024-04-05 深圳市大疆创新科技有限公司 获取雷达位置的方法、雷达以及可移动平台
CN110908510B (zh) * 2019-11-08 2022-09-02 四川大学 一种倾斜摄影建模数据在沉浸式显示设备中的应用方法
CN110930508B (zh) * 2019-11-27 2023-03-24 西安应用光学研究所 二维光电视频与三维场景融合方法
CN110954055A (zh) * 2019-12-17 2020-04-03 中国人民解放军海军航空大学 一种球面两站测向交叉定位计算方法
CN111091117B (zh) * 2019-12-31 2021-01-29 北京城市网邻信息技术有限公司 用于二维全景图像的目标检测方法、装置、设备、介质
CN111198576A (zh) * 2020-01-09 2020-05-26 哈尔滨工程大学 人工智能大数据下粒子化无人机组控制方法、介质及机组
CN111273777A (zh) * 2020-02-11 2020-06-12 Oppo广东移动通信有限公司 虚拟内容的控制方法、装置、电子设备及存储介质
CN111383205B (zh) * 2020-03-11 2023-03-24 西安应用光学研究所 一种基于特征点和三维模型的图像融合定位方法
CN113379822B (zh) * 2020-03-16 2024-03-22 天目爱视(北京)科技有限公司 一种基于采集设备位姿信息获取目标物3d信息的方法
CN113327291B (zh) * 2020-03-16 2024-03-22 天目爱视(北京)科技有限公司 一种基于连续拍摄对远距离目标物3d建模的标定方法
CN111402428B (zh) * 2020-03-23 2023-04-07 青岛大学 一种基于argis的地下管线探查方法
CN111445453B (zh) * 2020-03-25 2023-04-25 森兰信息科技(上海)有限公司 摄像机获取的琴键图像的偏移判断方法、系统、介质及装置
CN111368577B (zh) * 2020-03-28 2023-04-07 吉林农业科技学院 一种图像处理系统
CN111768490B (zh) * 2020-05-14 2023-06-27 华南农业大学 基于迭代最近点与人工干预的植物三维建模方法及系统
CN111681315B (zh) * 2020-06-10 2022-10-04 中国电子科技集团公司第二十八研究所 一种基于三维gis地图的高空与剖面标绘定位方法
CN111596693B (zh) * 2020-06-17 2023-05-26 中国人民解放军国防科技大学 基于云台相机的无人机对地面目标跟踪控制方法及系统
CN112070885B (zh) * 2020-08-31 2024-05-14 中国科学院空天信息创新研究院 一种基于摄影测量光度立体模型的三维重建方法和系统
CN112068703B (zh) 2020-09-07 2021-11-16 北京字节跳动网络技术有限公司 目标物体的控制方法、装置、电子设备及存储介质
CN112085770A (zh) * 2020-09-10 2020-12-15 上海庞勃特科技有限公司 一种用于乒乓球轨迹捕捉的双目多目标匹配与筛选方法
CN112066977B (zh) * 2020-09-15 2024-02-27 中国人民解放军63660部队 一种光电测量网络多目标匹配与编目方法
CN112182774B (zh) * 2020-10-16 2024-03-26 西安应用光学研究所 一种直升机载环境下的三维场景实时更新方法
CN112288824B (zh) * 2020-10-27 2024-04-12 中国科学院上海微系统与信息技术研究所 一种基于现实场景的长焦相机标定装置及标定方法
CN112468716B (zh) * 2020-11-02 2022-07-19 航天信息股份有限公司 摄像头视角矫正方法、装置、存储介质及电子设备
CN112492292B (zh) * 2020-11-27 2023-04-11 天目爱视(北京)科技有限公司 一种自由姿态的智能视觉3d信息采集设备
CN112541932B (zh) * 2020-11-30 2024-03-26 西安电子科技大学昆山创新研究院 基于双光相机不同焦距变换参数的多源图像配准方法
CN112711024B (zh) * 2020-12-04 2024-02-09 中国科学技术大学 基于视距空间最大化的音频室内定位系统节点布设方法
CN112506351A (zh) * 2020-12-23 2021-03-16 武汉小绿人动力技术股份有限公司 一种室外赛车场内沉浸式赛车系统及控制方法
CN112762955B (zh) * 2020-12-25 2022-07-19 灵鹿科技(嘉兴)股份有限公司 一种导航系统定位纠偏方法
CN113012032B (zh) * 2021-03-03 2022-12-09 中国人民解放军战略支援部队信息工程大学 一种自动标注地名的空中全景图像显示方法
CN112989982B (zh) * 2021-03-05 2024-04-30 佛山科学技术学院 一种无人车图像采集控制方法及系统
CN113050692B (zh) * 2021-03-26 2023-01-13 极研(福建)信息科技有限公司 一种具有社交功能的智能陪伴设备
CN113112545B (zh) * 2021-04-15 2023-03-21 西安电子科技大学 基于计算机视觉的手持移动打印装置定位方法
CN113034571B (zh) * 2021-04-16 2023-01-20 广东工业大学 一种基于视觉—惯性的物体三维尺寸测量方法
CN113407027B (zh) * 2021-06-04 2023-03-03 浙江商汤科技开发有限公司 位姿获取方法及装置和电子设备、存储介质
CN113487677B (zh) * 2021-06-07 2024-04-12 电子科技大学长三角研究院(衢州) 一种基于任意分布式配置的多ptz相机的室外中远距场景标定方法
CN113310505B (zh) * 2021-06-15 2024-04-09 苏州挚途科技有限公司 传感器系统的外参标定方法、装置及电子设备
CN113658263B (zh) * 2021-06-17 2023-10-31 石家庄铁道大学 基于视觉场景的电磁干扰源可视化标注方法
CN113724326B (zh) * 2021-08-17 2022-12-20 南京航空航天大学 一种自主空中加油场景下锥套目标的单目视觉位姿解算方法
CN113739765B (zh) * 2021-08-23 2024-03-26 中国人民解放军63660部队 一种无额外控制点的双目协同落点测量方法
CN113483669B (zh) * 2021-08-24 2023-02-17 凌云光技术股份有限公司 一种基于立体靶标的多传感器位姿标定方法及装置
CN113680059B (zh) * 2021-08-31 2024-05-14 中科锐新(北京)科技有限公司 一种户外场景ar游戏定位装置和方法
CN113795053B (zh) * 2021-09-16 2023-07-07 四川智动木牛智能科技有限公司 一种智能农机自动出入机库方法
CN115937722A (zh) * 2021-09-30 2023-04-07 华为技术有限公司 一种设备定位方法、设备及系统
CN116021506A (zh) * 2021-10-26 2023-04-28 美智纵横科技有限责任公司 机器人控制方法、装置和存储介质
CN114234811B (zh) * 2021-12-21 2024-04-02 长三角哈特机器人产业技术研究院 基于视觉和激光测距的管路粗定位方法及系统
CN114234876B (zh) * 2021-12-23 2023-06-23 中国人民解放军空军军医大学 一种测量远方位目标宽度的方法
CN114565714B (zh) * 2022-02-11 2023-05-23 山西支点科技有限公司 一种单目视觉传感器混合式高精度三维结构恢复方法
CN114543840B (zh) * 2022-02-25 2023-07-25 四川大学 环境因素对空三摄影影响实验装置和测评方法
CN114570658A (zh) * 2022-03-04 2022-06-03 赛那德科技有限公司 一种基于动态视觉的物流包裹分拣方法、系统及电子设备
CN114820485B (zh) * 2022-04-15 2024-03-26 华南理工大学 一种基于机载图像测量波浪爬高的方法
CN114842173B (zh) * 2022-04-15 2023-08-29 北华航天工业学院 一种增强现实系统及其控制方法
CN114742980B (zh) * 2022-04-15 2022-12-16 北京航空航天大学云南创新研究院 结合关系图谱的三维展馆浏览方法
CN114820504B (zh) * 2022-04-22 2023-03-21 江苏泽景汽车电子股份有限公司 图像融合偏差的检测方法、装置、电子设备及存储介质
CN114546141B (zh) * 2022-04-25 2022-07-12 成都柔水科技有限公司 一种基于ue5的适用于gis应用的相机控制方法
CN114904844A (zh) * 2022-04-26 2022-08-16 中南大学 一种针对精密复杂零件的机器人激光清洗路径规划与控制的方法
CN114963029B (zh) * 2022-06-20 2024-04-02 天津精仪精测科技有限公司 一种基于负压波监测的多径管网泄漏检测方法
CN114897965B (zh) * 2022-07-12 2022-09-13 北京飞渡科技有限公司 一种三维场景开敞度分析的方法及系统
CN115082560B (zh) * 2022-07-22 2022-11-18 季华实验室 一种物料位姿识别方法、装置、电子设备及上料系统
CN115512083B (zh) * 2022-09-20 2023-04-11 广西壮族自治区地图院 一种多倾斜角度数控沙盘自适应投影方法
CN115631362A (zh) * 2022-09-26 2023-01-20 北京霍里思特科技有限公司 一种铁器的识别方法及装置
CN115497087B (zh) * 2022-11-18 2024-04-19 广州煌牌自动设备有限公司 一种餐具姿态的识别系统及其方法
CN115855117B (zh) * 2023-02-16 2023-06-02 深圳佑驾创新科技有限公司 相机和惯性测量单元相对车体安装姿态的联合标定方法
CN116309686A (zh) * 2023-05-19 2023-06-23 北京航天时代光电科技有限公司 游泳运动员视频定位测速方法、装置、设备及存储介质
CN116787443B (zh) * 2023-07-26 2023-11-21 中国科学院宁波材料技术与工程研究所 基于单位对偶四元数的并联机构运动学标定方法和系统
CN117058209B (zh) * 2023-10-11 2024-01-23 山东欧龙电子科技有限公司 一种基于三维地图的飞行汽车视觉图像深度信息计算方法
CN117392571B (zh) * 2023-12-08 2024-02-13 中国电力科学研究院有限公司 一种基于无人机图像的架空输配电线路验收方法及系统
CN117762151B (zh) * 2024-02-22 2024-04-26 北京航空航天大学 无需标号的智能体集群分布式形状控制方法和智能体

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1303501C (zh) * 2004-09-30 2007-03-07 清华大学 手机游戏的互动信息感知方法及嵌入手机的智能游戏平台
CN101178615A (zh) * 2007-12-12 2008-05-14 美新半导体(无锡)有限公司 姿态及运动感应系统及使用该系统的便携式电子设备
CN101290229A (zh) * 2008-06-13 2008-10-22 哈尔滨工程大学 硅微航姿系统惯性/地磁组合方法
JP2010049076A (ja) * 2008-08-22 2010-03-04 Yamaha Corp 方位追従表示装置、方位追従表示方法および方位追従表示プログラム
CN102297693B (zh) * 2010-06-24 2013-03-27 鼎亿数码科技(上海)有限公司 测量物体位置和方位的方法
CN101917661B (zh) * 2010-08-20 2013-01-09 宇龙计算机通信科技(深圳)有限公司 一种移动终端通讯方法及移动终端
CN201917661U (zh) * 2010-11-29 2011-08-03 浙江亚特电器有限公司 一种移动机器人定位系统
CN102121827B (zh) * 2010-11-29 2013-12-18 浙江亚特电器有限公司 一种移动机器人定位系统及其定位方法
US20120229624A1 (en) * 2011-03-08 2012-09-13 Bank Of America Corporation Real-time image analysis for providing health related information
CN102538820B (zh) * 2011-12-13 2015-05-20 中国测绘科学研究院 一种航空遥感集成系统检校方法
CN103369135B (zh) * 2013-06-20 2014-12-31 清华大学 移动设备位置识别的方法和系统
CN103363988B (zh) * 2013-07-24 2016-02-03 武汉诚迈科技有限公司 一种利用智能手机传感器实现地磁室内定位导航的方法

Also Published As

Publication number Publication date
CN104748746A (zh) 2015-07-01
WO2015096806A1 (zh) 2015-07-02
CN105474033A (zh) 2016-04-06
CN104748751A (zh) 2015-07-01
CN104748751B (zh) 2019-02-22
CN105474033B (zh) 2017-06-06

Similar Documents

Publication Publication Date Title
CN104748746B (zh) 智能机姿态测定及虚拟现实漫游方法
CN107564089B (zh) 三维图像处理方法、装置、存储介质和计算机设备
CN104658012B (zh) 一种基于惯性与光学测量融合的运动捕捉方法
CN104748728B (zh) 智能机姿态矩阵计算方法及其应用于摄影测量的方法
CN104995665B (zh) 用于在真实环境中表示虚拟信息的方法
US9223408B2 (en) System and method for transitioning between interface modes in virtual and augmented reality applications
CN108510592A (zh) 真实物理模型的增强现实展示方法
Noh et al. A review on augmented reality for virtual heritage system
CN105046752B (zh) 用于在真实环境的视图中描绘虚拟信息的方法
CN101619974B (zh) 方位跟随显示设备、方位跟随显示方法
CN104995666B (zh) 用于在真实环境中表示虚拟信息的方法
CN102243074B (zh) 基于光线追踪技术的航空遥感成像几何变形仿真方法
CN108401461A (zh) 三维建图方法、装置、系统、云端平台、电子设备和计算机程序产品
KR101101114B1 (ko) 배경 이미지를 이용한 3차원 아바타 서비스 제공 시스템 및 방법
CN108028871A (zh) 移动设备上的无标记的多用户多对象增强现实
CN102750704B (zh) 一种摄像机分步自标定方法
US20170046878A1 (en) Augmented reality mobile application
CN104748739B (zh) 一种智能机增强现实实现方法
CN104903935B (zh) 立体视觉地图显示系统
CN107015654A (zh) 基于增强现实的导航方法及装置
CN102997913A (zh) 用于确定物体姿态的方法及装置
CN108170297A (zh) 实时六自由度vr/ar/mr设备定位方法
CN106326334A (zh) 一种电子地图的显示、生成方法和装置
CN107945270A (zh) 一种三维数字沙盘系统
CN110119189A (zh) Slam系统的初始化、ar控制方法、装置和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 430079 Hubei Province, Wuhan city Hongshan District hung Chu Road Chenjiawan Luo GUI District 6 Building 801

Applicant after: Liu Jin

Address before: 430079 Hubei Province, Wuhan city Hongshan District Luoyu Road No. 129 Wuhan University Institute of Surveying and mapping

Applicant before: Liu Jin

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191021

Address after: 430050 Building 2, Shilipu Wuke dormitory, Hanyang District, Wuhan City, Hubei Province

Patentee after: Wuhan Xiong Chu Gao Jing Technology Co., Ltd.

Address before: 430079 Hubei Province, Wuhan city Hongshan District hung Chu Road Chenjiawan Luo GUI District 6 Building 801

Patentee before: Liu Jin