吴旭琤
(上海飞机设计研究院四性与产品支援部,中国 上海 201210)
虚拟维修已经成为维修性分析的有效手段,设计人员可以在虚拟环境中,对产品可视、可达、操作空间以及人体舒适度等进行分析,从而在设计阶段可以做出前瞻性的决策与优化实施方案[1]。常用的虚拟维修工程仿真软件有Delmia,Jack 等[2],虽然这些软件很大程度上已经能帮助研究人员进行维修性分析,但在人体运动方面仍有不少问题有待改进。
本文针对在虚拟人基坐标发生变化时,关键帧插值出现失真现象,考虑基坐标在真实运动中的变化情况,引入修正因子进行修正,并通过仿真实例来验证模型的有效性。
在虚拟维修仿真中,常采用逆运动学算法获得关键帧,再通过关键帧插值获得连续的动作。当基坐标发生变化时,一般的关键帧插值算法会分别对关节角和基坐标进行插值,两者以相同速率变化,而这与实际情况不相符,以下蹲动作为例,会出现穿透障碍的失真现象,如Delmia 动作库中的下蹲动作,双脚在下蹲过程中穿过地面。此时,往往需要添加较多的关键帧或使用碰撞检测功能来防止失真现象。但前者需要花费更多的人力时间,影响仿真工作的效率,而后者则会消耗更多的计算机资源,在复杂场景下可能会影响仿真的实时性。发生这一问题的原因是人在实际运动时,基坐标并非匀速运动,因此,在插值时需要对基坐标进行一定的修正。
本文的虚拟人采用多刚体系统的骨骼模型,全身有34 个关节自由度,如图1 所示。
对于逆运动学问题求解,是已知运动链的末端控制点的目标姿态,计算运动链各关节的关节角度[3]。利用Jacobian 矩阵可以建立两者关系,即:
△x=J△q
其中,J 为Jacobian 矩阵,由运动链的几何特征唯一确定。
而逆运动学问题的解通常可以表示为:
△q=J+△x
其中,J+=JT(JJT)-1为Jacobian 矩阵的Moore-Penrose 广义逆。
根据逆运动学算法迭代求解得到的虚拟人姿态进行关键帧插值,关节角与末端控制点的关系为:
x=T(q)B
中,B 为基坐标,T(q)为基坐标与末端控制点的坐标变换矩阵。
取修正因子h=L-x,L 为环境限制边界,无限制的自由度分量取Li=xi。以地面限制为例,假设地面坐标为z,则:
L=[x1,x2,x3,x4,x5,x6]T
h=[0,0,z-x3,0,0,0]T
修正后的基坐标B′=B+h。
修正后的末端控制点x′=T(q)B′
通过对基坐标的修正,可以消除与限制边界的干涉量,达到姿态修正的目的。
以虚拟人下蹲动作为例,使用逆运动学算法求出下蹲后的姿态,使用带基坐标修正的关键帧插值算法获得完整的下蹲动作,整个运动过程中虚拟人都没有与地面发生干涉,如图2 所示。
本文中所使用的仿真实例是在AMD A10-5750M(2.5GHz)CPU,内存4GB 的PC 机上完成,平均姿态计算时间为0.068s,可以流畅地完成仿真,具有较好的实时性。
为了解决仿真中基坐标发生变化时出现的失真现象,本文提出了一种引入修正因子的关键帧插值算法,对基坐标进行了修正,所获得虚拟人仿真动作符合真实情况,同时,具有较好的实时性。
[1]刘佳,刘毅.虚拟维修技术发展综述[J].计算机辅助设计与图形学学报,2009,21(11):1519-1534.
[2]郝建平,蒋科艺,王松山,等.虚拟维修仿真理论与技术[M].北京:国防工业出版社,2008.
[3]李石磊,梁加红,李猛,等.基于姿态库和PIK 算法的虚拟人全身姿态生成[J].系统仿真学报,2011,23(12):2693-2700.