趙炳炎,陳宗華,劉偉俊
(1.玉林師范學(xué)院 物理與電信工程學(xué)院,廣西 玉林 537000;2.玉林師范學(xué)院 體育健康學(xué)院,廣西 玉林 537000)
1989年Blickha提出了彈簧負載倒立擺模型(spring-loaded inverted pendulum,SLIP)。如圖1所示,該模型由一根輕質(zhì)彈簧和一個質(zhì)點組成,只需合理設(shè)置初始條件和少量參數(shù),就能夠模擬人、袋鼠、青蛙等生物的跑跳前進運動[1]。彈簧負載倒立擺模型在前進時只有2個狀態(tài)(相),即單腿相和飛行相,所模擬的步態(tài)只能在2個相之間切換,可模擬的步態(tài)較少[2-5]。
圖1 彈簧負載倒立擺模型
雙彈簧負載倒立擺模型比SLIP模型多一根彈簧,雖然運動模式更復(fù)雜多變,但是可以模擬出更多的步態(tài),且更符合人在體育運動過程中走、跑和跳的規(guī)律[6-7]。雙彈簧負載倒立擺在前進運動時,可以出現(xiàn)單腿相、飛行相和雙腿相,而多出的雙腿相意味著更多的步態(tài)形式(圖2)。
圖2 雙彈簧負載倒立擺模型
通過建立該模型前進時的動力學(xué)方程,并利用MATLAB計算模擬出該模型在不同步態(tài)下的穩(wěn)定前進,不但可以更好理解人在各種步態(tài)運動時的生物力學(xué)原理,也為研發(fā)雙足行走機器人提供參考。
如圖2所示,雙彈簧負載倒立擺模型是由一個質(zhì)量為m的質(zhì)點連接兩根勁度系數(shù)為k的輕質(zhì)彈簧構(gòu)成,彈簧原長均為l0。只考慮模型前進運動,質(zhì)點的運動范圍限制在矢狀面(前進方向和豎直方向構(gòu)成的平面)內(nèi),且機械能守恒。根據(jù)運動狀態(tài)的不同,模型可分為3個階段:①單腿相,即兩根彈簧中只有一根彈簧觸地,另一根彈簧在空中擺動;②雙腿相,即兩根彈簧都觸地;③飛行相,即兩根彈簧都沒有觸地,質(zhì)點在空中只受到重力作用。倒擺在前進的時候,模型會在3個相之間不斷切換,切換模式的不同,決定了步態(tài)的不同。例如走路步態(tài)前進時,單腿相和雙腿相的不斷切換;跑步步態(tài)前進時,單腿相和飛行相的不斷切換;跳躍步態(tài)前進時,則單腿相、飛行相、雙腿相都會出現(xiàn)。彈簧自重忽略不計,所以在未觸地時彈簧的擺動對質(zhì)點的動力學(xué)方程沒有影響。
在矢狀面內(nèi)建立直角坐標系,令模型前進的方向為x方向,豎直方向為y方向,根據(jù)牛頓定律分別建立3個相的動力學(xué)方程。單腿相時,系統(tǒng)受到重力和一根觸地彈簧的反作用力:
(1)
雙腿相時,系統(tǒng)受到重力和兩根觸地彈簧的反作用力:
(2)
飛行相時,系統(tǒng)只受到重力的作用:
(3)
3個相的動力學(xué)方程中,(1)和(2)為非線性常微分方程,無法求得解析解,但可以利用MATLAB中的4、5階龍格庫塔方程函數(shù)ode45對動力學(xué)方程求數(shù)值解。
倒擺在前進過程中,模型在3個相之間的不斷切換。根據(jù)不同步態(tài),將切換規(guī)律歸納在表1中。
表1 三種典型步態(tài)前進時的相位切換規(guī)律
模型處于不同的相,需求解的動力學(xué)方程也不同,模型在3個相之間切換,則求解的動力學(xué)方程也需在方程(1)~(3)之間切換。所以必須確立相切換的觸發(fā)條件,當滿足觸發(fā)條件時,則立即終止當前動力學(xué)方程的求解,切換到下一個相的動力學(xué)方程繼續(xù)求解。設(shè)兩根彈簧的支撐點坐標為(0,0)和(x0,0),倒擺質(zhì)點的位置坐標為(x,y)。
觸發(fā)條件①:單腿相→飛行相,此刻觸地彈簧正要離開地面與地面壓力剛好為零,彈簧保持原長,即
(4)
觸發(fā)條件②:飛行相→單腿相,此刻質(zhì)點的高度剛好讓一根彈簧觸地。α1為單腿觸地時與地面的夾角,即
y=l0sinα1
(5)
觸發(fā)條件③:單腿相→雙腿相,此刻懸空的高度可以剛好讓另外一根彈簧觸地。α2為第二只觸地的彈簧與地面的夾角。
y=l0sinα2
(6)
觸發(fā)條件④:雙腿相→單腿相,兩根觸地彈簧中,其中一根剛好達到彈簧原長。
(7)
觸發(fā)條件⑤:終止計算,當數(shù)值解滿足y=0時,質(zhì)點已經(jīng)觸地,倒立擺倒地不再前進。當vx≤0時,倒立擺向后運動,不再前進。滿足上述兩種情況,表示運動結(jié)束,終止計算。
圖3所示的是編程計算的流程圖。令倒立擺起始階段為單腿相,在設(shè)定好初始參數(shù)后,利用ODE45函數(shù)對方程(1)降階求解??捎肙DESET函數(shù)的‘Events’選項確定觸發(fā)條件①~⑤,如果解一旦滿足相應(yīng)的觸發(fā)條件則立即停止當前相的求解,保存數(shù)據(jù)并跳入下一個相應(yīng)相的方程繼續(xù)求解,初始值由前次已得解確定。接下來的動力學(xué)方程求解過程中,繼續(xù)判斷觸發(fā)條件‘Events’,根據(jù)不同的觸發(fā)事件終止當前相的計算并選擇進入下一個相對應(yīng)的相,繼續(xù)計算,以此類推,不斷切換循環(huán),直到計算時間終止或者所得解滿足了觸發(fā)條件(5)。觸發(fā)條件(5)表示系統(tǒng)前進失敗,停止計算,程序終止。
圖3 程序求解流程
模型前進的穩(wěn)定性嚴重依賴于模型參數(shù)和初始條件的設(shè)定。不合理的模型參數(shù)或初始條件都會導(dǎo)致倒擺失穩(wěn)倒地或倒退。我們通過對人在前進運動時的觀測,預(yù)估出大致的模型參數(shù)和初始條件,代入程序后對參數(shù)進行大量的調(diào)試,模擬出倒擺走路、跑步和跳躍的步態(tài)。
模型參數(shù)設(shè)定大致參照成年人體特征,兩根彈簧原長為l0=1 m,彈力系數(shù)為k=30 kN·m-1,重力加速度為g=9.81 m·s-2,模型質(zhì)點即質(zhì)點質(zhì)量為m=80 kg。初始條件包括質(zhì)心的起始位置(x,y),初速度(vx,vy),彈簧每次觸地時的夾角為α1和α2。初始條件(x,y,vx,vy,α1,α2)對前進的穩(wěn)定性至關(guān)重要,需將預(yù)估初始條件代入求解程序后,并加以大量的調(diào)試得到。這里分別模擬出了雙彈簧倒立擺的三種前進步態(tài),走路步態(tài)、跑步步態(tài)和跳躍步態(tài)。將穩(wěn)定前進時循環(huán)計算所得的數(shù)值解,利用MATLAB的animation函數(shù)動畫演示出來,可直觀顯示出步態(tài),如圖4所示。
圖4 前進時的步態(tài)模擬動畫
圖5 走路步態(tài)時質(zhì)心速度隨時間的變化曲線
圖6 走路步態(tài)時質(zhì)心高度隨前進方向的變化圖像
圖7 跑步步態(tài)時質(zhì)心速度隨時間變化曲線
圖8 跑步步態(tài)時質(zhì)心高度隨前進方向的變化圖像
圖9 跳躍步態(tài)時質(zhì)心速度隨時間變化曲線
圖10 跳躍步態(tài)時質(zhì)心速度隨時間變化曲線
1)雙彈簧負載倒立擺模型可以模擬出體育運動過程中行走步態(tài)、跑步步態(tài)和跳躍步態(tài)。給出適當范圍的模型參數(shù)和初始條件,模型可以經(jīng)過很短時間自動調(diào)整出穩(wěn)定的步態(tài)。
2)倒立擺前進步態(tài)的穩(wěn)定性嚴重依賴于模型參數(shù)和初始條件,例如把3.3中的跳躍步態(tài)的攻角α1從85.2°微調(diào)到83.5°,其他條件不變,則倒立擺只能前進17.7 m就會倒地,導(dǎo)致程序計算終止。因此,合適模型參數(shù)和初始條件只能從仿生學(xué)角度獲得一個大致范圍,然后經(jīng)過大量調(diào)試才能獲得。
3)對獲得穩(wěn)定步態(tài)設(shè)定合理的模型參數(shù)和初始條件可以考慮利用一些優(yōu)化算法得到,這也是未來工作方向的重點。