一种基于VR的动感单车交互系统的制作方法

文档序号:16474158发布日期:2019-01-02 23:25阅读:535来源:国知局
一种基于VR的动感单车交互系统的制作方法

本发明属于虚拟现实技术领域,具体涉及一种基于vr的动感单车交互系统。



背景技术:

现今,人们越来越注重自己的身体状况并积极运动,骑自行车作为一项健康自然的有氧运动,在预防高血压、预防大脑老化、提高心肺功能、改善记忆力、使身材更加健康匀称等方面存在诸多优势。但是户外骑行易受时间、天气、地点等影响,而且危险系数较大,所以现在越来越多的人选择通过健身房中的动感单车进行锻炼。但是枯燥的室内运动让人难以坚持,提高健身的趣味性迫在眉睫。

现有技术中,存在基于虚拟现实(virtualreality,vr)的动感单车系统,通过佩戴vr眼镜来实现人机交互。但是长时间佩戴vr眼镜容易引发眼睛疲劳、晕眩以及视觉紊乱等问题,并且会压迫鼻梁,影响排汗,vr眼镜的重量也会给运动带来负担;同时现有技术还存在不够智能的弊端,无法为用户提供个性化的锻炼计划和健康提示。



技术实现要素:

为解决上述问题,本发明提出一种基于vr的动感单车交互系统,实现人机交互,解决了vr眼镜给vr动感单车系统带来的问题。

本发明采用如下技术方案,一种基于vr的动感单车交互系统,具体包括:交互控制模块和vr显示设备;其中,

所述交互控制模块包括数据采集端和数据处理端,所述数据采集端将采集的数据传输至数据处理端进行处理得出骑行速度,根据骑行速度控制虚拟训练场景中虚拟单车的速度,控制虚拟训练场景移动变化,并将结果传输至vr显示设备;

所述数据采集端包括传感器、单片机和无线传输模块,所述传感器固定于飞轮上,并与单片机相连,单片机同时连接无线传输模块,通过无线传输模块将数据传输至数据处理端;

所述数据处理端包括无线传输模块、单片机和计算机,所述数据处理端的无线传输模块用于接收数据采集端的无线传输模块发送的数据,通过数据处理端的单片机将数据传输至计算机中进行处理和保存,并将结果传输至vr显示设备。

发明所达到的有益效果:本发明是一种基于vr的动感单车交互系统,实现人机交互,采用放置在在动感单车前的显示屏作为vr显示设备,解决了vr眼镜给vr动感单车系统带来的问题。本发明使用vr显示设备显示vr界面,避免了传统vr眼镜长时间佩戴带来的眩晕感和影响排汗的弊端,增强锻炼乐趣和用户积极性;同时交互算法能根据用户的实际情况制定合理的锻炼计划,分析用户的训练行为并输出健康提示,达到引导用户健康锻炼的目的。

附图说明

图1为本发明的结构示意图;

附图标记:1-交互控制模块的数据采集端;2-交互控制模块的数据处理端;3-vr显示设备。

具体实施方式

下面根据附图并结合实施例对本发明的技术方案作进一步阐述。

unity3d是由unitytechnologies开发的虚拟引擎,主要的应用方向是游戏,它具有强大的物理引擎而且操作十分方便。unity3d支持自主编辑地形,可以接受其他建模软件制作的模型导入,同时还原生支持c#和javascript脚本语言的编写。本发明提出的一种基于vr的动感单车交互系统基于unity3d并应用了unity3d的itween插件。

图1是本发明的结构示意图,一种基于vr的动感单车交互系统,包括:交互控制模块和vr显示设备;其中,

所述交互控制模块包括数据采集端和数据处理端,所述数据采集端将采集的数据传输至数据处理端进行处理得出骑行速度,根据骑行速度控制虚拟训练场景中虚拟单车的速度,控制虚拟训练场景移动变化,并将结果传输至vr显示设备;

所述数据采集端包括传感器、单片机和无线传输模块,所述传感器固定于飞轮上,并与单片机相连,单片机同时连接无线传输模块,通过无线传输模块将数据传输至数据处理端;

