CN105107198B - 动感赛车游戏碰撞过程的运动模拟实现方法与系统 - Google Patents
动感赛车游戏碰撞过程的运动模拟实现方法与系统 Download PDFInfo
- Publication number
- CN105107198B CN105107198B CN201510542896.0A CN201510542896A CN105107198B CN 105107198 B CN105107198 B CN 105107198B CN 201510542896 A CN201510542896 A CN 201510542896A CN 105107198 B CN105107198 B CN 105107198B
- Authority
- CN
- China
- Prior art keywords
- collision
- motion
- game
- dynamic
- racing
- 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.)
- Expired - Fee Related
Links
Landscapes
- Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
- Processing Or Creating Images (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种动感赛车游戏碰撞过程的运动模拟实现方法与系统,在动感赛车中集成一碰撞模拟模块,该碰撞模拟模块主要包括碰撞参数求解算法和碰撞参数映射算法;碰撞求解算法是根据游戏运动场景中不同虚拟赛车发生碰撞前的瞬时位姿和运动状态求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数,然后在此基础上依据游戏玩家自身的体重和身高等条件求解出虚拟赛车中游戏玩家所产生的最大俯仰角度、最大滚转角度和最大侧摆角度,再利用各自不同的映射系数将其映射到动感赛车游戏运动模拟器中各个运动机构的最大运动角度,以便于利用动感赛车游戏运动模拟器对不同虚拟赛车的碰撞过程进行模拟,从而有效达到给予不同游戏玩家各异的碰撞动感体验。
Description
技术领域
本发明属于动感游戏技术领域,特别是涉及一种动感赛车游戏碰撞过程的运动模拟实现方法。
背景技术
传统的赛车游戏是通过虚拟现实技术在计算机上模拟赛车真实的运动场景,能够让游戏玩家坐在固定座椅上通过键盘和鼠标来控制游戏场景中的虚拟赛车进行前后移动和左右摆动,这种赛车游戏由于其采用的是固定座椅,无法给予游戏玩家真实的运动感觉,使得赛车游戏的娱乐度和逼真度大大降低。
近年来,为了满足游戏市场对高娱乐度、高逼真度和游戏玩家对真实运动感觉的需求,人们在具有多自由度运动座椅的结构设计及其运动控制方面做了大量的研究。例如申请号为CN201120271067.0的专利提出了一种液压驱动4D动感座椅,该动感座椅是通过在座椅本体下设置三个液压油缸来实现座椅本体前后、上下、左右三个自由度的灵活、精确地运动;为克服上述动感座椅可能产生油气泄露污染和摆动自由度较少等缺陷,申请号为CN201310317335.1的专利提出了一种电机驱动的娱乐设施通用动感座椅,该通用动感座椅能够通过游戏手柄或上位机来控制各个电机的转向和转速,实现动感座椅的升高降低、左右回转、前后摆动和左右摆动的联动,使游戏者或观看者产生身临其境的感觉。
但是,在动感赛车游戏技术领域,随着动感赛车游戏市场需求的变化和现代通信技术、控制技术的发展,仅仅带有运动感觉的动感座椅已经无法满足游戏玩家对赛车游戏日益增强的娱乐体验感的追求,而能够模拟游戏场景中虚拟赛车碰撞过程的运动状态以及通过动感座椅给予游戏玩家真实碰撞动感体验的动感赛车游戏运动模拟器及其运动实现方法正在成为动感赛车游戏今后的一个新发展方向。而这种新型的、能够给予游戏玩家真实碰撞动感体验的动感赛车游戏需要能够实现运动模拟功能的动感赛车游戏运动模拟器及其运动实现方法的支持。
申请号为201410475532.0和201510004897.X的专利分别公开了一种电机驱动的三自由度可拆装的动感赛车游戏运动模拟器及其相关的运动控制装置及方法,由于该动感赛车游戏运动模拟器采用电机作为动力源、丝杠-连杆作为驱动机构,通过所述控制装置及方法可以实现动感赛车游戏运动模拟器的俯仰、滚转和侧摆的联动控制,可以满足游戏玩家对赛车真实碰撞动感体验的需求。因此,本专利申请拟基于此动感赛车游戏运动模拟器及其控制装置,提出了一种动感赛车游戏碰撞过程的运动模拟实现方法。
发明内容
本发明的目的是克服背景技术中存在的不足,研究设计一种动感赛车游戏碰撞过程的运动模拟实现方法,以便在游戏场景中不同虚拟赛车发生碰撞时,通过ARM处理器中的PID控制模块对动感赛车游戏运动模拟器的位姿和运动状态进行有效操控,从而实现动感赛车游戏碰撞过程的运动模拟,有效达到给予不同游戏玩家各异的碰撞动感体验的目的。
考虑到背景技术存在的不足,首先提出以下几点假设:
假设一:在赛车发生碰撞的整个过程中,由于受到的碰撞力远远大于外界力,因此将两赛车看成一个封闭的系统,碰撞前后动量及动量矩守恒;
假设二:在赛车发生碰撞的整个过程中,有且仅有一次碰撞,且碰撞前后赛车质量不发生改变;
假设三:赛车碰撞变形相对于整个车体而言较小,因此将赛车视为刚体,忽略由于变形产生的质心位移以及转动惯量的变化;
假设四:在赛车发生碰撞的整个过程中,游戏玩家对赛车不进行任何操作。
基于上述四点假设以及背景技术存在的不足,本发明公开了一种动感赛车游戏碰撞过程的运动模拟实现方法,其思想是在申请号为201510004897.X专利的控制装置中所述的动感赛车游戏软件中集成一碰撞模拟模块,用于实现动感赛车游戏碰撞过程的运动模拟。
一种动感赛车游戏碰撞过程的运动模拟实现系统,它包括:
碰撞模拟模块,所述碰撞模拟模块包括用于实现:
碰撞参数求解算法,通过碰撞参数求解算法求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数;
碰撞参数映射算法,依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身参数建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生运动参数的最大角度,以及利用各自不同的映射系数将所述运动参数的最大角度映射到动感赛车游戏运动模拟器中各个运动机构中;
以及将动感赛车游戏运动模拟器中各个运动机构的最大运动角度传输给ARM处理器中的运动参数转换模块,求解出动感赛车游戏运动模拟器中各个运动机构的最大平动位移和平动线速度,以使ARM处理器中的PID控制模块利用求出的运动学参数对动感赛车游戏运动模拟器中各个驱动电机的速度和正转或反转进行联动控制。
一种动感赛车游戏碰撞过程的运动模拟实现方法,它包括:
ⅰ)碰撞参数求解算法:通过碰撞参数求解算法求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数;
ⅱ)碰撞参数映射算法:依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身参数建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生运动参数的最大角度,以及利用各自不同的映射系数将所述运动参数的最大角度映射到动感赛车游戏运动模拟器中各个运动机构中;
ⅲ)将动感赛车游戏运动模拟器中各个运动机构的最大运动角度传输给ARM处理器中的运动参数转换模块,求解出动感赛车游戏运动模拟器中各个运动机构的最大平动位移和平动线速度,以使ARM处理器中的PID控制模块利用求出的运动学参数对动感赛车游戏运动模拟器中各个驱动电机的速度和正转或反转进行联动控制。
为了更好地实现本发明,进一步的技术方案是:
根据本发明的一个实施方案,所述碰撞参数求解算法:在游戏场景中的两不同虚拟赛车发生碰撞时,根据不同虚拟赛车碰撞前瞬时的位姿和运动学参数分别建立碰撞过程的动量守恒和动量矩守恒方程,并引入切向和法向碰撞恢复系数ex、ey建立了两虚拟赛车碰撞的动力学模型,用于求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数。
根据本发明的另一个实施方案,所述碰撞参数求解算法具体包括:
根据动量守恒定理有:
式中,ma、mb分别为本赛车a和相撞车b的质量,vax、vay、vbx、vby分别为两车碰撞后速度沿x轴和y轴的分量,va0x、va0y、vb0x、vb0y分别指本赛车和相撞车碰撞前速度va0、vb0在沿x轴和y轴的分量;
根据动量矩定理有:
式中,wa、wb分别为两车碰撞后绕质心的角速度,wa0、wb0分别为两车碰撞前绕质心的角速度,ka、kb分别为两车回转半径,(ax,ay)、(bx,by)分别为两赛车质心的坐标;
联立两个方程组后,再引入切向碰撞恢复系数ex和法向碰撞恢复系数ey:
由于两虚拟赛车的碰撞过程为非完全弹性碰撞,所以0<ex,ey<1;根据前人的研究成果及相关实验数据,建立如下的切向碰撞恢复系数ex和法向碰撞恢复系数ey:
式中,Ra为广义冲量比,其计算式为:
式中,m0是指碰撞后的质量系数,其值为:
根据式(4)~(5)可求出切向碰撞恢复系数ex和法向碰撞恢复系数ey,并联合式(1)~(3)可得到两虚拟赛车碰撞的动力学模型:
由式(6)便可得到两虚拟赛车发生碰撞后分别沿x轴和y轴的速度分量vax、vay、vbx、vby以及两车碰撞后绕质心的角速度wa、wb(顺时针为正,逆时针为负),进而可以得到本赛车沿其牵引方向(np正向)及其垂直方向(nr正向)的速度分量:
式中,vap和var分别为本赛车碰撞后沿其牵引方向和垂直方向的运动速度,θ为y轴正向与虚拟赛车牵引方向(np正向)的夹角。
同理,碰撞前运动参数经过坐标转换后,其计算为:
式中,va0p和va0r分别为本赛车碰撞前沿其牵引方向和垂直方向的运动速度。
由式(6)~(7)可以得出本赛车碰撞后的俯仰运动参数vap、滚转运动参数var和侧摆运动参数wa,而通过这些运动学参数便可以模拟出游戏场景中两虚拟赛车的碰撞过程。
根据本发明的另一个实施方案,所述碰撞参数映射算法:依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身的体重和身高条件建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生的最大俯仰角度最大滚转角度和最大侧摆角度进而利用各自不同的映射系数将其映射到动感赛车游戏运动模拟器中各个运动机构的最大俯仰角度最大滚转角度最大侧摆角度
根据本发明的另一个实施方案,所述碰撞参数映射算法具体包括:
根据功能原理:或便可得到最大俯仰角度最大滚转角度和最大侧摆角度
式中,m是指游戏玩家的质量;F是指动感游戏软件中所设置的安全带张紧力或座椅推力;H是指游戏玩家的上身高度;J是指游戏玩家的转动惯量,其值为J=mH2;
在模拟碰撞的过程中,动感赛车游戏运动模拟器中座椅的最大俯仰角度最大滚转角度和最大侧摆角度为:
式中,ηp、ηr、ηs分别是指虚拟赛车的运动角度向动感赛车游戏运动模拟器中各个运动机构的运动角度进行映射的俯仰映射系数、滚转映射系数、侧摆映射系数,其值为
根据本发明的另一个实施方案,设置在动感赛车游戏运动模拟器中俯仰机构、滚转机构、侧摆机构的光栅线位移传感器是分别用于检测俯仰运动的平动位移sp’、滚转运动的平动位移sr’、侧摆运动的平动位移ss’,并将检测到的各个位移量反馈给PID控制模块;PID控制模块对检测到的各个位移量进行判断,以保证各运动机构到达预定位置时驱动电机逆转使其回到初始位置,从而实现了动感赛车游戏运动模拟器碰撞过程的运动模拟。
本发明还可以是:
根据本发明的另一个实施方案,所述运动参数转换模块用于得到完成碰撞过程运动模拟的俯仰运动的最大平动位移滚转运动的最大平动位移侧摆运动的最大平动位移进而可以得到动感赛车游戏运动模拟器中侧摆驱动单元的平动线速度vs、俯仰驱动单元的平动线速度vp、滚转驱动单元的平动线速度vr的计算式为:
式中,hp、hr、hs分别为动感赛车游戏运动模拟器中俯仰连杆、滚转连杆、侧摆连杆的长度。
与现有技术相比,本发明的有益效果之一是:
本发明的一种动感赛车游戏碰撞过程的运动模拟实现方法与系统,根据游戏运动场景中不同虚拟赛车发生碰撞前的瞬时位姿和运动状态求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数,而碰撞参数映射算法则在此基础上依据游戏玩家自身的体重和身高等条件求解出虚拟赛车中游戏玩家所产生的最大俯仰角度、最大滚转角度和最大侧摆角度,进而利用各自不同的映射系数将其映射到动感赛车游戏运动模拟器中各个运动机构的最大运动角度,以便于利用动感赛车游戏运动模拟器对不同虚拟赛车的碰撞过程进行模拟,从而有效达到给予不同游戏玩家各异的碰撞动感体验的目的。
附图说明
为了更清楚的说明本申请文件实施例或现有技术中的技术方案,下面将对实施例或现有技术的描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅是对本申请文件中一些实施例的参考,对于本领域技术人员来讲,在不付出创造性劳动的情况下,还可以根据这些附图得到其它的附图。
图1示出了一种现有的动感赛车游戏运动模拟器的结构示意图。
图2示出了游戏场景中两不同虚拟赛车发生碰撞的一般形式示意图。
图3a1示出了虚拟赛车中游戏玩家碰撞过程中的俯仰运动的前俯运动(va0p-vap>0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图3a2示出了虚拟赛车中游戏玩家碰撞过程中的俯仰运动的后仰运动(va0p-vap<0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图3b1示出了虚拟赛车中游戏玩家碰撞过程中的滚转运动的顺转运动(va0r-var>0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图3b2示出了虚拟赛车中游戏玩家碰撞过程中的滚转运动的逆转运动(va0r-var<0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图3c1示出了虚拟赛车中游戏玩家碰撞过程中的侧摆运动的右摆运动(wa-wa0>0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图3c2示出了虚拟赛车中游戏玩家碰撞过程中的侧摆运动的左摆运动(wa-wa0<0)示意图,其图中所示虚线表示运动起始位置,实线表示转角最大位置。
图4示出了一种动感赛车游戏碰撞过程的运动模拟实现流程示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
如图1所示,图1示出了一种现有的动感赛车游戏运动模拟器的结构示意图,可以包括显示器1、专用赛车游戏控制方向盘2、固定底座3、俯仰机构4、滚转机构5、侧摆机构6。下面将结合图1所示的动感赛车游戏运动模拟器对本发明的实施方案作进一步说明。
如图2所示,图2示出了游戏场景中两不同虚拟赛车发生碰撞的一般形式,图2中的虚拟赛车a、b分别为本赛车和相撞车,ma、mb分别为两车的质量,ca、cb分别为两车的质心,wa、wb分别为两车碰撞后绕质心的角速度,vax、vay、vbx、vby分别为两车碰撞后速度沿x轴和y轴的分量,o-xyz表示基础坐标系,其中所述本赛车是指本发明中利用动感赛车游戏运动模拟器来模拟碰撞后其位姿和运动状态的赛车,所述相撞车是指赛车游戏场景中与本赛车发生碰撞的赛车。
结合图2所示,碰撞参数求解算法如下:
根据动量守恒定理有:
式中,va0x、va0y、vb0x、vb0y分别指本赛车和相撞车碰撞前速度va0、vb0在沿x轴和y轴的分量。
根据动量矩定理有:
式中,wa0、wb0分别为两车碰撞前绕质心的角速度,ka、kb分别为两车回转半径,(ax,ay)、(bx,by)分别为两赛车质心坐标。
联立两个方程组可以发现,四个方程含有6个未知数vax、vay、vbx、vby、wa、wb,无法直接进行求解,因此,引入切向碰撞恢复系数ex和法向碰撞恢复系数ey:
由于两虚拟赛车的碰撞过程为非完全弹性碰撞,所以0<ex,ey<1;根据前人的研究成果及相关实验数据,建立如下的切向碰撞恢复系数ex和法向碰撞恢复系数ey:
式中,Ra为广义冲量比,其计算式为:
式中,m0是指碰撞后的质量系数,其值为:
根据式(4)~(5)可求出切向碰撞恢复系数ex和法向碰撞恢复系数ey,并联合式(1)~(3)可得到两虚拟赛车碰撞的动力学模型:
由式(6)便可得到两虚拟赛车发生碰撞后分别沿x轴和y轴的速度分量vax、vay、vbx、vby以及两车碰撞后绕质心的角速度wa、wb(顺时针为正,逆时针为负),进而可以得到本赛车沿其牵引方向(np正向)及其垂直方向(nr正向)的速度分量:
式中,vap和var分别为本赛车碰撞后沿其牵引方向和垂直方向的运动速度,θ为y轴正向与虚拟赛车牵引方向(np正向)的夹角。
同理,碰撞前运动参数经过坐标转换后,其计算为:
式中,va0p和va0r分别为本赛车碰撞前沿其牵引方向和垂直方向的运动速度。
由式(6)~(7)可以得出本赛车碰撞后的俯仰运动参数vap、滚转运动参数var和侧摆运动参数wa,而通过这些运动学参数便可以模拟出游戏场景中两虚拟赛车的碰撞过程。
如图3(a1-c2)所示,图3(a1-c2)示出了虚拟赛车中游戏玩家的俯仰运动、滚转运动和侧摆运动简图,图3(a1-c2)中的H为游戏玩家的上半身高度,F为动感赛车游戏软件中所设置的安全带各个方向的张紧力Fa和座椅推力Fb。由于软件中所设置的Fa和Fb大小相等,因此,为简便起见,均用F表示。由于发生碰撞的两赛车近似静止(近似静止是指两赛车瞬间完成碰撞,即碰撞作用时间t非常短)直到完成碰撞后才以各自碰撞后的速度继续运动。而本赛车中游戏玩家由于赛车发生碰撞而获得了分别沿np向和nr向的速度分量va0p-vap、va0r-var和绕质心的角速度wa0-wa,又因其受到力F的作用,使得游戏玩家的上身绕着其腰部分别做俯仰、滚转和侧摆运动,当其运动停止时,其运动角度则分别达到了最大值
结合图3(a1-c2)所示,碰撞参数映射算法如下:
根据功能原理:或便可得到最大俯仰角度最大滚转角度和最大侧摆角度
式中,m是指游戏玩家的质量;F是指动感游戏软件中所设置的安全带张紧力或座椅推力;H是指游戏玩家的上身高度;J是指游戏玩家的转动惯量,其值为J=mH2。
为了给予游戏玩家真实的碰撞动感体验,本发明通过动感赛车游戏运动模拟器的座椅带动游戏玩家一起做俯仰、滚转和侧摆运动来模拟真实的碰撞过程。由于动感赛车游戏运动模拟器的各个极限运动角度Φ2p、Φ2r、Φ2s与游戏场景中虚拟赛车所设置的极限运动角度Φ1p、Φ1r、Φ1s(不同的赛车具有不同的极限运动俯角)不同,因此,在模拟碰撞的过程中,动感赛车游戏运动模拟器中座椅的最大俯仰角度最大滚转角度和最大侧摆角度为:
式中,ηp、ηr、ηs分别是指虚拟赛车的运动角度向动感赛车游戏运动模拟器中各个运动机构的运动角度进行映射的俯仰映射系数、滚转映射系数、侧摆映射系数,其值为
如图4所示,图4示出了一种动感赛车游戏碰撞过程的运动模拟实现流程图,根据图4中的运动参数转换模块可以得到完成碰撞过程运动模拟的俯仰运动的最大平动位移滚转运动的最大平动位移侧摆运动的最大平动位移进而可以得到动感赛车游戏运动模拟器中侧摆驱动单元的平动线速度vs、俯仰驱动单元的平动线速度vp、滚转驱动单元的平动线速度vr的计算式为:
式中,hp、hr、hs分别是指动感赛车游戏运动模拟器中俯仰连杆、滚转连杆、侧摆连杆的长度,其可以参考申请号为201510004897.X专利中说明书附图的图4a~6b。
综上所述,根据两虚拟赛车碰撞前瞬时的位姿、运动状态及式(1)~(11)便可得到动感赛车游戏运动模拟器中各个运动机构的控制参数,从而能够根据不同游戏玩家的自身条件给予各异的碰撞动感体验,其中各驱动电机的转向及其对应的各运动机构的运动形式如表1所示。
表1动感赛车游戏运动模拟器中各驱动电机的转向及其对应的各运动机构的运动形式
表2和表3分别是某一时刻动感赛车游戏中本赛车的设置参数及碰撞前瞬时的运动参数,表4是某一时刻动感赛车游戏中相撞车的设置参数及碰撞前瞬时的运动参数,表5是动感赛车游戏运动模拟器的特征参数,根据表1~5和式(1)~(11)便可得到不同游戏玩家该时刻动感赛车游戏运动模拟器中各个运动机构的最大运动角度以及PID控制模块中各个运动机构的位移和速度等控制参数,分别如表6和表7所示。
表2某一时刻动感赛车游戏中本赛车的设置参数
表3某一时刻动感赛车游戏中本赛车发生碰撞前的瞬时运动参数
表4某一时刻动感赛车游戏中相撞车的设置参数及碰撞前瞬时的运动参数
表5动感赛车游戏运动模拟器的特征参数
表6不同游戏玩家该时刻动感赛车游戏运动模拟器中各个运动机构的最大运动角度等控制参数
表7针对表6中不同游戏玩家该时刻PID控制模块中各个运动机构的位移和速度等控制参数
由表6和表7中的控制参数可以看出,本专利申请提出的动感赛车游戏碰撞过程的运动模拟实现方法可以实现动感赛车游戏碰撞过程的运动模拟,并且能够给予不同游戏玩家各异的碰撞动感体验。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似部分相互参见即可。
在本说明书中所谈到的“一个实施例”、“另一个实施例”、“实施例”、等,指的是结合该实施例描述的具体特征、结构或者特点包括在本申请概括性描述的至少一个实施例中。在说明书中多个地方出现同种表述不是一定指的是同一个实施例。进一步来说,结合任一实施例描述一个具体特征、结构或者特点时,所要主张的是结合其他实施例来实现这种特征、结构或者特点也落在本发明的范围内。
尽管这里参照本发明的多个解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开和权利要求的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
Claims (8)
1.一种动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于它包括:
ⅰ)碰撞参数求解算法:通过碰撞参数求解算法求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数;
ⅱ)碰撞参数映射算法:依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身参数建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生运动参数的最大角度,以及利用各自不同的映射系数将所述运动参数的最大角度映射到动感赛车游戏运动模拟器中各个运动机构中;
ⅲ)将动感赛车游戏运动模拟器中各个运动机构的最大运动角度传输给ARM处理器中的运动参数转换模块,求解出动感赛车游戏运动模拟器中各个运动机构的最大平动位移和平动线速度,以使ARM处理器中的PID控制模块利用求出的运动学参数对动感赛车游戏运动模拟器中各个驱动电机的速度和正转或反转进行联动控制。
2.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于所述碰撞参数求解算法:在游戏场景中的两不同虚拟赛车发生碰撞时,根据不同虚拟赛车碰撞前瞬时的位姿和运动学参数分别建立碰撞过程的动量守恒和动量矩守恒方程,并引入切向和法向碰撞恢复系数ex、ey建立了两虚拟赛车碰撞的动力学模型,用于求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数。
3.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于所述碰撞参数求解算法具体包括:
根据动量守恒定理有:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,ma、mb分别为本赛车a和相撞车b的质量,vax、vay、vbx、vby分别为两车碰撞后速度沿x轴和y轴的分量,va0x、va0y、vb0x、vb0y分别指本赛车和相撞车碰撞前速度va0、vb0在沿x轴和y轴的分量;
根据动量矩定理有:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>a</mi>
<mn>2</mn>
</msubsup>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>a</mi>
</msub>
<mo>-</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>b</mi>
<mn>2</mn>
</msubsup>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mi>b</mi>
</msub>
<mo>-</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,wa、wb分别为两车碰撞后绕质心的角速度,wa0、wb0分别为两车碰撞前绕质心的角速度,ka、kb分别为两车回转半径,(ax,ay)、(bx,by)分别为两赛车质心坐标;
联立两个方程组后,再引入切向碰撞恢复系数ex和法向碰撞恢复系数ey:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
<msub>
<mi>w</mi>
<mi>a</mi>
</msub>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
<msub>
<mi>w</mi>
<mi>b</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
<msub>
<mi>w</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
<msub>
<mi>w</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
<msub>
<mi>w</mi>
<mi>a</mi>
</msub>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
<msub>
<mi>w</mi>
<mi>b</mi>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
<msub>
<mi>w</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
<msub>
<mi>w</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
由于两虚拟赛车的碰撞过程为非完全弹性碰撞,所以0<ex,ey<1;根据前人的研究成果及相关实验数据,建立如下的切向碰撞恢复系数ex和法向碰撞恢复系数ey:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
<mo>=</mo>
<mn>0.0396</mn>
<msup>
<msub>
<mi>R</mi>
<mi>a</mi>
</msub>
<mn>2</mn>
</msup>
<mo>-</mo>
<mn>0.4501</mn>
<msub>
<mi>R</mi>
<mi>a</mi>
</msub>
<mo>+</mo>
<mn>0.3066</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
<mo>=</mo>
<mfrac>
<mn>0.5</mn>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
</mfrac>
<mo>~</mo>
<mfrac>
<mn>3</mn>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
</mfrac>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,Ra为广义冲量比,其计算式为:
<mrow>
<msub>
<mi>R</mi>
<mi>a</mi>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mn>2</mn>
</msup>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mn>2</mn>
</msup>
<msub>
<mi>m</mi>
<mn>0</mn>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mo>+</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
</mrow>
<mrow>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mo>+</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mo>)</mo>
</mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<mn>2</mn>
</msup>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
<msub>
<mi>&sigma;</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
<msup>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<mn>2</mn>
</msup>
<msub>
<mi>m</mi>
<mn>0</mn>
</msub>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,m0是指碰撞后的质量系数,其值为:
根据式(4)~(5)可求出切向碰撞恢复系数ex和法向碰撞恢复系数ey,并联合式(1)~(3)可得到两虚拟赛车碰撞的动力学模型:
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>a</mi>
<mn>2</mn>
</msubsup>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</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>0</mn>
</mtd>
<mtd>
<mrow>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>b</mi>
<mn>2</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<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>w</mi>
<mi>a</mi>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>x</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mi>y</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>w</mi>
<mi>b</mi>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>=</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>a</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>a</mi>
<mn>2</mn>
</msubsup>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</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>0</mn>
</mtd>
<mtd>
<mrow>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>m</mi>
<mi>b</mi>
</msub>
<msubsup>
<mi>k</mi>
<mi>b</mi>
<mn>2</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
<msub>
<mi>a</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>x</mi>
</msub>
<msub>
<mi>b</mi>
<mi>x</mi>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
</mtd>
<mtd>
<mrow>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
<msub>
<mi>a</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<msub>
<mi>e</mi>
<mi>y</mi>
</msub>
<msub>
<mi>b</mi>
<mi>y</mi>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>w</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>v</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>w</mi>
<mrow>
<mi>b</mi>
<mn>0</mn>
</mrow>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
由式(6)便可得到两虚拟赛车发生碰撞后分别沿x轴和y轴的速度分量vax、vay、vbx、vby以及两车碰撞后绕质心的角速度wa、wb(顺时针为正,逆时针为负),进而可以得到本赛车沿其牵引方向(np正向)及其垂直方向(nr正向)的速度分量:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>p</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
<mo>+</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>r</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>x</mi>
</mrow>
</msub>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mi>y</mi>
</mrow>
</msub>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,vap和var分别为本赛车碰撞后沿其牵引方向和垂直方向的运动速度,θ为y轴正向与虚拟赛车牵引方向(np正向)的夹角;
同理,碰撞前运动参数经过坐标转换后,其计算为:
<mrow>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>p</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
<mo>+</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>r</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>x</mi>
</mrow>
</msub>
<mi>c</mi>
<mi>o</mi>
<mi>s</mi>
<mi>&theta;</mi>
<mo>-</mo>
<msub>
<mi>v</mi>
<mrow>
<mi>a</mi>
<mn>0</mn>
<mi>y</mi>
</mrow>
</msub>
<mi>s</mi>
<mi>i</mi>
<mi>n</mi>
<mi>&theta;</mi>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
式中,va0p和va0r分别为本赛车碰撞前沿其牵引方向和垂直方向的运动速度;
由式(6)~(7)可以得出本赛车碰撞后的俯仰运动参数vap、滚转运动参数var和侧摆运动参数wa,而通过这些运动学参数便可以模拟出游戏场景中两虚拟赛车的碰撞过程。
4.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于所述碰撞参数映射算法:依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身的体重和身高条件建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生的最大俯仰角度最大滚转角度和最大侧摆角度进而利用各自不同的映射系数将其映射到动感赛车游戏运动模拟器中各个运动机构的最大俯仰角度最大滚转角度最大侧摆角度
5.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于所述碰撞参数映射算法具体包括:
根据功能原理:或便可得到最大俯仰角度最大滚转角度和最大侧摆角度
式中,m是指游戏玩家的质量;F是指动感游戏软件中所设置的安全带张紧力或座椅推力;H是指游戏玩家的上身高度;J是指游戏玩家的转动惯量,其值为J=mH2;
在模拟碰撞的过程中,动感赛车游戏运动模拟器中座椅的最大俯仰角度最大滚转角度和最大侧摆角度为:
式中,ηp、ηr、ηs分别是指虚拟赛车的运动角度向动感赛车游戏运动模拟器中各个运动机构的运动角度进行映射的俯仰映射系数、滚转映射系数、侧摆映射系数,其值为
6.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于设置在动感赛车游戏运动模拟器中俯仰机构、滚转机构、侧摆机构的光栅线位移传感器是分别用于检测俯仰运动的平动位移sp’、滚转运动的平动位移sr’、侧摆运动的平动位移ss’,并将检测到的各个位移量反馈给PID控制模块;PID控制模块对检测到的各个位移量进行判断,以保证各运动机构到达预定位置时驱动电机逆转使其回到初始位置,从而实现了动感赛车游戏运动模拟器碰撞过程的运动模拟。
7.根据权利要求1所述的动感赛车游戏碰撞过程的运动模拟实现方法,其特征在于所述运动参数转换模块用于得到完成碰撞过程运动模拟的俯仰运动的最大平动位移滚转运动的最大平动位移侧摆运动的最大平动位移进而可以得到动感赛车游戏运动模拟器中侧摆驱动单元的平动线速度vs、俯仰驱动单元的平动线速度vp、滚转驱动单元的平动线速度vr的计算式为:
式中,hp、hr、hs分别为动感赛车游戏运动模拟器中俯仰连杆、滚转连杆、侧摆连杆的长度。
8.一种动感赛车游戏碰撞过程的运动模拟实现系统,其特征在于它包括:
碰撞模拟模块,所述碰撞模拟模块包括用于实现:
碰撞参数求解算法,通过碰撞参数求解算法求出虚拟赛车发生碰撞后瞬时的位姿和运动学参数;
碰撞参数映射算法,依据虚拟赛车碰撞后瞬时的位姿和运动学参数以及游戏玩家自身参数建立功能转换原理方程,求出虚拟赛车中游戏玩家所发生运动参数的最大角度,以及利用各自不同的映射系数将所述运动参数的最大角度映射到动感赛车游戏运动模拟器中各个运动机构中;
以及将动感赛车游戏运动模拟器中各个运动机构的最大运动角度传输给ARM处理器中的运动参数转换模块,求解出动感赛车游戏运动模拟器中各个运动机构的最大平动位移和平动线速度,以使ARM处理器中的PID控制模块利用求出的运动学参数对动感赛车游戏运动模拟器中各个驱动电机的速度和正转或反转进行联动控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510542896.0A CN105107198B (zh) | 2015-08-28 | 2015-08-28 | 动感赛车游戏碰撞过程的运动模拟实现方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510542896.0A CN105107198B (zh) | 2015-08-28 | 2015-08-28 | 动感赛车游戏碰撞过程的运动模拟实现方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105107198A CN105107198A (zh) | 2015-12-02 |
CN105107198B true CN105107198B (zh) | 2018-05-08 |
Family
ID=54655446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510542896.0A Expired - Fee Related CN105107198B (zh) | 2015-08-28 | 2015-08-28 | 动感赛车游戏碰撞过程的运动模拟实现方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105107198B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106324097A (zh) * | 2016-10-12 | 2017-01-11 | 华侨大学 | 一种基于声波传感测定材料碰撞恢复系数的方法 |
CN107930110B (zh) * | 2017-10-31 | 2021-03-02 | 深圳华侨城卡乐技术有限公司 | 一种基于游玩海盗船的虚拟现实设备及其控制方法 |
CN108553893B (zh) * | 2018-04-28 | 2021-11-16 | 网易(杭州)网络有限公司 | 赛车游戏中车辆转向的控制方法和装置 |
CN108846322A (zh) * | 2018-05-25 | 2018-11-20 | 重庆大学 | 快速高精度的车辆碰撞检测方法 |
CN110052027B (zh) * | 2019-04-26 | 2021-12-28 | 腾讯科技(深圳)有限公司 | 虚拟场景中的虚拟对象控制方法、装置、设备及存储介质 |
CN110465091B (zh) * | 2019-08-09 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 虚拟赛车对象的控制方法和装置、存储介质及电子装置 |
CN110947175A (zh) * | 2019-11-26 | 2020-04-03 | 拓普虚拟现实技术研究院(江苏)有限公司 | 一种高仿真亲临式三屏体感赛车 |
CN112697462B (zh) * | 2021-01-26 | 2022-12-09 | 重庆长安汽车股份有限公司 | 一种台车碰撞试验中白车身前端下潜工装 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1642782A (zh) * | 2002-10-02 | 2005-07-20 | 罗伯特-博希股份公司 | 保护乘客的装置 |
CN101286188A (zh) * | 2008-04-03 | 2008-10-15 | 深圳先进技术研究院 | 一种虚拟仿真系统中力觉反馈的计算方法 |
CN102034257A (zh) * | 2010-12-31 | 2011-04-27 | 长安大学 | 汽车与两轮或三轮车碰撞事故模拟再现计算机系统 |
CN102063122A (zh) * | 2010-11-10 | 2011-05-18 | 哈尔滨工业大学 | 一种空间六自由度运动台模态控制方法 |
CN102087754A (zh) * | 2010-12-30 | 2011-06-08 | 长安大学 | 汽车碰两轮或三轮车后再碰固定物组合事故模拟再现系统 |
CN102122204A (zh) * | 2011-01-17 | 2011-07-13 | 北京邮电大学 | 分布式力觉同步感知方法及系统 |
CN202427156U (zh) * | 2012-01-18 | 2012-09-12 | 深圳市合智创盈电子有限公司 | 一种具有姿态感测的多用途游戏控制器及系统 |
CN103505876A (zh) * | 2013-10-18 | 2014-01-15 | 电子科技大学 | 并联型动感游戏运动平台的控制装置及其控制方法 |
CN104492079A (zh) * | 2015-01-06 | 2015-04-08 | 电子科技大学 | 动感赛车游戏运动模拟器的运动控制装置及方法 |
CN104850726A (zh) * | 2014-02-13 | 2015-08-19 | 博雅网络游戏开发(深圳)有限公司 | 基于碰撞游戏的异常数据检测方法和系统 |
-
2015
- 2015-08-28 CN CN201510542896.0A patent/CN105107198B/zh not_active Expired - Fee Related
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1642782A (zh) * | 2002-10-02 | 2005-07-20 | 罗伯特-博希股份公司 | 保护乘客的装置 |
CN101286188A (zh) * | 2008-04-03 | 2008-10-15 | 深圳先进技术研究院 | 一种虚拟仿真系统中力觉反馈的计算方法 |
CN102063122A (zh) * | 2010-11-10 | 2011-05-18 | 哈尔滨工业大学 | 一种空间六自由度运动台模态控制方法 |
CN102087754A (zh) * | 2010-12-30 | 2011-06-08 | 长安大学 | 汽车碰两轮或三轮车后再碰固定物组合事故模拟再现系统 |
CN102034257A (zh) * | 2010-12-31 | 2011-04-27 | 长安大学 | 汽车与两轮或三轮车碰撞事故模拟再现计算机系统 |
CN102122204A (zh) * | 2011-01-17 | 2011-07-13 | 北京邮电大学 | 分布式力觉同步感知方法及系统 |
CN202427156U (zh) * | 2012-01-18 | 2012-09-12 | 深圳市合智创盈电子有限公司 | 一种具有姿态感测的多用途游戏控制器及系统 |
CN103505876A (zh) * | 2013-10-18 | 2014-01-15 | 电子科技大学 | 并联型动感游戏运动平台的控制装置及其控制方法 |
CN104850726A (zh) * | 2014-02-13 | 2015-08-19 | 博雅网络游戏开发(深圳)有限公司 | 基于碰撞游戏的异常数据检测方法和系统 |
CN104492079A (zh) * | 2015-01-06 | 2015-04-08 | 电子科技大学 | 动感赛车游戏运动模拟器的运动控制装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105107198A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105107198B (zh) | 动感赛车游戏碰撞过程的运动模拟实现方法与系统 | |
EP3242732B1 (en) | Mobile platform | |
US8298845B2 (en) | Motion platform video game racing and flight simulator | |
US5209662A (en) | Riding simulation system of motorcycle | |
KR101501632B1 (ko) | 인터랙티브 오감형 라이더 비행 배틀 레이싱 장치 | |
CN104492079B (zh) | 动感赛车游戏运动模拟器的运动控制装置及方法 | |
CN101496954B (zh) | 一种游戏控制器及其游戏处理方法 | |
CN103465992B (zh) | 喷气式球形机器人 | |
EP0406729A2 (en) | Riding simulation of motorcycle | |
CN113570939B (zh) | 一种基于六自由度平台的虚拟现实式摩托车模拟驾驶系统 | |
JP7072441B2 (ja) | シミュレーションシステム及びプログラム | |
KR101680142B1 (ko) | 모션라이더 기반의 인터랙티브 제트스키 가상체험 시스템 | |
CN103831828B (zh) | 机器人及其颈部机构 | |
TWM564808U (zh) | Somatosensory simulator | |
CN106730829A (zh) | 一种虚拟现实摩托艇模拟驾驶设备 | |
CN203612099U (zh) | 利用轴径向反力驱动的自平衡摇摆行走机器人 | |
CN110433506A (zh) | 体感仿真装置 | |
Adel et al. | Design of A 6-DOF hydraulic vehicle driving simulator | |
CN111785129B (zh) | 一种六自由度持续载荷模拟器过载模拟控制方法 | |
CN109289202B (zh) | 加强转向侧滑的体感装置 | |
JP2834546B2 (ja) | 二輪車のライディングシミュレーション装置 | |
EP3438951B1 (en) | Haptic feedback device for steering simulation | |
US10272332B2 (en) | Haptic feedback device for steering simulation | |
CN108854056B (zh) | 模拟转向的体感装置 | |
TWI621468B (zh) | 模擬轉向的體感裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180508 Termination date: 20180828 |
|
CF01 | Termination of patent right due to non-payment of annual fee |