王存磊, 朱燈林
(1.中國電子科技集團第五十五研究所,南京210016;2.河海大學機電工程學院,江蘇常州213022)


ADAMS支持的用戶自定義子程序種類很多,但接口方式和編譯過程大同小異,本文僅以驅動子程序CONSUB為代表,介紹ADAMS自定義子程序在機器人仿真中的應用。仿真結果說明利用用戶子程序可以不借助通用控制仿真軟件而能進行復雜仿真。
由于ADAMS本身沒有編譯器,必須借助于外部編譯器才能生成用戶所需要的動態鏈接庫文件,ADAMS/Solver以動態鏈接庫的方式調用用戶編制的子程序。本文所用的ADAMS軟件是ADAMS 2005,采用Compaq Visual Fortran Version 6.6為程序設計語言。其使用過程如下:1)安裝軟件Compaq Visual Fortran Version 6.6和ADAMS 2005。2)在Fortran中編寫用戶自定義子程序源代碼consub.f。3)應用Fortran語言編譯器編譯源代碼文件,生成obj文件consub.obj。4)生成動態鏈接庫文件consub.dll。打開命令提示符窗口,將目錄切換到ADAMS的安裝目錄C∶MSC.SoftwareAdamsMDR2common,依次輸入mdi→cr-user→回車→再回車,然后切換到consub.obj文件的保存目錄輸入consub.obj→回車,這時提示輸入dll文件名,輸入cosub.dll回車,動態鏈接庫文件consub.dll就生成了。5)執行setting-solver-executable把生成的動態鏈接庫文件加載到adams/view中。6)最后編制腳本調用語句,調用dll文件,利用腳本仿真控制對話框進行仿真。
堤壩搶險打樁六足機器人凸型階梯障礙行走仿真采用了ADAMS用戶子程序的控制方法。仿真控制流程如圖3所示,在ADAMS/view中建立仿真模型、設置傳感器和仿真腳本,規則步態規劃和二次規劃都寫入控制子程序,然后生成動態鏈接庫,利用動態鏈接庫來控制ADAMS/view中的仿真模型進行仿真。當足踩到障礙時,通過足端傳感器來感知當前仿真時間和當前的關節角位移,返回子程序進行二次規劃。

圖3 行走機構虛擬樣機簡化模型
在平地行走仿真中,我們采用了step函數控制關節旋轉角度的方法順利進行了平地仿真,但是在如圖4所示的越障行走中,如果關節驅動繼續按平地規劃轉動,就會把機體頂起,整個機體就會失穩,這是機器人所不允許的。這就需要通過傳感器感知障礙并能實時獲得踩到障礙的時間和關節角度,以便進行二次規劃順利越過障礙。