所述数据处理端包括无线传输模块、单片机和计算机,所述数据处理端的无线传输模块用于接收数据采集端的无线传输模块发送的数据,通过数据处理端的单片机将数据传输至计算机中进行处理和保存,并将结果传输至vr显示设备。

本实施例中vr显示设备为显示屏,置于动感单车前方。

本实施例中的无线传输模块为lora无线传输模块,进行数据处理的计算机软件为unity3d。

所述传感器为高度传感器,本实施例中采用ms5611,当高度传感器检测到高度传感器的固定点处由飞轮最高点运动至最低点并回到最高点时,判定飞轮转动一圈,向数据采集端的单片机发送信号。

所述数据采集端的单片机用于保存动感单车启动后的状态数据,状态数据包括飞轮转动的圈数计数值和动感单车活跃状态属性;接收到所述高度传感器的信号后,数据采集端的单片机中圈数计数值加一,更新所述圈数计数值并保存到sbuf寄存器中;动感单车活跃状态属性包括活跃状态和非活跃状态,当超过预设阈值时长未收到信号,判定动感单车处于非活跃状态,反之判定动感单车处于活跃状态,将动感单车活跃状态属性保存到sbuf寄存器中;

所述状态数据通过数据采集端的单片机的sbuf寄存器传输至数据采集端的单片机的t-r端,进入数据采集端的无线传输模块。

所述数据采集端的无线传输模块将数据以无线传输的方式传输至数据处理端的无线传输模块,数据通过数据处理端的单片机的t-r端进入数据处理端的单片机,由usb接口传至计算机中,计算机对所述状态数据和记录时间以一条记录的形式存储,生成日志,然后对数据进行处理。

所述对数据进行处理具体为计算骑行速度,并通过虚拟训练场景移动算法控制虚拟训练场景移动变化,实现人机交互;

其中,计算骑行速度具体为:

在计算机生成的日志中查看最新一条记录的活跃状态属性,若为非活跃状态,则当前骑行速度为0;若为活跃状态,则根据日志中的记录时间筛选出当前时间t到当前时间前一秒t-1的时间区间内的所有记录;在筛选后的记录中查找记录时间距离当前时间t最近的记录,获得该条记录中的圈数计数值sumt,查找记录时间距离当前时间前一秒t-1最近的记录,获得该条记录的圈数计数值sumt-1,按照如下公式计算当前骑行速度v,并将当前骑行速度v添加到日志中对应记录时间的记录中:

其中,r为预设飞轮半径固定值;

所述虚拟训练场景移动算法根据实际动感单车的骑行速度控制虚拟训练场景中虚拟单车的速度,确定虚拟训练场景中虚拟单车的行进路线,利用unity3d中的itween插件对虚拟训练场景进行路线规划;具体为,读取所述日志中的最新记录,获取实际动感单车的骑行速度v,利用itween插件中的.add()函数设置所述虚拟单车的移动速度v’与实际动感单车的骑行速度v相同;

在unity3d中搭建虚拟训练场景并设定虚拟单车的预设轨道,在虚拟单车预设轨道上每隔预设距离依次设置h个定位点pk;从k=1起,将pk坐标值设为目的地,调用itween插件中的moveto函数使虚拟单车到达目的地,并令k加1,重复上述过程,直到k=h,实现虚拟单车的自动寻路;并通过hdmi传输线将所述虚拟训练场景的界面显示在vr显示设备上。

所述对数据进行处理还包括计算里程数和加速度值;

计算里程数s为圈数值乘以飞轮周长,具体公式如下:

s=sumt*2*π*r

计算加速度值a具体为:

在计算机生成的日志中查看最近一条记录的活跃状态属性,若为非活跃状态,则当前骑行加速度为0;若为活跃状态,则根据日志中的记录时间筛选出当前时间t到当前时间前一秒t-1的时间区间内的所有记录;在筛选后的记录中查找记录时间距离当前时间t最近的记录,获得该条记录中的速度值vt,查找记录时间距离当前时间前一秒t-1最近的记录,获得该条记录的速度值vt-1;按如下公式计算当前加速度值a,并将当前加速度值a添加到日志中对应记录时间的记录中;

