天天看點

基于肌肉骨骼模型的預測仿真

肌肉骨骼模型

骨骼的剛體動力學模型

基于肌肉骨骼模型的預測仿真

首先基于剛體動力學對于人體骨骼系統進行模組化。首先确定系統的廣義坐标 q q q,對于圖中所示的二維模型為例,廣義坐标包含軀幹的水準、數值方向位移和姿态角,以及每條腿三個關節角,一共 3 + 2 ∗ 3 = 9 3+2*3=9 3+2∗3=9個自由度。之後通過這些廣義變量和廣義變量的導數,表示出系統的動能和勢能,并構造拉格朗日函數:

L = T − V L=T-V L=T−V

考慮骨骼系統僅收到地反力和肌肉力的作用,通過拉格朗日方程得到系統的動力學模型:

d d t ( ∂ L ∂ q ˙ j ) − ∂ L ∂ q j = τ c o n t a c t j + τ m u s c l e j \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 ) T F c o n t a c t + R ( q ) F m u s c l e \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.5 tanh ⁡ ( b ( e − a ) ) f=0.5 \tanh (b(e-a)) f=0.5tanh(b(e−a))

d a d t = [ 1 τ a ( 0.5 + 1.5 a ) ( f + 0.5 ) + 0.5 + 1.5 a τ 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的激活度的影響,還受到肌肉的長度、收縮速度的影響。由肌肉纖維産生的力具有如下關系:

F m t ( t ) = F t = F max ⁡ [ a ( t ) f ( l ) f ( v ) + f p ( 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))​

F max ⁡ F^{\max } Fmax表示最大等長收縮力, f ( l ) , f ( v ) , f ( p ) f(l),f(v),f(p) f(l),f(v),f(p)分别表示力-長度、力-速度、被動力-長度的關系。這些函數由下圖所示的實驗曲線所描述,一般可以通過多項式函數拟合來近似表示。

基于肌肉骨骼模型的預測仿真

注意到上式公式中,實際輸入為激活度 a a a、歸一化肌肉長度 l l l、和歸一化收縮速度 v v v,而肌肉長度與收縮速度之間存在關系,收縮動力學的狀态量僅有 a a a和 l l l,且上述方程描述的是一個微分方程。我們将整個肌肉動力學表示為如下形式,但這種表示并不嚴謹,實際上每塊肌肉包含着兩個微分方程:

F m u s c l e = F m u s c l e ( q , a , a ˙ , L C E , L ˙ C E , 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模型來表示接觸力,接觸力由剛度項、阻尼項和摩擦項組合而成,其表達式為:

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

基于肌肉骨骼模型的預測仿真

接觸力模型中的第一項表示彈性力。如上圖所示,我們可以用兩個彈性小球來描述接觸,當小球接觸時會發生彈性變形,變形的程度與各自的彈性模量 E E E有關,總的變形為 x x x。當變形發生時,每個小球都會受到一個彈性力:

f stiffness = f H z = ( 4 3 σ R 1 / 2 E ∗ ) x 3 / 2 f_{\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

R R R表示合成相對曲率, E ∗ E^* E∗表示合成彈性模量,它們都可以通過兩個小球的參數計算出來; σ \sigma σ表示偏心系數,當 σ = 1 \sigma=1 σ=1的時候為圓接觸, x x x為總的變形量。

接觸力模型中的第二項表示損耗力,或是阻尼力。碰撞的發生往往伴随着能量的損耗,單純的彈性力無法表示這一點,是以引入Hunt-Crossley耗散力:

f d i s s i p a t i o n = 3 2 f s t i f f n e s s c ∗ x ˙ f_{dissipation}=\frac{3}{2} f_{stiffness} c^{*} \dot{x} fdissipation​=23​fstiffness​c∗x˙

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

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

接觸力模型中的最後一項表示摩擦力,方向平行接觸面:

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

μ ( v ) \mu(v) μ(v)表示等效摩擦因數,是關于相對運動速度的函數。

在使用上述的Hunt-Crossley模型來計算地反力時,地面的剛度認為無窮大,則相對彈性變形 x x x可以通過接觸小球圓心相對地面的距離計算得到,即:

F c o n t a c t = F c o n t a c t ( 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 ) T F c o n t a c t ( q , q ˙ ) + R ( q ) F m u s c l e ( q , a , a ˙ , L C E , L ˙ C E , 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 ˙ , L C E , a ) T \mathbf{x}=\left(\mathbf{q}, \dot{\mathbf{q}}, \mathbf{L}_{C E}, \mathbf{a}\right)^{T} x=(q,q˙​,LCE​,a)T

在定義 u u u為16塊肌肉的控制量(excitations),上面的動力學方程可表示為:

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

肌骨模型的仿真應用

前向仿真

基于肌肉骨骼模型的預測仿真

逆向分析

逆向分析是指,在已有運動學、地反力資料後,根據實驗資料推斷出産生相應運動的肌肉活動,也就是OpenSim中的CMC。由于肌肉之間存在和比較嚴重的耦合問題,多塊肌肉連接配接同一個關節,同一塊肌肉連接配接着不同關節,是以逆向分析最重要的是解決肌肉備援 - Solving the Muscle Redundancy Problem。

在這個問題中,已有運動學資料 q k \mathbf{q}_k qk​和地反力 F C k \mathbf{F}_{\mathbf{C}k} FCk​序列, k = 1 , … , K k=1, \ldots, K k=1,…,K表示離散時間。我們先計算逆動力學得到關節力矩 T I D k T_{\mathbf{ID}k} TIDk​,關節力矩應當等于有肌肉收縮的等效力矩:

T I D k = ∑ m = 1 M r m k F T m + e T k T m a x T_{\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​

m m m表示肌肉序号, r r r表示肌肉對關節等效力矩。有時候關節力矩和肌肉裡橘無法嚴格相等,是以我們添加了公式中的最後一項來表示力矩的殘差,而 e T k e_{\mathrm{T} k} eTk​表示殘差系數,在後面我們會設計優化目标是殘差力盡可能的小。

由此建立逆向分析的優化架構:

基于肌肉骨骼模型的預測仿真

繼續閱讀