本发明涉及数据处理领域,尤其涉及一种控制hmd视角的方法及头戴显示设备。
背景技术:
在头戴显示设备hmd(英文全称:headmountdisplay)向用户提供的虚拟世界中,头戴显示设备通过检测用户的头部姿态来确定提供给用户的物理信息,用户的头部姿态通常是通过头戴显示设备中的imu(inertialmeasurementunit;惯性测量单元)传感器来捕捉。
imu传感器包括陀螺仪、加速度计、磁力计等,现有方案是通过融合陀螺仪、加速度计、磁力计的测量数据来进行姿态估计。具体的,如图1所示,hmd设备定义了三个角度(roll、yaw、pitch)来确定头戴显示设备的姿态,其中,roll为横滚角,yaw为航向角,pitch为俯仰角,为了使姿态估计更加准确,加速度计用于对陀螺仪的roll方向和pitch方向的数据进行补偿,磁力计用于对陀螺仪的yaw方向的数据进行补偿。其中,磁力计可以测量出hmd的地磁强度的三个磁场分量mx、my和mz,利用这三个磁场分量就可以计算出机体坐标系的y轴相对磁北级的航向角yaw,从而对陀螺仪的yaw方向的数据进行补偿。最后,根据加速度计和磁力计补偿后的旋转方向控制hmd的视角。
由于磁力计属于静态性能稳定的传感器,在设备静止的情况下,磁力计数据应该是个固定值,但在实际使用过程中,磁力计会产生随机抖动。由于现有方案中,对陀螺仪的yaw方向的数据进行准确补偿的前提是磁力计上报数据是准确且稳定的,如果磁力计上报的数据发生抖动,就会造成错误的补偿,导致hmd出现画面抖动,影响观看效果。
技术实现要素:
本发明的目的是提供一种控制hmd视角的方法及头戴显示设备,用于解决现有技术中存在的,头戴显示设备的磁力计传感器上报的数据发生抖动,导致hmd出现画面抖动的技术问题。
为了实现上述发明目的,本发明实施例第一方面提供一种控制hmd视角的方法,包括:
鉴别头戴显示设备在航向角方向的运动状态;
若所述头戴显示设备在所述航向角方向处于预定状态,对所述头戴显示设备的磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据;
根据修正后的当前磁力计数据,控制所述头戴显示设备的视角。
可选的,对所述头戴显示设备的磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据,包括:
在鉴别出所述头戴显示设备在所述航向角方向处于预定状态的初始时刻,获取所述磁力计传感器在所述初始时刻对应的初始参考姿态下上报的参考磁力计数据;
在所述预定状态持续的时间段内,将该参考磁力计数据作为修正后的当前磁力计数据。
可选的,所述根据修正后的当前磁力计数据,控制所述头戴显示设备的视角包括:
根据所述头戴显示设备的陀螺仪传感器在所述初始参考姿态下上报的参考旋转方向对所述参考磁力计数据进行坐标转换,获得转换后的参考磁力计数据;
根据所述陀螺仪传感器上报的当前旋转方向对所述修正后的当前磁力计数据进行坐标转换,获得转换后的当前磁力计数据;
计算所述转换后的参考磁力计数据和所述转换后的当前磁力计数据之间的夹角数据;
根据所述夹角数据对所述陀螺仪传感器的当前旋转方向进行补偿,获得补偿后的旋转方向,并根据所述补偿后的旋转方向控制所述头戴显示设备的视角;
其中,所述参考磁力计数据和所述当前磁力计数据为所述头戴显示设备的机体坐标系下的数据,所述转换后的参考磁力计数据和所述转换后的当前磁力计数据为世界坐标系下的数据。
可选的,所述鉴别头戴显示设备在航向角方向的运动状态包括:
记录所述头戴显示设备的陀螺仪传感器上报的航向角数据小于或者等于航向角数据阈值的持续时间;
若所述持续时间大于或者等于预先设置的时间阈值,则确定所述头戴显示设备在所述航向角方向处于所述预定状态。
可选的,计算所述航向角数据阈值的方法包括:
根据第一航向角平均值、第二航向角平均值和第三航向角平均值中的一个或多个,确定所述航向角数据阈值;
其中,所述第一航向角平均值为在所述头戴显示设备处于静止状态时,根据所述陀螺仪传感器在第一预设时长内上报的航向角数据计算得到的平均值;
所述第二航向角平均值为在所述头戴显示设备只在横滚角方向上运动时,根据所述陀螺仪传感器在第二预设时长内上报的航向角数据计算得到的平均值;
所述第三航向角平均值为在所述头戴显示设备只在俯仰角方向上运动时,根据所述陀螺仪传感器在第三预设时长内上报的航向角数据计算得到的平均值。
本发明实施例第二方面提供一种头戴显示设备,包括:
运动状态鉴别模块,用于鉴别头戴显示设备在航向角方向的运动状态;
磁力计数据修正模块,用于在所述头戴显示设备在所述航向角方向处于预定状态时,对所述头戴显示设备的磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据;
视角控制模块,用于根据修正后的当前磁力计数据,控制所述头戴显示设备的视角。
可选的,所述磁力计数据修正模块用于:
在鉴别出所述头戴显示设备在所述航向角方向处于预定状态的初始时刻,获取所述磁力计传感器在所述初始时刻对应的初始参考姿态下上报的参考磁力计数据,并将所述参考磁力计数据保存在所述头戴显示设备中;在所述预定状态持续的时间段内,将该参考磁力计数据作为修正后的当前磁力计数据。
可选的,所述视角控制模块用于:
根据所述头戴显示设备的陀螺仪传感器在所述初始参考姿态下上报的参考旋转方向对所述参考磁力计数据进行坐标转换,获得转换后的参考磁力计数据;
根据所述陀螺仪传感器上报的当前旋转方向对所述修正后的当前磁力计数据进行坐标转换,获得转换后的当前磁力计数据;
计算所述转换后的参考磁力计数据和所述转换后的当前磁力计数据之间的夹角数据;
根据所述夹角数据对所述陀螺仪传感器的当前旋转方向进行补偿,获得补偿后的旋转方向,并根据所述补偿后的旋转方向控制所述头戴显示设备的视角;
其中,所述参考磁力计数据和所述当前磁力计数据为所述头戴显示设备的机体坐标系下的数据,所述转换后的参考磁力计数据和所述转换后的当前磁力计数据为世界坐标系下的数据。
可选的,所述运动状态鉴别模块所述运动状态鉴别模块包括存储单元和运动状态鉴别单元,其中,
所述存储单元用于存储航向角数据阈值;
所述运动状态鉴别单元,用于记录所述头戴显示设备的陀螺仪传感器上报的航向角数据小于或者等于航向角数据阈值的持续时间;并在所述持续时间大于或者等于预先设置的时间阈值时,确定所述头戴显示设备在所述航向角方向处于所述预定状态。
本发明实施例中的一个或者多个技术方案,至少具有如下技术效果或者优点:
本发明实施例的方案中,在头戴显示设备处于预定状态时,通过对头戴显示设备的磁力计数据进行修正,然后,根据修正后的当前磁力计数据,准确控制头戴显示设备的视角,可见,上述方案解决了现有技术中存在的,由于头戴显示设备的磁力计传感器上报的数据发生抖动,导致hmd出现画面产生抖动的技术问题,从而准确控制头戴显示设备视角,提高观看效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图:
图1为本发明实施例提供的hmd的roll、yaw和pitch的示意图;
图2为本发明实施例提供的控制hmd视角的方法的流程图;
图3为本发明实施例提供的鉴别hmd的运动状态的方法的流程图;
图4为本发明实施例提供的计算航向角数据阈值的方法的流程图;
图5为本发明实施例提供的头戴显示设备的功能模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,头戴显示设备可以为vr设备,ar(augmentedreality;增强现实)设备等,头戴显示设备包括陀螺仪传感器、加速度传感器和磁力计传感器等。在实际应用中,头戴显示设备上还可以设置有动作捕捉传感器、光线传感器和手势识别等传感器等,在此不作限制。
请参考图2,图2为本发明实施例提供的控制hmd视角的方法的流程图,该方法包括以下步骤。
步骤10,鉴别头戴显示设备在航向角方向的运动状态。
步骤11,若所述头戴显示设备在所述航向角方向处于预定状态,对所述头戴显示设备的磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据。
步骤12,根据修正后的当前磁力计数据,控制所述头戴显示设备的视角。
在步骤10中,运动状态是指头戴显示设备在航向角方向的状态,在实际应用中,可以采用陀螺仪传感器上报的航向角的大小表征头戴显示设备的运动状态。例如:航向角为零,则说明头戴显示设备在航向角方向上没有转动,航向角为10度,则说明头戴显示设备在航向角方向上转动了10度。预定状态包括静止状态、头戴显示设备只在横滚角方向上运动的状态、头戴显示设备只在俯仰角方向上运动的状态三种状态中的一种或多种。
本发明实施例中,由于陀螺仪传感器的误差,陀螺仪在静止状态下上报的数据也不是全零的,但在头戴显示设备在航向角方向上处于静止状态和运动状态时,陀螺仪传感器上报的航向角数据具有明显差别,因此,可以采用陀螺仪传感器上报的航向角的大小来鉴别头戴显示设备是否处于预定状态。举例来讲,假设头戴显示设备处于预定状态时,陀螺仪传感器上报的航向角的最大值为a,则在陀螺仪传感器上报的航向角小于或者等于a时,则确定头戴显示设备处于所述预定状态,而在陀螺仪传感器上报的航向角大于a时,则确定头戴显示设备没有处于所述预定状态。
本发明实施例中,在通过步骤10鉴别出头戴显示设备的运动状态后,头戴显示设备执行步骤11,对磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据。
然后,在步骤12中,根据修正后的当前磁力计数据,控制所述头戴显示设备的视角,从而避免头戴显示设备由于磁力计传感器上报的数据抖动,导致hmd出现画面抖动,实现了准确控制头戴显示设备的视角的技术效果。
接下来,对本发明实施例中的控制hmd视角的方法进行详细说明。
在步骤10中,如前所述,头戴显示设备可以通过陀螺仪传感器检测到的航向角大小,来鉴别头戴显示设备在航向角方向的运动状态。
具体的,如图3所示,步骤10包括以下步骤。
步骤101,记录所述头戴显示设备的陀螺仪传感器上报的航向角数据小于或者等于航向角数据阈值的持续时间。
在头戴显示设备开机后,头戴显示设备会记录陀螺仪传感器上报的航向角数据,如果航向角数据小于或等于航向角数据阈值,则开始记录航向角数据小于或等于航向角数据阈值的持续时间,在记录过程中,如果航向角数据大于航向角数据阈值,则将记录的持续时间清零,并重新开始记录航向角数据小于或者等于航向角数据阈值的持续时间。
步骤102,若所述持续时间大于或者等于预先设置的时间阈值,则确定所述头戴显示设备在所述航向角方向处于所述预定状态。
举例来讲,假设预先设置的时间阈值为1min,如果陀螺仪传感器上报的航向角数据小于或等于航向角数据阈值的持续时间为1min或者2min,则确定头戴显示设备当前在航向角方向上处于预定状态。在预定状态下,如果陀螺仪传感器上报的航向角数据大于航向角数据阈值,则确定头戴显示设备不再处于预定状态。然后,头戴显示设备重新开始记录航向角数据小于或者等于航向角数据阈值的持续时间,以重新鉴别头戴显示设备在航向角方向的运动状态。
其中,所述航向角数据阈值为所述头戴显示设备处于所述预定状态时,根据所述陀螺仪传感器检测到的航向角数据,确定的值。
在预定状态下,由于磁力计传感器上报的数据抖动时,会对陀螺仪传感器上报的数据进行错误补偿,导致头戴显示设备的画面产生抖动。在用户佩戴头戴显示设备转动的过程中,由于用户的运动幅度较大,这种画面抖动是不明显的,而在头戴显示设备静止时,或者用户佩戴头戴显示设备轻微晃动时,又或者头戴显示设备只在横滚角和俯仰角方向运动时,这种由于磁力计传感器上报的数据抖动,引起的画面抖动较为明显。因此,本发明实施例中,预定状态可以为静止状态、头戴显示设备只在横滚角方向上运动的状态和头戴显示设备只在俯仰角方向上运动的状态三种状态中的一种或多种,也就是说,预定状态可以只覆盖上述三种状态中的一种状态,预定状态也可以覆盖上述两种状态或三种状态,本发明实施例中,以预定状态覆盖上述三种状态为例进行说明,则计算航向角数据阈值的方法包括以下步骤,如图4所示。
步骤20,在所述头戴显示设备处于静止状态时,根据所述陀螺仪传感器在第一预设时长内上报的航向角数据计算得到第一航向角平均值。
其中,所述头戴显示设备静止可以包括两种情况,第一种可能的情况为,头戴显示设备被静止放置在一承载面上;第二种可能的情况为,用户佩戴头戴显示设备,且用户不进行任何转动动作,对于第二种情况,陀螺仪传感器在第一预设时长内上报的航向角数据可能包括陀螺仪传感器的误差所引起的数据,也有可能包括由于用户佩戴头戴显示设备时的轻微晃动引起的数据。
步骤21,在所述头戴显示设备只在横滚角方向上运动时,根据所述陀螺仪传感器在第二预设时长内上报的航向角数据计算得到第二航向角平均值。
在具体实施过程中,可以将头戴显示设备放在转盘上,控制头戴显示设备只在横滚角方向运动,在俯仰角方向和航向角方向静止,从而获得头戴显示设备的陀螺仪传感器在第二预设时长内上报的航向角数据,进而根据第二预设时长内的航向角数据,计算第二航向角平均值。
步骤22,在所述头戴显示设备只在俯仰角方向上运动时,根据所述陀螺仪传感器在第三预设时长内上报的航向角数据计算得到第三航向角平均值。
在具体实施过程中,可以将头戴显示设备放在转盘上,控制头戴显示设备只在俯仰角方向运动,在横滚角方向和航向角方向静止,然后,获得头戴显示设备的陀螺仪传感器在第三预设时长内上报的航向角数据,进而根据第三预设时长内的航向角数据,计算第三航向角平均值。
在步骤20,步骤21和步骤22中,第一预设时长、第二预设时长和第三预设时长可以为根据经验值设置的时长,第一预设时长、第二预设时长和第三预设时长可以相同,也可以不同。例如:第一预设时长、第二预设时长和第三预设时长可以均为5min;或者第一预设时长为5min,第二预设时长和第三预设时长均为3min。
然后,执行步骤23,根据第一航向角平均值、第二航向角平均值和第三航向角平均值中的一个或多个,确定所述航向角数据阈值。
在具体实施过程中,如果预定状态只覆盖上述三种状态中的一种状态,则可以直接将这种状态下的航向角平均值作为航向角数据阈值;如果预定状态覆盖上述三种状态中的多种状态,则可以从多种状态分别对应的多个航向角平均值中取最大值作为航向角数据阈值;可见,通过航向角数据阈值鉴别头戴显示设备是否处于预定状态,能够有效覆盖上述三种状态中的一种或多种。
本发明实施例中,对于每种状态,还可以直接从每种状态下的航向角数据中取最大值来确定航向角数据阈值。具体的,分别从三种状态下的航向角数据中选出最大航向角数据,即,选出头戴显示设备处于静止状态时的第一航向角最大值、选出头戴显示设备只在横滚角方向运动时的第二航向角最大值,以及头戴显示设备只在俯仰角方向上运动时的第三航向角最大值,然后,从第一航向角最大值、第二航向角最大值和第三航向角最大值中选取最大的航向角作为航向角数据阈值。在实际应用中,还可以采用其它方法计算航向角数据阈值,在此不做限制。
接下来,对步骤11进行说明,步骤11包括在头戴显示设备处于预定状态时,对磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据。
首先,将鉴别出头戴显示设备在所述航向角方向处于预定状态的初始时刻的姿态作为初始参考姿态,获取磁力计传感器在所述初始参考姿态下上报的磁力计数据,并将该磁力计数据作为参考磁力计数据。本发明实施例中,初始时刻可以为鉴别出头戴显示设备处于预定状态后,磁力计传感器上报的第一组磁力计数据的时刻,则该时刻对应的头戴显示设备的姿态即为初始参考姿态。
然后,在所述预定状态持续的时间段内,将头戴显示设备的磁力计传感器上报的当前磁力计数据都修正为参考磁力计数据,也就是说,将所述参考磁力计数据作为修正后的当前磁力计数据,直到头戴显示设备不再处于所述预定状态。
本发明实施例中,步骤12包括根据修正后的当前磁力计数据,控制头戴显示设备的视角。
首先,根据所述头戴显示设备的陀螺仪传感器在所述初始参考姿态下上报的参考旋转方向对所述参考磁力计数据进行坐标转换,获得转换后的参考磁力计数据,坐标转换的公式如下。
magrefinworldframe=orientation_ref.rotate(magcalibratedinimuframe)(1)
其中,magcalibratedinimuframe是磁力计传感器在初始参考姿态下上报的经过校准的磁力计数据,orientation_ref是陀螺仪传感器在初始参考姿态下上报的参考旋转方向,magrefinworldframe是经过坐标转换,磁力计传感器在世界坐标系下的参考磁力计数据。
然后,根据所述陀螺仪传感器上报的当前旋转方向对所述修正后的当前磁力计数据进行坐标转换,获得转换后的当前磁力计数据,坐标转换的公式如下。
maginworldframe=orientation_accel.rotate(magcalibrated)(2)
其中,magcalibrated是磁力计传感器上报的最新的当前磁力计数据,orientation_accel是经过加速度计补偿的旋转方向,即当前旋转方向,maginworldframe是经过坐标转换,磁力计传感器在世界坐标系下的最新的磁力计数据,用作和经过坐标转换的参考磁力计数据比较。
如果头戴显示设备处于预定状态,则将公式(2)中的magcalibrated修正为参考磁力计数据magcalibratedinimuframe,公式(2)变成:
vector3fmaginworldframe=orientation_accel.rotate(magcalibratedinimuframe)
然后,计算所述转换后的参考磁力计数据和所述转换后的当前磁力计数据之间的夹角数据。计算过程如下:
yawerror=maginworldframe.angle(magrefinworldframe)(3)
其中,maginworldframe为经坐标转换后的当前磁力计数据,magrefinworldframe为经坐标转换后的参考磁力计数据,maginworldframe和magrefinworldframe都是在世界坐标系下的三维矢量,而angle函数实际上是求取这两个矢量的夹角。
然后,再根据所述夹角数据对所述陀螺仪传感器的当前旋转方向进行补偿,获得补偿后的旋转方向,公式如下:
orientation_mag=yawerror*orientation_accel(5)
其中,orientation_accel是经过加速度计补偿之后的旋转方向,即当前旋转方向,orientation_mag是经过磁力计传感器补偿后的旋转方向,最后,根据所述磁力计传感器补偿后的旋转方向控制所述头戴显示设备的视角。
可见,本发明实施例中,在头戴显示设备处于预定状态时,通过将磁力计传感器上报的当前磁力计数据修正为参考磁力计数据,从而抑制在预定状态下,因为磁力计传感器上报的数据抖动导致的画面抖动。
进一步,由于预定状态可以覆盖头戴显示设备完全静止,轻微晃动以及头戴显示设备只在俯仰角方向运动的状态和头戴显示设备只在横滚角方向运动的状态,因此,通过将磁力计传感器上报的当前磁力计数据修正为参考磁力计数据,可以抑制上述状态下,由于磁力计传感器上报的数据抖动导致的画面抖动,提高观看效果。
基于同一发明构思,本发明实施例还提供一种头戴显示设备,如图5所示,该头戴显示设备包括:
运动状态鉴别模块40,用于鉴别头戴显示设备在航向角方向的运动状态;
磁力计数据修正模块41,用于在所述头戴显示设备在所述航向角方向处于预定状态时,对所述头戴显示设备的磁力计传感器上报的当前磁力计数据进行修正,获得修正后的当前磁力计数据;
视角控制模块42,用于根据修正后的当前磁力计数据,控制所述头戴显示设备的视角。
可选的,所述磁力计数据修正模块41用于:
在鉴别出所述头戴显示设备在所述航向角方向处于预定状态的初始时刻,获取所述磁力计传感器在所述初始时刻对应的初始参考姿态下上报的参考磁力计数据,并将所述参考磁力计数据保存在所述头戴显示设备中;在所述预定状态持续的时间段内,将该参考磁力计数据作为修正后的当前磁力计数据。
可选的,所述视角控制模块42用于:
根据所述头戴显示设备的陀螺仪传感器在所述初始参考姿态下上报的参考旋转方向对所述参考磁力计数据进行坐标转换,获得转换后的参考磁力计数据;
根据所述陀螺仪传感器上报的当前旋转方向对所述修正后的当前磁力计数据进行坐标转换,获得转换后的当前磁力计数据;
计算所述转换后的参考磁力计数据和所述转换后的当前磁力计数据之间的夹角数据;
根据所述夹角数据对所述陀螺仪传感器的当前旋转方向进行补偿,获得补偿后的旋转方向,并根据所述补偿后的旋转方向控制所述头戴显示设备的视角;
其中,所述参考磁力计数据和所述当前磁力计数据为机体坐标系下的数据,所述转换后的参考磁力计数据和所述转换后的当前磁力计数据为世界坐标系下的数据。
可选的,所述运动状态鉴别模块40包括存储单元和运动状态鉴别单元,其中,所述存储单元用于存储航向角数据阈值;
所述运动状态鉴别单元,用于记录所述头戴显示设备的陀螺仪传感器上报的航向角数据小于或者等于航向角数据阈值的持续时间;并在所述持续时间大于或者等于预先设置的时间阈值时,确定所述头戴显示设备在所述航向角方向处于所述预定状态。
可选的,所述头戴显示设备还包括:
航向角数据阈值计算模块,用于在所述头戴显示设备静止时,获得所述陀螺仪传感器在第一预设时长内上报的航向角数据的第一航向角平均值;在所述头戴显示设备在横滚角方向运动,且在俯仰角方向和航向角方向静止时,获得所述陀螺仪传感器在第二预设时长内上报的航向角数据的第二航向角平均值;在所述头戴显示设备在俯仰角方向运动,且在横滚角方向和航向角方向静止时,获得所述陀螺仪传感器在第三预设时长内上报的航向角数据的第三航向角平均值;从所述第一航向角平均值、所述第二航向角平均值和所述第三航向角平均值中取最大值作为所述航向角数据阈值,并将所述航向角数据阈值存储在所述头戴显示设备中。
本发明实施例中的一个或者多个技术方案,至少具有如下技术效果或者优点:
本发明实施例的方案中,在头戴显示设备处于预定状态时,通过对头戴显示设备的磁力计数据进行修正,然后,根据修正后的当前磁力计数据,准确控制头戴显示设备的视角,可见,上述方案解决了现有技术中存在的,由于头戴显示设备的磁力计传感器上报的数据发生抖动,导致hmd出现画面产生抖动的技术问题,从而准确控制头戴显示设备视角,提高观看效果。
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。