OpenSim教程二——OpenSim的人体建模理论

时间:2024-03-17 08:33:32

概述

国内用于人体运动仿真的软件主要有LifeMOD、AnyBody、ANSYS等,这些软件有自身的缺点,如肌肉控制不精确、价钱昂贵等。为了更好地解决人体运动仿真问题,斯坦福大学研发了OpenSim,它是一款应用于人体肌肉骨骼模型开发、模拟仿真和运动分析的开源免费软件。本文以计算机建模和数学理论推导为基础,对OpenSim的建模理论和仿真步骤作详细介绍,为国内从事生物力学及相关研究的学者提供一些参考。
OpenSim的人体建模理论主要来源于Hill方程和Hill肌肉三元素模型。整个模拟过程主要由模型缩放(scaling)、逆向运动学(inverse kinematics, IK)、残差缩减(residual reduction algorithm, RRA)和肌肉计算控制(computed muscle control, CMC)四步组成,如下图所示。
OpenSim教程二——OpenSim的人体建模理论

模型缩放

OpenSim常采用某一个人的身高、体重数据以及肌肉特征数据建立通用模型,要得到个体化的模型就需要对通用模型进行缩放。模型缩放以实验室测试标记点数据为依据,根据实验数据与通用模型中人体环节点之间的比例,对各环节的长度和质量进行缩放。在缩放过程中,用最小二乘法控制实验中标记点与模型中理论点之间的误差。

逆向运动学

运动学是不考虑产生动作的力和力矩的情况下对运动的研究。所以在做运动学分析(比如逆运动学)时,不需要知道物体的质量和惯性。逆运动学的目标是找到能最好复现特定物体实验运动学的模型关节角度。这里逆运动学工具用到的实验运动学是基于实验标记点的。
逆运动学遍历动作的每个时间步,或每一帧,然后计算一组关节角度能让模型“最好地”匹配实验运动学。OpenSim通过解决最小化标记误差的带权最小二乘优化问题来找到“最佳匹配”。
标记误差被定义为实验标记点与对应虚拟标记点之间的距离。每个标记点有一个权值,表示该标记误差项在最小二乘问题当中最小化的程度。在每一帧中,逆运动学工具找到一个广义坐标向量(比如关节角度),q,最小化标记点误差的加权和,表示为:
minq[imakerswixexpixi(q)2]

其中xexpi是实验标记点i的位置,xi(q)是对应虚拟标记点i(取决于q)的位置,wi是标记点i对应的权重。

肌肉计算控制

肌肉计算控制(Computed Muscle Control, CMC)的目的是计算一组肌肉兴奋点,使动态肌肉骨骼模型追踪在给定外部施力下的期望动作,它通过比例微分(PD)控制和静态优化的组合实现。
在执行CMC算法之前,先计算模型的初始状态。初始状态包括广义坐标(关节角度)、广义速度(关节角加速度)和肌肉状态(如肌肉活性度和纤维长度)。广义坐标和速度的值可以从定义的期望动作中获取,而肌肉状态的初始值通常是不知道的。为了计算可用的初始肌肉状态,CMC在期望动作的前0.03秒开始执行。因为肌肉状态通常是不均衡的,且肌肉力在初始时间间隔中会显著变化,所以在这个时间间隔中的仿真通常不准确,为此我们要保证CMC至少得提前0.03秒开始。
OpenSim教程二——OpenSim的人体建模理论

残差缩减

残差缩减(Residual Reduction)是一个正向运动学仿真的形式,它用追踪控制器来追踪逆运动学产生的模型运动学。CMC作为控制器,在没有肌肉的情况下,模型的骨架能用来生成与地面反作用力一致的质量分布和关节运动学。
OpenSim教程二——OpenSim的人体建模理论
残差缩减主要用于如行走和跑步等与地面接触并受到地面反坐作用力的运动。这里我们用步态模型gait2354_simbody.osim举例,它包含10个刚体结构(骨头),23个广义坐标,其中的17个(*度)表示关节转动的角度,每个*度由扭矩致动器驱动,剩下的6个广义坐标表示模型骨盆与地面间的6个*度(3个平移,3个旋转)。为了模拟行走,我们需要表示模型如何推动自身相对于地面向前运动。我们把这骨盆与地面间的6个*度表示成一个6*度的关节,每个*度由自己的扭矩致动器驱动。每一个致动器叫做一个残差驱动器(residual actuator)。所以我们的模型一共有23个*度和23个驱动器,其中驱动骨盆与地面之间3个平移*度的力叫做剩余力,用FxFyFz表示。三个旋转*度由剩余扭矩(或力矩)驱动,用Mx, MyMz表示。
通常,模型假设(比如没有胳膊)、噪声和其他动作捕获的误差会导致动态不一致性。本质上,地面反作用力和从标记点估计的加速度满足牛顿第二定律

F=ma

粗略来说,6个残余量相当于在等式左边加了一个力,从而导致不一致性:
F+Fresidual=ma

如果地面反作用力测试和模型都没有误差,Fresidual的理论值是0,但误差不可避免,只能通过轨迹优化和环节质量调整等方法来减少。一般认为力的最大残差在0~10N为好,力矩残差在0~50N·m为好。

总结

OpenSim以肌肉形态参数为基础建立通用人体肌肉骨骼模型,我们可以通过实验室测得的实验数据对通用模型进行缩放,从而建立符合个体特征的个性化模型;接着通过逆向运动学求解,使建立的模型与人体实际情况最佳匹配;然后通过RRA方法把外部力,即地面反作用力与人体惯性参数相结合,把逆向动力学计算时的误差控制到最小;最后通过CMC改变肌肉参数,得到模拟仿真结果。
由于OpenSim具有对肌肉形态参数控制精细、计算误差小、计算速度快等特点,越来越多地被应用在神经肌肉性疾病病因分析、动作的神经肌肉控制策略研究等方面,也日益受到生物力学专家和学者的关注。

参考资料

【1】宋和胜, 钱竞光, 唐潇. 基于软件OpenSim的人体运动建模理论及其应用领域概述[J]. 医用生物力学, 2015, 30(4):373-379.
【2】黄磊. 基于OpenSim的人体下肢与康复机器人耦合仿真[D]. 天津大学, 2015.
【3】官方Examples and Tutorials