胡 存,劉敬猛,陳偉海
(北京航空航天大學(xué)自動化科學(xué)與電氣工程學(xué)院,北京 100191)
Virtools是一款優(yōu)秀的虛擬現(xiàn)實軟件,廣泛應(yīng)用于車輛模擬駕駛、虛擬手術(shù)、虛擬漫游、虛擬實驗、三維游戲等眾多領(lǐng)域[1],但在仿生六足機(jī)器人的仿真研究中還鮮有相關(guān)論文發(fā)表。而實際上,若將Virtools應(yīng)用于仿生六足機(jī)器人的仿真研究中,不僅能模擬仿真單個機(jī)器人的運動狀況,而且能更好地模擬機(jī)器人與機(jī)器人、機(jī)器人與周邊環(huán)境的相互作用。但這種應(yīng)用的難點之一,也是關(guān)鍵點之一在于對舵機(jī)的控制模擬。在仿生六足機(jī)器人的設(shè)計制作中,通常采用舵機(jī)(servo)作為其關(guān)節(jié)。仿生六足機(jī)器人的各種步態(tài),是通過舵機(jī)在控制器的作用下,帶動與之相連的肢節(jié)按相應(yīng)時序旋轉(zhuǎn)至指定角度位置實現(xiàn)的[2]。
如圖1所示,舵機(jī)由舵盤、外殼、直流電機(jī)、減速齒輪系、控制電路板、反饋裝置等組成[3]。其一般控制原理如圖2所示。
目標(biāo)位置信號(通常為一定占空比的PWM波)通過信號線傳至控制電路板,電機(jī)在控制電路發(fā)出的驅(qū)動信號作用下開始旋轉(zhuǎn),該旋轉(zhuǎn)運動通過減速齒輪系減速之后由輸出軸的輸出端輸出,同時由安裝于輸出軸另一端的位置反饋電位器輸出位置反饋電壓信號,饋送至控制電路板。當(dāng)輸出軸達(dá)到目標(biāo)位置之后,輸出軸停止轉(zhuǎn)動并保持在目標(biāo)位置,直至新的目標(biāo)位置信號傳入控制電路板[4]。
圖1 舵機(jī)的一般結(jié)構(gòu)圖
圖2 舵機(jī)的一般控制原理圖
在對仿生六足機(jī)器人的運動學(xué)仿真中,由于只需要對運動進(jìn)行仿真,因此可以將對舵機(jī)的控制簡化為對舵機(jī)體與舵機(jī)軸的相對旋轉(zhuǎn)運動的控制,即只需要模擬出符合目標(biāo)位置等要求的相對旋轉(zhuǎn)運動,而不用考慮舵機(jī)真實的控制過程。
Virtools軟件本身并不具備三維建模能力,所需模型由第三方軟件創(chuàng)建并導(dǎo)入。為了在必要時能方便地加工成實物樣機(jī),本文選擇Solidworks+3Ds Max的建模方法,首先利用Solidworks建好舵機(jī)體、舵機(jī)軸以及仿生六足機(jī)器人其他部件的基礎(chǔ)三維模型,然后生成.stl格式文件并導(dǎo)入3Ds Max中進(jìn)行模型優(yōu)化、烘焙貼圖和重置變換,之后再導(dǎo)出為Virtools可調(diào)用的.nmo格式文件[5]。六足機(jī)器人與舵機(jī)三維模型如圖3所示。
圖3 六足機(jī)器人與舵機(jī)三維模型
本文所述舵機(jī)是應(yīng)用場合對仿生六足機(jī)器人的運動模擬,應(yīng)置于有重力、摩擦力等力學(xué)效果的物理環(huán)境之中;因此,對舵機(jī)的仿真應(yīng)置于Virtools Physics Pack之中[6]。要實現(xiàn)這一點,首先要對模型進(jìn)行物理化。物理化的關(guān)鍵在于合理的參數(shù)選擇,不合理的參數(shù)可能使仿真結(jié)果偏離實際,嚴(yán)重時甚至導(dǎo)致引擎崩潰。在眾多參數(shù)中,較為重要的是Mass(質(zhì)量)的設(shè)置。根據(jù)Virtools技術(shù)手冊可知,作為運動鏈“根物體”的物體質(zhì)量不能設(shè)置得太小。換句話說,不能簡單的按實際質(zhì)量進(jìn)行設(shè)置,必須根據(jù)仿真效果綜合考慮。
在Virtools中,物理化之后的模型將不能使用Rotate、Translate等基礎(chǔ)3D變換行為模塊對其進(jìn)行運動控制。因此,須建立一個虛擬幀,利用基礎(chǔ)3D變換行為模塊控制虛擬幀的旋轉(zhuǎn)運動,再利用Physics Pack中運動控制行為模塊使舵機(jī)軸跟隨該虛擬幀的運動。虛擬幀所作旋轉(zhuǎn)運動的速度、位置等參數(shù)便是舵機(jī)旋轉(zhuǎn)運動的速度、位置參數(shù)。
2.3.1 舵機(jī)運動控制流程
舵機(jī)的運動控制流程如圖4所示。
要實現(xiàn)舵機(jī)的運動控制,必須采用Virtools消息控制機(jī)制[7],當(dāng)舵機(jī)接收到系統(tǒng)發(fā)送的指令后,通過Switch On Message進(jìn)行指令匹配以觸發(fā)相應(yīng)流程[8]。當(dāng)接收到的是鎖死指令時,將判斷當(dāng)前舵機(jī)狀態(tài),若處于解鎖位置,則觸發(fā)Set Physics Constraint行為模塊,在舵機(jī)軸與舵機(jī)體間設(shè)置完全約束,鎖死舵機(jī),并置狀態(tài)參數(shù)d=1。當(dāng)接收到的是旋轉(zhuǎn)指令時,首先提取旋轉(zhuǎn)指令附帶的運動參數(shù)——目標(biāo)位置a,并將目標(biāo)位置a與當(dāng)前位置b進(jìn)行比較,若a≠b,則判斷當(dāng)前舵機(jī)狀態(tài)。若處于鎖死位置,則利用Destroy Physics Constraint破壞全約束,使舵機(jī)解鎖,并置狀態(tài)參數(shù)為0,之后在舵機(jī)體與舵機(jī)軸之間利用行為模塊Set Physics Hinge添加鉸鏈連接;若處于解鎖位置,則直接在舵機(jī)體與舵機(jī)軸之間添加鉸鏈連接。舵機(jī)解鎖之后,一方面觸發(fā)Rotate行為模塊使虛擬幀旋轉(zhuǎn)到目標(biāo)位置,另一方面觸發(fā)Motion Controller行為模塊使舵機(jī)軸跟隨虛擬幀的旋轉(zhuǎn)運動。當(dāng)舵機(jī)軸運動到目標(biāo)位置時,觸發(fā)Set Physics Constraint行為模塊,在舵機(jī)軸與舵機(jī)體之間設(shè)置完全約束,鎖死舵機(jī),并置狀態(tài)參數(shù)d=1。
圖4 舵機(jī)的控制流程
2.3.2 Torque Factor參數(shù)設(shè)置
舵機(jī)軸在跟隨虛擬幀作旋轉(zhuǎn)運動時,必須合理設(shè)置Motion Controller行為模塊的參數(shù),特別是Torque Factor。該參數(shù)如果設(shè)置得太小,舵機(jī)軸將不能達(dá)到虛擬幀所在目標(biāo)位置;若過大,則運動加速度會很大,機(jī)體在慣性的作用下可能失穩(wěn)。該參數(shù)的合理值取決于運動的距離,距離越大,所需Torque Factor反而越??;距離越小,所需Torque Factor反而越大。本文以安裝在仿生六足機(jī)器人基節(jié)與股節(jié)間的舵機(jī)為例,提出一種動態(tài)的Torque Factor值設(shè)置方法。
圖5 舵機(jī)運動示意圖
如圖5所示,在舵機(jī)的一個旋轉(zhuǎn)運動回合中,可能經(jīng)歷 A→B,B→A′,A′→C,C→A 區(qū)間中的一個或連續(xù)幾個。假設(shè)圖中a點為目標(biāo)位置,b點為起始位置。當(dāng)a<b時,逆時針旋轉(zhuǎn);當(dāng)a>b時,順時針旋轉(zhuǎn);當(dāng)a=b時,不旋轉(zhuǎn)。
當(dāng)a<b且b<0°,即在A→B區(qū)間逆時針旋轉(zhuǎn)時,腿的重量會阻礙舵機(jī)旋轉(zhuǎn);當(dāng)a>b且b>0°,即在A′→C區(qū)間順時針旋轉(zhuǎn)時,部分機(jī)體重量會阻礙舵機(jī)旋轉(zhuǎn)。這兩種情況下的合理Torque Factor值與運動距離|a-b|的關(guān)系如圖6和圖7所示。
圖6 A→B區(qū)間Torque Factor值與運動距離|a-b|的關(guān)系
圖7 A′→C區(qū)間Torque Factor值與運動距離|a-b|的關(guān)系
當(dāng) a<b 且 a>0°,即在 C→A 逆時針旋轉(zhuǎn)時,機(jī)體的部分重量會促使舵機(jī)的旋轉(zhuǎn);當(dāng)a>b且a<0°,即在B→A′區(qū)間順時針旋轉(zhuǎn)時,腿的重量會促使舵機(jī)的旋轉(zhuǎn)。這兩種情況只需要維持一個小的Torque Factor值即可,而不用關(guān)心運動距離|a-b|的值。
當(dāng)出現(xiàn)跨越零點的情況,即 a<0°且 b>0°,或者a>0°且 b<0°時,則從 b 點到 0°位置為外力(機(jī)體重量或腿的重量)促進(jìn)舵機(jī)旋轉(zhuǎn),從0°位置到a點是外力阻礙舵機(jī)旋轉(zhuǎn),此時需考慮運動距離|a|與Torque Factor值之間的關(guān)系。
為了更快的根據(jù)a和b的值實時計算出合適的Torque Factor值,將上述6種情況簡化為前4種情況,即忽略旋轉(zhuǎn)跨越零點的情況,將其歸入A→B和A′→C區(qū)間內(nèi)的運動。
A→B區(qū)間內(nèi)Torque Factor值與運動距離|a-b|的關(guān)系可簡化為分段曲線:
A′→C區(qū)間內(nèi)Torque Factor值與運動距離|a-b|的關(guān)系可簡化為分段曲線:
B→A′區(qū)間內(nèi) Torque Factor值設(shè)為固定值0.03,C→A區(qū)間內(nèi) Torque Factor值設(shè)為固定值0.039。
當(dāng)不采用動態(tài)Torque Factor值設(shè)置方法時,為覆蓋全區(qū)間旋轉(zhuǎn)范圍,必須設(shè)置區(qū)間內(nèi)要求的最大的Torque Factor值。以基節(jié)與股節(jié)間的舵機(jī)在A→B區(qū)間內(nèi)的運動為例,依據(jù)圖6和公式(1)設(shè)定Torque Factor值為 0.0613。取 1°、5°和 45°3 個旋轉(zhuǎn)距離作為參考點,測量比較固定Torque Factor值和動態(tài)Torque Factor值對機(jī)體產(chǎn)生的影響,其中Xmax,Ymax,Zmax為機(jī)體在 X、Y、Z 軸上偏移的最大距離,θ(x)maxθ(y)max,θ(z)max為機(jī)體在 X、Y、Z 軸上偏轉(zhuǎn)的最大角度。測量結(jié)果如表1所示。
實驗結(jié)果表明,采用上述Torque Factor值設(shè)方法能有效地使舵機(jī)在運動快速性與平穩(wěn)性之間達(dá)到平衡,從而改善整個機(jī)器人的運動狀況,而且旋轉(zhuǎn)距離越大,這種改善越為明顯。
表1 不同Torque Factor值設(shè)定方法對運動平穩(wěn)性的影響
舵機(jī)是組成仿生六足機(jī)器人的關(guān)鍵部件,若要在Virtools中仿真機(jī)器人與機(jī)器人、機(jī)器人與環(huán)境間的相互作用,必須首先解決舵機(jī)在Virtools中的仿真問題。本文針對舵機(jī)運動特點,充分利用Virtools軟件現(xiàn)有組件,特別是Virtools Physics Pack,合理設(shè)置相關(guān)參數(shù),成功實現(xiàn)了舵機(jī)的運動仿真,從而為實現(xiàn)仿生六足機(jī)器人在Virtools中的仿真打下了基礎(chǔ)。
[1]吳靜,何強(qiáng).基于Virtools的教學(xué)軟件設(shè)計與實現(xiàn)[J].微計算機(jī)信息,2010,6(3):199-201.
[2]Duan X J,Chen W H,Yu S Q,et al.Tripod Gaits planning and kinematics analysis of a hexapod robot[C]∥IEEE International Conference on Control and Automation Christchurch,2009:1850-1855.
[3]王琮.集成化數(shù)字式小型機(jī)電作動器開發(fā)[D].北京:清華大學(xué):精密儀器與機(jī)械學(xué)系,2008:1-8.
[4]Cao P.Development of control module in small-size modular actuator for robotics [C]∥The 6th IEEE Conference on Industrial Electronicsand Applications(ICIEA 2011),2011:1660-1665.
[5]胡亮,王蘭美,宋宏鵬,等.Solidworks、3DS Max結(jié)合Virtools實現(xiàn)虛擬現(xiàn)實應(yīng)用研究[J].山東理工大學(xué)學(xué)報:自然科學(xué)版,2010,24(3):103-106.
[6]王興建,葛良全,劉思頌,等.基于Virtools的高級交互式虛擬現(xiàn)實模型庫的建立[J].中國測試技術(shù),2008,34(6):33-35.
[7]王平勤.基于Virtools的消息控制機(jī)制及其應(yīng)用研究[J].科技創(chuàng)新導(dǎo)報,2008(20):28-29.
[8]熊靜,金志良,賈震,等.基于Virtools車輛碰撞事故的虛擬動畫研究[J].道路交通與安全,2007,7(1):41-44.