仿真的目的是要六足機器人在踩到階梯障礙時能改變運動規劃,使機器人繼續平穩前行。在腿1踩到障礙時,通過力傳感器檢測到障礙,這時腿1的驅動關節必須停止,由擺動相轉為支撐相,腿2開始運動。因此,需要實時測得踩到障礙時的關節角度值,并賦給腿1的關節驅動,作為下次關節轉動的起始值。我們利用功能子程序解決了這個問題,代碼如下:
CALL SYSFNC('AZ',IPAR1,2,DIS1,ERRFL
WEI1=DIS1
經計算得知,在3*3式密碼中,折線經過的點數為4時有1624種情況,經過的點數為5有7152種,經過的點數為6有26016種,經過的點數為7有72912種,經過的點數為8和9均有140704種。可得,3*3圖形的密碼排列情況共389112種。
CALL SYSFNC('AZ',IPAR2,2,DIS2,ERRFLG)
WEI2=DIS2
CALL RSTRNG(WEI1,anl_1,length,istat)
CALL RSTRNG(WEI2,anl_2,length,istat)
MOTION_2_fix='MOTION/2,FUNCTION ='//trim(anl_1)
CALL MODIFY(MOTION_2_fix,st)
MOTION_3_fix='MOTION/3,FUNCTION ='//trim(anl_2)
CALL MODIFY(MOTION_3_fix,st)
腿1踩到障礙,腿1轉為支撐相,腿2開始運動,這就需要腿2擺動的起始時間點就是腿1踩到障礙時的時間,因此腿1踩上障礙的時間點需要實時獲得作為腿2腿運動的起始時間,我們通過ADAMS子程序功能中的時間獲取函數解決了這個問題,代碼如下:
CALL GETSTM(TIME1)
這樣,兩個重要參數都可以實時獲得了,再把平地規劃好的其它腿關節的驅動參數都寫入子程序,按前面講述的方法編譯生成dll文件,就可以用通過子程序控制機器人行走了。
本文作為對六足機器人非平坦路面行走的初步探討,將以重心固定的三步一動的步態進行越障仿真分析。所謂三步一動就是:首先腿1、腿2、腿3依次邁步,接著6只足著地同時支撐機體前移,然后腿4、腿5、腿6依次邁步,最后6只足支撐機體再前移,一個步態周期完成。之所以選擇此種步態,是因為此種步態無需為穩定性考慮,任意時刻都至少有5條腿處于支撐相,確保整個機體任何時刻都處于靜態穩定狀態,但行走效率較低。
1)機體平穩性分析。
從圖5、圖6可以看到:
a.機體沿x方向以分步移動的方式向前行走,左右沿y方向有輕微搖動,在32 s左右附近出現了比較明顯的y方向偏移,這是因為在32 s時,足3是踩在階梯邊緣,支撐機體移動時足端有輕微振動,使機體產生了一定量的偏移。
b.機體無明顯的上下起伏,上下起伏在30 mm之內,與機體高度相比非常小,在踩到障礙時機體能保持平穩。
2)各腿關節角度曲線圖。
從圖7可以看到,腿1、腿3、腿5在踩到障礙時,傳感器檢測到障礙,機器人對踩到障礙的腿關節調整規劃,保持機體平穩不被頂起或跌落,其它3腿行進過程中沒有障礙,按規則步態前行,越過障礙后,整個機體又恢復了有規律的行走。

圖5 階梯障礙仿真視頻截圖

圖6 機體重心在行進過程中的位移
對六足機器人非平坦路面行走進行了初步探討,探索了一種利用ADAMS軟件子程序控制技術對六足機器人跨越障礙進行仿真的方法,并對堤壩搶險打樁六足機器人跨越階梯障礙并且平穩行走進行了仿真、分析,在足式步行機器人技術領域具有一定的理論意義和實用價值。
[1] 鄭凱,胡仁喜.ADAMS 2005機械設計高級應用實例[M].北京∶機械工業出版社,2006∶90-96.
[2] 宋磊.四足移動機器人步態規劃與足力控制研究[D].哈爾濱:哈爾濱工業大學,2007.
[3] 陳立平,張云清.機械系統動力學分析及ADAMS應用教程[M].北京∶清華大學出版社,2005:255-272.
[4] 張錦榮.基于虛擬樣機技術的四足機器人仿真研究[D].西安:西北工業大學,2007:11-20.
[5] Niku.機器人學導論-分析、系統及應用[M].孫富春,朱紀洪,劉國棟,等譯.北京∶電子工業出版社,2004:74-78.
[6] 毛宗源.機器人的智能控制方法[M].北京∶國防工業出版社,2002∶4.
[7] Bares J E,Whittaker W I.Configuration of autonomous walkers for extreme terrain [J].The Ineternational Journal of Robotics Research,1993,12(6):535-559.
[8] 胡廈.六足步行機器人直行關鍵技術研究[D].杭州∶浙江大學,2008∶1-30.
[9] 蔡民祥.六腳機械載具之設計與運動分析[D].臺北:中央大學,2003∶1-30.
[10] Lee TT,Liao CM.On the Stability Propertiesof Hexapod Tripod Gait[J].Journal of Robotics Automation,1988,8(4):420-430.