肌肉骨骼模型

骨骼的刚体动力学模型

首先基于刚体动力学对于人体骨骼系统进行建模。首先确定系统的广义坐标qqq,对于图中所示的二维模型为例,广义坐标包含躯干的水平、数值方向位移和姿态角,以及每条腿三个关节角,一共3+2∗3=93+2*3=93+2∗3=9个自由度。之后通过这些广义变量和广义变量的导数,表示出系统的动能和势能,并构造拉格朗日函数:
L=T−VL=T-VL=T−V
考虑骨骼系统仅收到地反力和肌肉力的作用,通过拉格朗日方程得到系统的动力学模型:
ddt(∂L∂q˙j)−∂L∂qj=τcontactj+τmusclej\frac{\mathrm{d}}{\mathrm{d} t}\left(\frac{\partial L}{\partial \dot{q}_{j}}\right)-\frac{\partial L}{\partial q_{j}}=\tau^{j}_{contact}+\tau^{j}_{muscle}dtd​(∂q˙​j​∂L​)−∂qj​∂L​=τcontactj​+τmusclej​

M(q)⋅q¨+B(q,q˙)=J(q)TFcontact+R(q)Fmuscle\mathbf{M}(\mathbf{q}) \cdot \ddot{\mathbf{q}}+\mathbf{B}(\mathbf{q}, \dot{\mathbf{q}})=\mathbf{J(q)}^T\mathbf{F}_{contact}+\mathbf{R(q)}\mathbf{F}_{muscle}M(q)⋅q¨​+B(q,q˙​)=J(q)TFcontact​+R(q)Fmuscle​

其中M(q)\mathbf{M(q)}M(q)为质量矩阵,B(q,q˙)\mathbf{B}(\mathbf{q}, \dot{\mathbf{q}})B(q,q˙​)包含重力、离心力和科氏力,J(q)\mathbf{J(q)}J(q)表示雅克比矩阵,将地反力转化为对每个广义坐标的等效力矩,R(q)\mathbf{R(q)}R(q)表示肌肉力对广义坐标的等效力矩。下面我们主要讨论等式右侧的肌肉力与地反力。

肌肉动力学

肌肉激活动力学

尽管各个文献里的描述不尽一致,但一般来说excitation用来描述神经信号,是肌肉的控制输入(整流滤波归一化的EMG信号就是这个),而activation用来表示肌肉的活跃度,是肌肉的内部状态。在静态状态下,这两者可能相等,但在动态变化中,两者一般不同,存在由excitation到activation动态过程,即肌肉激活动力学。各方学者建立了不同的激活动力学模型,一般包含一个微分方程和一些非线性变换,其中Winters开发的一种激活动力学如下:

f=0.5tanh⁡(b(e−a))f=0.5 \tanh (b(e-a)) f=0.5tanh(b(e−a))
dadt=[1τa(0.5+1.5a)(f+0.5)+0.5+1.5aτd(−f+0.5)](e−a)\frac{d a}{d t}=\left[\frac{1}{\tau_{a}(0.5+1.5 a)}(f+0.5)+\frac{0.5+1.5 a}{\tau_{d}}(-f+0.5)\right](e-a) dtda​=[τa​(0.5+1.5a)1​(f+0.5)+τd​0.5+1.5a​(−f+0.5)](e−a)

肌肉收缩动力学

肌肉收缩的特性可以用如上的Hill肌肉模型来描述,它由肌肉收缩单元CE与被动弹性单元PE并联,并与一个肌腱弹性单元T串联,肌肉与肌腱之间还存在一个角度成为羽状角。由于根据上面的模型,肌肉实际产生的力不仅受到收缩单元CE的激活度的影响,还受到肌肉的长度、收缩速度的影响。由肌肉纤维产生的力具有如下关系:

Fmt(t)=Ft=Fmax⁡[a(t)f(l)f(v)+fp(l)]cos⁡(ϕ(t))\begin{aligned} F^{\mathrm{mt}}(t) &=F^{\mathrm{t}} \\ &=F^{\max }\left[a(t)f(l) f(v) +f_{\mathrm{p}}(l)\right] \cos (\phi(t)) \end{aligned}Fmt(t)​=Ft=Fmax[a(t)f(l)f(v)+fp​(l)]cos(ϕ(t))​

Fmax⁡F^{\max }Fmax表示最大等长收缩力,f(l),f(v),f(p)f(l),f(v),f(p)f(l),f(v),f(p)分别表示力-长度、力-速度、被动力-长度的关系。这些函数由下图所示的实验曲线所描述,一般可以通过多项式函数拟合来近似表示。

注意到上式公式中,实际输入为激活度aaa、归一化肌肉长度lll、和归一化收缩速度vvv,而肌肉长度与收缩速度之间存在关系,收缩动力学的状态量仅有aaa和lll,且上述方程描述的是一个微分方程。我们将整个肌肉动力学表示为如下形式,但这种表示并不严谨,实际上每块肌肉包含着两个微分方程:

