残差缩减算法(Residual Reduction Algorithm)
一般来说,OpenSim进行动力学仿真的四个基本模块按照顺序依次为:
Scale–IK–RRA–CMC
首先我们需要明确的一点是,IK是一个离散积分的过程,通过对每个时刻内实验者的运动学数据进行计算,积分得到最终的运动轨迹。那么相对应的CMC(计算机肉控制)则是微分(差分)的过程,通过运动微分方程求解出所要知道的身体部分的加速度和角加速度,进而求出肌肉对身体的作用力。
减少残差的目的是最大程度地减少建模和标记数据处理错误的影响,这些错误很有可能会累积并导致模型产生巨大非物理补偿力。
因此在进行 CMC 计算之前一定要对 IK的结果进行残差缩减,否则 CMC 的结果就会出现较大的偏差。
具体而言,残差减少会更改特定对象模型的骨块质心,并使逆运动学中的模型运动学发生变化,以便更动态地与地面反作用力数据保持一致。
简而言之残差缩减就是在,正向的微分过程之前,对方程的原始数据进行误差处理。
RRA的主要原理
RRA算法通过增加残差力,来调整模型的力学特性,进而使得牛顿第二定律在任意时刻都成立(规避了实验数据采集的误差), 残差力的计算公式如下:
上式中,角标s代表了segment(身体片段)
RRA的操作方法
RRA的运算需要以下几个数据文件:
左侧的三个代表了输入信息,如之前所述.mot文件是运动信息文件,.osim文件是模型文件,右侧的两个文件是输出结果文件,其中包括残差力数据以及调整后的模型文件。上方的setup文件为配置文件。
首先打开Tools-RRA
可以看到上面有三个红色的选择框需要我们填入对应信息,此外还有一些细节的内容需要设置好。
当然,如果你仅仅是为了熟悉操作,你可以继续沿用我们之前所说的载入预设的方法,来看看效果,点击Load打开模型Gait2392的文件夹,载入Subject01_Setup_RRA.xml这一预设便可直接点击Run进行运算了。