调用unity3d中的gui.label()函数将速度值、加速度值和里程数以文本形式显示在当前虚拟训练环境中,并通过hdmi传输线将所述虚拟训练场景的界面显示在vr显示设备上。

作为一种较佳的实施例,所述对数据进行处理还包括基于用户健康提示算法由计算机日志记录的动感单车活跃状态属性判定用户运动量是否合理,并在vr显示设备上输出提示信息,具体为:

从所述日志中筛选出启动动感单车的时间到当前时间的记录,按照时间顺序,初始记录为r1,初始记录时间为t1,最新记录为rn,最新记录时间为tn;从初始记录r1起,若连续两条记录ri和ri+1中,活跃状态属性均为活跃状态,则判定用户在两条记录之间的时间段处于活跃状态,两条记录时间相减获得活跃时间段δti=ti+1-ti,将所述活跃时间段δtk进行累加,并令i增加1;若连续的两条记录ri和ri+1中存在一条记录的的活跃状态属性为非活跃状态,则判定用户在两条记录之间的时间段内为非活跃状态,此时δti=0并令i增加1;重复上述步骤直到i+1=n,得到用户的累积活跃时长t,当所述累积活跃时长t大于预设最大推荐时长tmax时,调用unity3d的editorutility.displaydialog()函数在虚拟训练场景界面上创建提示窗口显示预设提示信息,通过hdmi传输线将所述虚拟训练场景的界面显示在vr显示设备上。

作为一种较佳的实施例,所述对数据进行处理还包括通过推荐锻炼计划算法生成锻炼计划,推荐锻炼计划算法为根据用户输入的身高体重信息计算bmi指数,基于bmi指数计算每日推荐骑车里程数,具体为:

通过计算机接入键盘和鼠标等输入设备输入身高和体重,基于输入的身高和体重计算bmi指数。根据tudor-locke[1]2004年的标准,正常成年人日常运动量在10000-12500步/天时,运动量较为合理。预设骑车里程数和步数等效转换系数c,每日推荐里程数上限smax和下限smin由如下公式计算得到:

用户从当天的0:00到当前时间,共计完整使用本系统m次,一次完整使用定义为从启用动感单车开始,到关闭动感单车结束,若当前正在使用系统则不算作一次;根据用户第j次使用完成后的日志最后一条记录得到单次骑行里程数sj,则当天累计骑行里程数s由如下公式计算得到:

δs表示当前正在使用本系统时已累计骑行里程数,若前一个自然日用户的累计骑行里程数s’<smin,则预设文本信息为未达标信息;若当天累计骑行里程数s>smax,则预设文本信息为运动过量;调用unity3d的editorutility.displaydialog()函数在虚拟训练场景界面上创建并弹出提示窗口显示预设文本信息,通过hdmi传输线将所述虚拟训练场景的界面显示在vr显示设备上。

本实施例的工作流程为:

1)利用unity3d创建虚拟训练场景并在vr显示设备显示;

2)所述数据采集端1中的单片机存储的圈数计数值清零;当用户开始骑行时,飞轮每转一圈,固定在飞轮中的高度传感器向所述数据采集端1中的单片机发送圈数计数值加一的信号。

3)所述数据采集端1中的单片机根据所述高度传感器发送的信号更新圈数计数值并判断动感单车活跃状态属性,将两者构成的状态数据通过数据采集端1中的无线传输模块传输至数据处理端2。

4)所述数据处理端2中的无线传输模块收到状态数据后通过单片机和usb接口将状态数据传输至计算机,所述状态数据和记录时间以一条记录的形式保存到日志,然后对数据进行处理。

5)根据所述日志计算用户当前骑行速度、加速度、里程数,并在所述虚拟训练场景中改变虚拟单车的速度,通过虚拟训练场景移动算法控制虚拟训练场景移动变化,实现人机交互。

所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改,等同替换,改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1