Fmuscle=Fmuscle(q,a,a˙,LCE,L˙CE,e)\mathbf{F}_{muscle} = \mathbf{F}_{muscle}(\mathbf{q},\mathbf{a} , \mathbf{\dot a},\mathbf{L}_{CE},\mathbf{\dot L}_{CE},\mathbf{e})Fmuscle​=Fmuscle​(q,a,a˙,LCE​,L˙CE​,e)

地反力模型

OpenSim中采用Hunt-Crossley模型来表示接触力,接触力由刚度项、阻尼项和摩擦项组合而成,其表达式为:

fcontact=fstiffness+fdissipation+ffriction\mathbf{f}_{\text {contact}}=\mathbf{f}_{\text {stiffness}}+\mathbf{f}_{\text {dissipation}}+\mathbf{f}_{\text {friction}}fcontact​=fstiffness​+fdissipation​+ffriction​

接触力模型中的第一项表示弹性力。如上图所示,我们可以用两个弹性小球来描述接触,当小球接触时会发生弹性变形,变形的程度与各自的弹性模量EEE有关,总的变形为xxx。当变形发生时,每个小球都会受到一个弹性力:

fstiffness=fHz=(43σR1/2E∗)x3/2f_{\text {stiffness}}=f_{H z}=\left(\frac{4}{3} \sigma R^{1 / 2} E^{*}\right) x^{3 / 2}fstiffness​=fHz​=(34​σR1/2E∗)x3/2

RRR表示合成相对曲率,E∗E^*E∗表示合成弹性模量,它们都可以通过两个小球的参数计算出来;σ\sigmaσ表示偏心系数,当σ=1\sigma=1σ=1的时候为圆接触,xxx为总的变形量。

接触力模型中的第二项表示损耗力,或是阻尼力。碰撞的发生往往伴随着能量的损耗,单纯的弹性力无法表示这一点,因此引入Hunt-Crossley耗散力:

fdissipation=32fstiffnessc∗x˙f_{dissipation}=\frac{3}{2} f_{stiffness} c^{*} \dot{x}fdissipation​=23​fstiffness​c∗x˙

c∗c^{*}c∗表示等效耗散系数,而x˙\dot{x}x˙表现出耗散力的阻尼特性。刚度力和耗散力都垂直接触面。

fnormal=fstiffness+fdissipationf_{\text {normal}}=f_{\text {stiffness}}+f_{\text {dissipation}}fnormal​=fstiffness​+fdissipation​

接触力模型中的最后一项表示摩擦力,方向平行接触面:

ffriction=μ(v)fnormalf_{\text {friction}}=\mu(v) f_{\text {normal}}ffriction​=μ(v)fnormal​

μ(v)\mu(v)μ(v)表示等效摩擦因数,是关于相对运动速度的函数。

在使用上述的Hunt-Crossley模型来计算地反力时,地面的刚度认为无穷大,则相对弹性变形xxx可以通过接触小球圆心相对地面的距离计算得到,即:

Fcontact=Fcontact(q,q˙)\mathbf{F}_{contact} = \mathbf{F}_{contact}(\mathbf{q}, \dot{\mathbf{q}})Fcontact​=Fcontact​(q,q˙​)

综合模型

综上所述,肌骨模型的动力学可以统一表示为:

M(q)⋅q¨+B(q,q˙)=J(q)TFcontact(q,q˙)+R(q)Fmuscle(q,a,a˙,LCE,L˙CE,e)\mathbf{M}(\mathbf{q}) \cdot \ddot{\mathbf{q}}+\mathbf{B}(\mathbf{q}, \dot{\mathbf{q}})=\mathbf{J(q)}^T \mathbf{F}_{contact}(\mathbf{q}, \dot{\mathbf{q}})+\mathbf{R(q)}\mathbf{F}_{muscle}(\mathbf{q},\mathbf{a} , \mathbf{\dot a},\mathbf{L}_{CE},\mathbf{\dot L}_{CE},\mathbf{e})M(q)⋅q¨​+B(q,q˙​)=J(q)TFcontact​(q,q˙​)+R(q)Fmuscle​(q,a,a˙,LCE​,L˙CE​,e)

定义状态变量:

x=(q,q˙,LCE,a)T\mathbf{x}=\left(\mathbf{q}, \dot{\mathbf{q}}, \mathbf{L}_{C E}, \mathbf{a}\right)^{T}x=(q,q˙​,LCE​,a)T

在定义uuu为16块肌肉的控制量(excitations),上面的动力学方程可表示为:

f(x,x˙,u)=0\mathbf{f}(\mathbf{x}, \dot{\mathbf{x}}, \mathbf{u})=0f(x,x˙,u)=0

肌骨模型的仿真应用

前向仿真

逆向分析

逆向分析是指,在已有运动学、地反力数据后,根据实验数据推断出产生相应运动的肌肉活动,也就是OpenSim中的CMC。由于肌肉之间存在和比较严重的耦合问题,多块肌肉连接同一个关节,同一块肌肉连接着不同关节,因此逆向分析最重要的是解决肌肉冗余 - Solving the Muscle Redundancy Problem。

