李瑞 史瑩晶 何笑隆
摘要:提出通過ADAMS軟件建立單足彈跳模型,搭建ADAMS與MATLAB的聯(lián)合仿真平臺,闡述通過在仿真中實時觀察機器人的運動過程,并結合模型反饋回的數(shù)據(jù)曲線,學生可以完成單足模型的腿部擺角控制實驗、能量補償實驗等。
關鍵詞:機器人建模;聯(lián)合仿真;擺角控制;能量補償
0 引言
機器人技術在近二三十年里得到了迅速的發(fā)展,其應用范圍也從工業(yè)制造領域擴展到了航空航天、軍事偵察、醫(yī)療服務等領域。隨著機器人工作環(huán)境的日益復雜,對于機器人運動靈活性的要求也越來越高。目前,機器人運動主要分為輪式、步行以及彈跳等方式,其中彈跳式運動所特有的突然性與爆發(fā)性,可以使機器人在面對突發(fā)狀況時迅速地做出反應,躲避風險,正被越來越多的科研院校所關注。
目前,國內很多工科院校都把機器人學作為一門必修或選修的課程。然而,在傳統(tǒng)的教學中,機器人學中的運動學、動力學建模部分涉及復雜的分析與運算。對于彈跳機器人,更包含著地相、騰空相、沖擊過程等若干個階段,建模十分復雜;此外,由于機器人設備價格昂貴,且對操作性以及場地要求較高,目前還很難做到讓每個學生進行實際的機器人操作。隨著虛擬樣機技術的發(fā)展,在虛擬樣機軟件中建立用于仿真的模型,并與其他仿真軟件相結合的聯(lián)合仿真技術,對于機器人的研究與教學工作發(fā)揮著重要的作用。
1 聯(lián)合仿真技術簡介
ADAMS是一款對機械系統(tǒng)的運動學與動力學進行仿真與計算的軟件。作為一款虛擬樣機軟件,ADAMS豐富的特性,使其成為目前世界上使用最多的機械系統(tǒng)仿真分析軟件。這套軟件可以對較為復雜的機械系統(tǒng)進行建模,并真實地反應實物的運動學、動力學等特性。然而,由于該軟件自帶的控制工具箱較為簡易,因此只能滿足比較簡單的控制需求。
MATLAB作為專業(yè)的數(shù)學計算與仿真軟件,借助其豐富的工具箱以及強大的控制系統(tǒng)的設計能力,可以搭建出復雜的控制系統(tǒng)。但在建立復雜運動系統(tǒng)的模型時,需要推導出系統(tǒng)中用于仿真的所有微分方程,導致工作量急劇增加,其中從分析模型到計算推導,任意一個環(huán)節(jié)出錯都可能導致建模失敗。
通過將ADAMS軟件中建立的模型導入到MATLAB的Simulink環(huán)境中,可以彌補ADAMS軟件難以對模型進行較為復雜控制系統(tǒng)設計的缺陷,同時也避免了在MATLAB下建模的難度與時間長的弊端。二者的結合彌補了各自的缺陷,極大地提高了建模的效率,并使得仿真的結果更加趨近于實物。因此基于ADAMS和MATLAB的聯(lián)合仿真技術在航空航天、機械制造、機器人等領域都得到了廣泛的應用。
2 機器人聯(lián)合仿真平臺搭建
彈簧負載倒立擺模型(SLIP)是用來研究機器人彈跳運動的經(jīng)典模型,整個模型由一個有質量的身體以及與髖關節(jié)相連的輕質彈簧腿組成。位于髖關節(jié)處有一轉動自由度,使得彈簧腿可以調整著地角度,以實現(xiàn)整個彈跳過程。由于聯(lián)合仿真平臺的搭建是本教學實踐的一部分,只有了解平臺的搭建過程,才可以在仿真平臺上開展實驗,并及時修改實驗過程中出現(xiàn)的錯誤。因而,首先介紹聯(lián)合仿真平臺的搭建過程,如圖1所示。
2.1 建立單足機器人的ADAMS模型
首先介紹如何針對彈簧負載倒立擺模型,在ADAMS環(huán)境下搭建彈跳模型運動仿真平臺。
(1)添加構件。彈簧負載倒立擺模型主要由身體和彈簧腿兩部分組成,其中身體質心等效在髖關節(jié),因此在建模時可以用有質量的球體代替。
在ADAMS環(huán)境下,選取有質量信息的幾何實體(Solids)模塊,選擇球體(Sphere)用來模擬身體質心,設置其半徑為5.0cm,并拖動到圖形區(qū)。在創(chuàng)建新構件時,系統(tǒng)會在球體的球心處創(chuàng)建一個質心坐標系(cm)和局部坐標系(Marker點),其中質心坐標系用于計算構件的質量信息,而局部坐標系用于確定球體的位置和方向。由于在ADAMS中新添加的構件根據(jù)大小以及密度自動計算質量,需手動修改其質量,改為4.5kg。
創(chuàng)建新構件圓柱體(cylinder),連接在球體正下方,作為彈簧腿剛性部分,設置半徑為2.0cm,長度為20.0cm,并修改其質量為0.5kg。在圓柱體正下面50cm處添加新構件球體,用以代替足端,設置其半徑為2.0cm,并修改其材質為Wood。在圓柱體與輕質球之間連接彈簧阻尼器,其長度為500mm,剛度系數(shù)設置為2N/mm,阻尼系數(shù)采用默認值。
(2)添加約束。已建立的模型由多個構件組成,各個構件之間通常存在某些約束關系,即一個構件限制另一個構件的運動,兩個構件之間的約束關系通常稱之為運動副。彈簧負載倒立擺模型有兩個自由度,一個是髖關節(jié)處腿部的轉動自由度,一個是彈簧腿軸向的自由度。因此需要在球體質心位置(即髖關節(jié))定義旋轉副約束,如圖2(a);而為了約束彈簧在運動時只在軸向伸縮,需要在彈簧與圓柱體連接處定義滑動副約束,如圖2(b)。
(3)定義地面及接觸力。當兩個構件的表面之間發(fā)生接觸時,兩個構件就會在接觸的位置產(chǎn)生接觸力。
對于彈簧質量模型,由于要研究其在地面上的彈跳運動,因此需要定義地面及其接觸力、摩擦力等以模擬真實地面情況。
首先選擇零件庫中的立方體(Box)作為地面,設置長、高、深分別為1000cm、5cm、20cm,修改材質為Wood,并調整位置,使上表面與x軸重合,且關于z軸對稱。添加固定關節(jié)(FixedJoint),使其與大地固連。在Force工具條中,點擊Create Contact按鈕,設置足部球體與地面的接觸類型為Solid to Solid,計算接觸力的方法采用沖擊函數(shù)法(Impact),其中的參數(shù)采用默認值。在摩擦力選項中,選擇Coulomb(庫侖法),并設置靜態(tài)摩擦系數(shù)為0.3,動摩擦系數(shù)為0.1。
最終在ADAMS環(huán)境下建立的模型如圖3所示。
2.2 ADAMS模型導出到MATLAB環(huán)境
(1)定義輸入輸出。ADAMS與MATLAB之間的數(shù)據(jù)交換是通過狀態(tài)變量實現(xiàn)的,在定義輸入輸出以前,需要將相應的狀態(tài)變量定義好。在本模型中,需要輸入的變量為髖關節(jié)轉矩;輸出變量為腿部著地角度、身體質心的前向速度與高度、足底與地面接觸力等。
創(chuàng)建力矩的狀態(tài)變量并命名為.SLIP.Torque,在髖關節(jié)的轉動關節(jié)處添加單分量力矩,并修改其函數(shù)為VARVAL(.SLIP.Torque),使模型中的狀態(tài)變量(Torque)與單分量力矩相關聯(lián)。
創(chuàng)建著地角度、質心高度、速度及接觸力的狀態(tài)變量,分別命名為angle、Height、Velocity、Contact。著地角度函數(shù)為AZ(MARKER_11,MARKER_12),即位于圓柱腿上的坐標MARKER 11相對于身體上的坐標MARKER 12關于z軸旋轉的角度。同理,分別用DY、VX和CONTACT函數(shù)定義高度、速度以及接觸力的狀態(tài)變量。
設置完狀態(tài)變量后,分別指定狀態(tài)變量Torque為輸入變量,Angle、Contact、Height、Velocity為輸出變量。
(2)導出控制參數(shù)。在創(chuàng)建完控制輸入與控制輸出后,選擇Control菜單的Plant Export選項,分別將之前定義的輸入輸出變量加載到列表中,將Target Software選擇為MATLAB,Analysis Type類型選擇為non linear。
通過以上設置,在ADAMS工作目錄中,將生成Controls_Plant.m,Controls_Plant.cmd,Controls_Plant.adm 3個文件。啟動MATLAB,將MATLAB工作目錄指向ADAMS的工作目錄。在命令窗口中輸入Controls Plant,即執(zhí)行Controls Plant.m文件,此時在MATLAB的工作空間中將導人ADAMS模型信息,如圖4(a);接著輸入命令adams_sys,該命令是ADAMS與MATLAB的接口命令,由此可以生成如下模型,如圖4(b)。
其中,S-Function表示ADAMS模型的非線性模型,State-Space表示線性化模型,而adams sub為我們仿真需要的模型,包含了之前定義的輸入與輸出變量。至此,ADAMS模型在MATLAB中的仿真模型生成完畢,可以在Simulink環(huán)境下對其進行仿真實驗。
由于在聯(lián)合仿真平臺的搭建過程中,涉及的細節(jié)很多,而且容易出錯,因而,對參與教學實踐的學生首先分組,采用組長負責制,逐層推進,保證每個學生均可獨立完成平臺搭建。
3 仿真平臺的實驗
針對搭建的單足彈跳機器人仿真平臺,可引導學生進行相關控制器的學習與設計。目前學生已經(jīng)在此平臺基礎上,進行了單足機器人腿部擺角實驗、著地角度與前向速度關系實驗,以及彈簧腿能量補償實驗等。
3.1 模型腿部擺角實驗
對于單足機器人的彈跳運動研究,首先需要解決的就是腿部擺動角度的控制。通過將模型的身體固定,利用髖關節(jié)轉矩控制腿部的轉動角度,學生設計了PID控制器。給定幅值為30°,周期為ls的方波信號,實現(xiàn)了腿部角度跟蹤任務,如圖5所示。
3.2 著地角度與前向速度關系實驗
在腿部擺角實驗的基礎上,學生又對著地角度與前向彈跳速度的關系進行了研究與實驗。在彈跳機器人即將從騰空相進入著地相時,需要調整腿部著地角度,以使機器人的腳趾落在合適的位置。通過控制模型腿部擺角來影響落地點的位置,機器人或保持原有速度,或加快彈跳速度,或降低彈跳速度。當模型的著地速度與離地速度相同時,此時腳趾落地點的位置稱為中性點。學生在學習理解中性點的概念后,分析落地點相對于中性點的3種不同位置對于彈跳速度的影響,并在仿真平臺中進行驗證。
對于彈跳運動相對于中性點對稱的情形,研究人員總結出用于計算彈簧質量模型前向速度的公式,通過計算可得,在前向速度為1.5m/s時,穩(wěn)定運動的著地角度約為13.6°,如圖6所示。
此外,學生又分別增大和減小腿部著地角度,觀察模型著地點落在中性點近端和遠端時對模型前向速度的影響。
在實際著地角度小于期望角度時,模型的矢量平面將發(fā)生偏轉,此過程離地時的角度將增大,整個模型做加速運動,如圖7所示。
與加速過程相反,該狀態(tài)下著地角度大于期望角度,從而導致模型離地角度減小,隨著前向速度的不斷減小,模型最終失穩(wěn),甚至出現(xiàn)反向跳躍的過程,如圖8所示。
3.3 SLIP模型能量補償實驗
在忽略能量損耗的情況下,只要確定了在期望速度下的著地角度,SLIP模型便能夠實現(xiàn)穩(wěn)定的周期跳躍運動。然而,在實際的運動過程中,由于落地碰撞以及摩擦等原因,導致系統(tǒng)能量不斷損耗,因此需對模型在每個周期損耗的能量進行補償。
針對這一問題,學生采用為彈簧滑動關節(jié)處加一外力用以壓縮彈簧,以達到補償能量的目的。鑒于此,學生對已建立的ADAMS模型增加了輸入變量F,增加了輸出變量彈簧壓縮量Spring Length,以及模型質心豎直方向速度Velocity On Y。
基本的彈跳狀態(tài)可以分成著地相和騰空相,在此基礎上,學生將模型的運動狀態(tài)進行了細分,建立有限狀態(tài)機的控制邏輯。通過檢測模型質心在豎直方向的速度以及與地面接觸力,來判斷模型當前所處的狀態(tài),并分別在不同狀態(tài)下進行不同的控制,如圖9所示。
能量損耗很大一部分原因是由模型沖擊地面造成的,隨著數(shù)次落地彈起的過程,彈簧在著地期間的壓縮量越來越小。通過觀察模型在自由狀態(tài)下落地前后兩個周期質心的高度差,可以求得一次落地時的能量損耗,進而計算得到每次著地期間所需的補償力。通過有限狀態(tài)機判斷當前模型運動所處的狀態(tài),并在觸底事件發(fā)生時進行能量補償,最終實現(xiàn)模型的周期彈跳運動,運動曲線示意圖如圖10所示。
4 結語
通過本教學實踐,學生掌握基于ADAMS與MATLAB的聯(lián)合平臺的搭建方法,系統(tǒng)地實踐了機器人動力學建模方法。基于ADAMS與MATLAB的聯(lián)合仿真平臺,使得學生在仿真時不僅可以得到仿真曲線,更可以實時觀察模型的運動過程,這種教學實踐方法提高了學生的學習自主性與科研熱情。
(編輯:郭田珍)