《非线性弹簧模型》由会员分享,可在线阅读,更多相关《非线性弹簧模型(3页珍藏版)》请在金锄头文库上搜索。
1、1.1 非线性弹簧模型很多物理仿真都使用基于浸入深度的计算方法来达到物理模拟的效果,38提出了一种新颖快速的计算多面体模型之间浸入深度的方法,但计算模型浸入深度不是本文的重点,本文重点在于计算反馈作用力。在反馈作用力的计算中,使用比较多的是39中提到的计算受力的线性弹簧模型如图 5,虚拟手用图 5-2中的小球来表达,虚拟场景中与虚拟手交互的物体可以用一个虚拟墙来代表。公式(5-1)是该模型作用力的计算公式,Xw是虚拟墙的位置,X 是小球的位置。根据该弹簧模型的计算公式,作用力的计算结果随小球深入墙的距离是线性增加的,但在真实世界中,当手抓取一个物体时,作用力的增加会随着皮肤和肌肉的形变逐渐达到
2、一个饱和,抓取力不会无限制增加,会逐渐趋于一个常数,而且力的增加并不完全是线性的,当超过一定的阈值后,呈现逐渐缓慢的趋势,因此本文对简单线性弹簧模型进行扩展,提出使用非线性分段函数建模弹簧模型,计算交互作用力。对于比较小的差异,使用线性函数计算,对于比较大的差异,使用常数饱和力,中间用曲线函数计算,使增加呈现逐渐缓慢的趋势,计算过程见公式(5-2)和(5-3),公式(5-2)是非线性弹簧模型中的扭力计算,公式(5-3)是非线性弹簧模型中的拉伸力计算。前面讨论过手的形态占据 20 个自由度,这 20 个自由度每个自由度都由非线性弹簧模型中的扭力部分来建模计算,如公式(5-2),而五个手指每个手指
3、分别由非线性弹簧模型中的拉伸力部分建模,如公式(5-3),这样总共相当于所建立的非线性弹簧模型中总共包括 20 个扭力弹簧模型和 5 个拉伸力弹簧模型,利用这些弹簧模型计算出人手每个部分的作用力,然后再对每个手指的多个作用力进行合成处理。图 5-2 简单线性弹簧模型示意图(5-1) www xxxxKxxF)(0公式(5-2)计算出每个关节自由度的扭力,公式(5-3)计算出每个手指部分的拉伸力。Kt1 、Kt2 、Kf1 、Kf2分别是弹性系数,bt1 、bt2 、bf1 、bf2是阻尼系数,Aw是线框手每帧的角度,As是实体手停留在物体表面时的角度,Ww和Ws分别是线框手和实体手的角速度,
4、是实体手和场景中物体发生碰撞检测后,线框手和实体手之间产生的手指角度差异,1 是非线性弹簧模型中扭力由线性变换阶段到指数缓慢变换阶段过渡的阈值,2 是由指数缓慢变换阶段到常数阶段的过渡阈值。d 与 类似,是实体手和线框手之间手指的位置差异,d1 是非线性弹簧模型中拉伸力由线性阶段到指数缓慢变换阶段过渡的阈值,d2 是由指数缓慢变换阶段到常数阶段过渡的阈值。(5-2) B, ,)W-(Wb )A-(AK),W-(Wb )A-(AK22 1aswt2aswt21swt1swt1(5-3) 221a swf2a swf21swf1swf1dd B, ddd ,)V-(Vb)P-(PKdd ),V-(
5、Vb)P-(PKfWs为 0,Ww的计算见公式(5-4)。A 和 Apre分别是连续两帧关节的角度,t 是一帧的时间间隔。Pw是线框手每帧的位置,Ps是实体手停留在物体表面时的位置,Vw和 Vs分别是线框手和实体手的速度。当发生碰撞后,Vs为0,Vw的计算见公式(5-5)。P 和 Ppre分别是连续两帧线框手对应点的位置。此外,Pw和 Ps通过正向运动学方法计算得到。(5-4)tAAWprew)(5-5)tPPVprew)(1.2 抓取作用力的视觉反馈为了尽量避免使用代价昂贵的力反馈设备,同时由于本文所用设备不包含力反馈设备,本文没有过多的关注触觉反馈部分,如果进行触觉算法部分的相关研究,则是
6、针对特定的触觉反馈设备进行的,40为 CyberGrasp 设计了一套实时的触觉渲染算法,得到了很好的效果。本文提出以视觉反馈的形式给出抓取力的结果。每个手指对应 4 个自由度,分别对应 4 个扭力弹簧模型,每个手指还有 1 个线性弹簧模型,所以对这 5 个力合成,求出每个手指的合力,并给出渲染结果。渲染结果的形式是简洁直观的,用箭头来表示力,在每个手指上画出一个箭头表示合成力的结果,这个力的大小由公式(5-6)计算得到。碰撞检测可以返回发生碰撞的三角面片的法向量,那么计算这些法向量的平均值作为最终合力的方向是比较合理的表示。F 是每个手指最终的合力,k1,k2,k3,k4,k5 是合成系数,j1,j2,j3,j4分别是每个手指对应于 4 个扭力弹簧模型求出的扭力,f 是对应于线性弹簧模型求出的手指拉伸力,V 是求出的平均法向量,f*V 相当于把求出的拉伸力在最终的渲染方向上进行分解,*V 是把求出的扭力在渲染方向上进行分解。(5-6)VfkVkVkVkVkFjjjj543214321