在这个问题中,已有运动学数据qk\mathbf{q}_kqk​和地反力FCk\mathbf{F}_{\mathbf{C}k}FCk​序列,k=1,…,Kk=1, \ldots, Kk=1,…,K表示离散时间。我们先计算逆动力学得到关节力矩TIDkT_{\mathbf{ID}k}TIDk​,关节力矩应当等于有肌肉收缩的等效力矩:

TIDk=∑m=1MrmkFTm+eTkTmaxT_{\mathrm{ID} k}=\sum_{m=1}^{M} r_{m k} F_{\mathrm{T} m}+e_{\mathrm{T} k} T_{\mathrm{max}}TIDk​=m=1∑M​rmk​FTm​+eTk​Tmax​

mmm表示肌肉序号,rrr表示肌肉对关节等效力矩。有时候关节力矩和肌肉里橘无法严格相等,因此我们添加了公式中的最后一项来表示力矩的残差,而eTke_{\mathrm{T} k}eTk​表示残差系数,在后面我们会设计优化目标是残差力尽可能的小。

由此建立逆向分析的优化框架:

基于肌肉骨骼模型的预测仿真相关推荐

  1. python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

    python基于logistic回归模型的预测概率和标签信息可视化ROC曲线 目录 python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

  2. python基于随机森林模型的预测概率和标签信息可视化ROC曲线

    python基于随机森林模型的预测概率和标签信息可视化ROC曲线 目录 python基于随机森林模型的预测概率和标签信息可视化ROC曲线

  3. 基于自适应最优多评价神经模糊控制的MIMO人体肌肉骨骼臂模型

    Adaptive optimal multi-critic based neuro-fuzzy control of MIMO  human musculoskeletal arm model 摘要: ...

  4. 基于离散Markov模型的Web用户行为预测算法的研究

    目录 一.理论基础 二.案例背景 1.问题描述 2.思路流程 三.部分MATLAB程序 四.仿真结论分析 五.算法相关应用 六.参考文献 一.理论基础 对于 Kth -Markov 模型,常见的建模算 ...

  5. kaggle项目:基于随机森林模型的心脏病患者预测分类!

    公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...

  6. Python基于statsmodels包构建多元线性回归模型:模型构建、模型解析、模型推理预测

    Python基于statsmodels包构建多元线性回归模型:模型构建.模型解析.模型推理预测 目录

  7. 散射回波仿真Matlab,基于散射中心模型的ISAR回波仿真方法

    1引言传统的成像雷达目标回波仿真采用全姿态角一维距离像建立模板库进行目标回波仿真,实时性较差,而且需要相当大的存储量.对于宽带ISAR而言,其真实回波信号包含着非常丰富的信息,仅依靠一维距离像模型进行 ...

  8. 基于时间序列AR模型的PHM预测

    基于时间序列AR模型的PHM预测 由于时间序列分析方法是一个小样本理论,应用起来方便简单,符合实际工程中样本数量较小的情况的需求. 在工程领域,自回归(AR)模型比滑动平均(MA)模型和自回归滑动平均 ...

  9. 评分卡模型(二)基于评分卡模型的用户付费预测

    评分卡模型(二)基于评分卡模型的用户付费预测 小P:小H,这个评分卡是个好东西啊,那我这想要预测付费用户,能用它吗 小H:尽管用- (本想继续薅流失预测的,但想了想这样显得我的业务太单调了,所以就改成 ...

最新文章

  1. 《统一沟通-微软-实战》-7-配置-3-响应组
  2. system()函数实现
  3. python【力扣LeetCode算法题库】169-多数元素
  4. 关于一致性hash详细
  5. 银河计算机网络,Python脚本之socket
  6. 矩阵分解(matrix factorization)
  7. Asp.Net MVC控制器、控制器动作和动作结果
  8. 一个指导人机系统评估的框架
  9. 练习-Java类和对象之包的定义
  10. ACL——拒绝源地址
  11. java生成二维码QRcode方式
  12. 微信小程序 富文本编辑器 editor
  13. 如何利用Syncthing+蒲公英快速实现异地文件同步
  14. uni-app 表单验证
  15. php项目宝塔搭建实战前后端Niushop开源商城系统
  16. RabbitMQ 面试题目整理
  17. jquery 会话存储_5个jQuery打字和会话插件
  18. java epson_打印 – 如何使用JavaPOS使用Epson打印机打印接收?
  19. android笔记listview item加载动画
  20. bl小说里面有个机器人管家_《机器管家》简介

热门文章

  1. Excel工作表保护公式那些事儿
  2. AD19导出Gerber文件-嘉立创打板
  3. 南农计算机考研真题,2021南京农业大学考研历年真题
  4. 利用迭代公式求平方根。
  5. Android USB Camera(1) : 调试记录
  6. Excel中计算个人所得税的公式
  7. 【第01题】A + B | 基础输入输出,开启学习C语言打卡的序章
  8. 基于NXP_LS1012A 芯片ARM工控主板
  9. queue容器常用接口
  10. mysql score表_MySQL连表查询练习题