羅 敏,劉世平,李世其,朱文革
(華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院,湖北 武漢 430074)
雖然機(jī)器人技術(shù)進(jìn)展已經(jīng)很成熟,但因?yàn)闄C(jī)器人多連桿的結(jié)構(gòu)、多自由度的工作空間、惡劣的作業(yè)環(huán)境、復(fù)雜的操作任務(wù),使得機(jī)器人的結(jié)構(gòu)設(shè)計(jì)、機(jī)器人與周邊設(shè)備之間以及機(jī)器人各連桿之間的碰撞檢測(cè)、機(jī)器人運(yùn)動(dòng)路徑規(guī)劃及遠(yuǎn)程控制變得相對(duì)復(fù)雜[1]。將機(jī)器人技術(shù)及圖形仿真技術(shù)結(jié)合起來(lái)開(kāi)發(fā)機(jī)器人運(yùn)動(dòng)學(xué)仿真平臺(tái),將會(huì)簡(jiǎn)化機(jī)器人設(shè)計(jì)和控制工作,提高機(jī)器人的工作效率,擴(kuò)展機(jī)器人的工作范圍,所以運(yùn)用計(jì)算機(jī)圖形學(xué)最新研究成果,開(kāi)發(fā)一套機(jī)器人運(yùn)動(dòng)學(xué)仿真平臺(tái)具有現(xiàn)實(shí)意義。
基于Open Inventor虛擬場(chǎng)景技術(shù)、數(shù)據(jù)庫(kù)信息管理技術(shù)及機(jī)器人運(yùn)動(dòng)學(xué)規(guī)劃技術(shù),利用Visual C++6.0編程軟件,建立空間機(jī)械臂運(yùn)動(dòng)仿真平臺(tái),討論它的基本原理,分析它的運(yùn)作過(guò)程,并進(jìn)行實(shí)驗(yàn)驗(yàn)證。
根據(jù)數(shù)據(jù)庫(kù)中模型運(yùn)動(dòng)規(guī)劃數(shù)據(jù)表中動(dòng)素指令的執(zhí)行序列,依次讀取動(dòng)素指令,解析動(dòng)素指令,執(zhí)行動(dòng)素指令,循環(huán)遍歷數(shù)據(jù)庫(kù)中的模型運(yùn)動(dòng)規(guī)劃數(shù)據(jù)表、模型運(yùn)動(dòng)參數(shù)數(shù)據(jù)表、模型運(yùn)動(dòng)關(guān)系數(shù)據(jù)表和模型運(yùn)動(dòng)位姿數(shù)據(jù)表,實(shí)時(shí)計(jì)算模型運(yùn)動(dòng)變換矩陣,修改模型局部坐標(biāo)系相對(duì)全局坐標(biāo)系中的絕對(duì)位姿,從而完成整個(gè)任務(wù)過(guò)程的仿真[2]。運(yùn)動(dòng)仿真流程如圖1所示。
圖1 運(yùn)動(dòng)仿真流程
運(yùn)動(dòng)仿真模塊的核心是對(duì)模型絕對(duì)位姿的計(jì)算,而針對(duì)不同的聯(lián)動(dòng)帶類(lèi)型,主動(dòng)模型與隨動(dòng)模型絕對(duì)位姿的計(jì)算方法是不一樣的,下面以常見(jiàn)的回轉(zhuǎn)聯(lián)動(dòng)帶為例講述模型位姿的計(jì)算方法。
設(shè)動(dòng)素指令解析出來(lái)的主動(dòng)模型節(jié)點(diǎn)為A,假設(shè)旋轉(zhuǎn)角度為Q。根據(jù)模型名稱(chēng)和參數(shù)代號(hào)查詢(xún)模型運(yùn)動(dòng)參數(shù)表得到A的相關(guān)信息:
根據(jù)已知的旋轉(zhuǎn)軸信息和旋轉(zhuǎn)角度,由計(jì)算機(jī)圖形學(xué)中繞任意軸旋轉(zhuǎn)變換通式,得到A模型的旋轉(zhuǎn)變換矩陣RA。則
回轉(zhuǎn)聯(lián)動(dòng)帶分為同軸回轉(zhuǎn)聯(lián)動(dòng)帶和異軸回轉(zhuǎn)聯(lián)動(dòng)帶,下面分別計(jì)算其隨動(dòng)模型的絕對(duì)位姿。
a.設(shè)模型運(yùn)動(dòng)關(guān)系表中與主動(dòng)模型節(jié)點(diǎn)A存在同軸回轉(zhuǎn)聯(lián)動(dòng)帶關(guān)系的隨動(dòng)模型節(jié)點(diǎn)為B,模型節(jié)點(diǎn)B的旋轉(zhuǎn)角度為Q,查詢(xún)模型運(yùn)動(dòng)位姿表得到模型節(jié)點(diǎn)B的絕對(duì)位姿矩陣為T(mén)。設(shè)A旋轉(zhuǎn)軸的方向矢量在B 坐標(biāo)系下為(k′1,k′2,k′3),起點(diǎn)坐標(biāo)為(d′1,d′2,d′3)。則
根據(jù)計(jì)算出的旋轉(zhuǎn)軸信息和已知的旋轉(zhuǎn)角度,由計(jì)算機(jī)圖形學(xué)中繞任意軸旋轉(zhuǎn)變換通式,得到B模型的旋轉(zhuǎn)變換矩陣RB。則
b.設(shè)模型運(yùn)動(dòng)關(guān)系表中與主動(dòng)模型節(jié)點(diǎn)A存在異軸回轉(zhuǎn)聯(lián)動(dòng)帶關(guān)系的隨動(dòng)模型節(jié)點(diǎn)為B,傳動(dòng)比為S、則模型節(jié)點(diǎn)B的旋轉(zhuǎn)角度為θB=Q/S,查詢(xún)模型運(yùn)動(dòng)位姿表得到模型節(jié)點(diǎn)B的相關(guān)信息如下:
根據(jù)已知的旋轉(zhuǎn)軸信息和旋轉(zhuǎn)角度,由計(jì)算機(jī)圖形學(xué)中繞任意軸旋轉(zhuǎn)變換通式,得到B模型的旋轉(zhuǎn)變換矩陣為RB。則
在Pro/E、SolidWorks等三維建模軟件中,對(duì)運(yùn)動(dòng)模型進(jìn)行幾何建模,將其轉(zhuǎn)化為*.iv格式的文件,以便將其導(dǎo)入到虛擬仿真環(huán)境中。
確定模型局部坐標(biāo)系相對(duì)全局坐標(biāo)系的位姿變換矩陣,構(gòu)建模型運(yùn)動(dòng)位姿數(shù)據(jù)表,模型運(yùn)動(dòng)位姿數(shù)據(jù)表主要用來(lái)儲(chǔ)存模型名稱(chēng)、初始位姿和當(dāng)前位姿。
確定模型旋轉(zhuǎn)軸參數(shù)和平移軸參數(shù),構(gòu)建模型運(yùn)動(dòng)參數(shù)數(shù)據(jù)表,模型運(yùn)動(dòng)參數(shù)數(shù)據(jù)表主要用來(lái)存儲(chǔ)模型名稱(chēng)、參數(shù)代號(hào)、旋轉(zhuǎn)軸方向矢量、旋轉(zhuǎn)軸起點(diǎn)坐標(biāo)和平移方向矢量。
實(shí)體模型之間因?yàn)榇嬖谡鎸?shí)的運(yùn)動(dòng)副而能夠自然實(shí)現(xiàn)運(yùn)動(dòng)的傳遞,而仿真環(huán)境中,虛擬模型之間并不存在真實(shí)的運(yùn)動(dòng)副,要實(shí)現(xiàn)運(yùn)動(dòng)的傳遞,改變模型的絕對(duì)位姿,達(dá)到仿真的效果,就必須對(duì)虛擬模型進(jìn)行運(yùn)動(dòng)關(guān)系建模。本研究引入聯(lián)動(dòng)帶描述虛擬模型之間的運(yùn)動(dòng)連帶關(guān)系,聯(lián)動(dòng)帶是指主動(dòng)模型與隨動(dòng)模型之間的運(yùn)動(dòng)連帶關(guān)系。根據(jù)主動(dòng)模型與隨動(dòng)模型之間的運(yùn)動(dòng)連帶類(lèi)型,可以將聯(lián)動(dòng)帶分為回轉(zhuǎn)聯(lián)動(dòng)帶、轉(zhuǎn)移聯(lián)動(dòng)帶和平移聯(lián)動(dòng)帶,如表1所示。
表1 聯(lián)動(dòng)帶分類(lèi)
通過(guò)對(duì)虛擬模型之間聯(lián)動(dòng)帶的分析,建立模型運(yùn)動(dòng)關(guān)系數(shù)據(jù)表。模型運(yùn)動(dòng)關(guān)系數(shù)據(jù)表主要用來(lái)存儲(chǔ)模型名稱(chēng)、關(guān)系代號(hào)、聯(lián)動(dòng)帶類(lèi)型、關(guān)聯(lián)零件、關(guān)聯(lián)零件參數(shù)代號(hào)和傳動(dòng)比。
根據(jù)數(shù)據(jù)庫(kù)中模型運(yùn)動(dòng)位姿表提供的模型名稱(chēng)和初始位姿讀入到模型節(jié)點(diǎn)鏈表,依次遍歷鏈表中的節(jié)點(diǎn)信息,利用樹(shù)形控件對(duì)模型進(jìn)行可視化、交互式的管理,實(shí)現(xiàn)模型節(jié)點(diǎn)的添加、修改和刪除,按場(chǎng)景組織原則建立運(yùn)動(dòng)場(chǎng)景,如圖2所示,整個(gè)運(yùn)動(dòng)場(chǎng)景建模流程如圖3所示。場(chǎng)景圖中的分隔符節(jié)點(diǎn)保證模型運(yùn)動(dòng)的相對(duì)獨(dú)立性,修改模型節(jié)點(diǎn)相應(yīng)的變換節(jié)點(diǎn)的矩陣域值,就能實(shí)現(xiàn)模型節(jié)點(diǎn)在運(yùn)動(dòng)場(chǎng)景中的重新定位,將場(chǎng)景圖導(dǎo)入Open Inventor的場(chǎng)景數(shù)據(jù)庫(kù)中[3-5],從而創(chuàng)建運(yùn)動(dòng)場(chǎng)景。
采用合理的任務(wù)劃分方法,可以提高執(zhí)行效率和運(yùn)動(dòng)精度,仿真任務(wù)根據(jù)粒度的不同,上層任務(wù)由粗粒度劃分組成,隨著任務(wù)層次的降低,逐漸細(xì)化為細(xì)的粒度。仿真任務(wù)按照由粗到細(xì)的粒度原則,將仿真任務(wù)劃分為4個(gè)層次,第1層為任務(wù)層,第2層為操作層,第3層為動(dòng)作層,第4層為動(dòng)素層[6]。
任務(wù)劃分過(guò)程:第1階段將任務(wù)單元?jiǎng)澐譃椴僮鲉卧?;?階段將操作單元?jiǎng)澐譃閯?dòng)作單元;第3階段將動(dòng)作單元?jiǎng)澐譃閯?dòng)素單元;第4階段將動(dòng)素單元轉(zhuǎn)化為動(dòng)素指令。
仿真任務(wù)規(guī)劃的核心是確定動(dòng)素指令,首先是對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)路徑規(guī)劃,確定路徑關(guān)鍵點(diǎn);然后是建立機(jī)械臂運(yùn)動(dòng)學(xué)模型,完成機(jī)械臂運(yùn)動(dòng)學(xué)的正解與反解[7-8];接著在三維軟件Pro/E中對(duì)機(jī)械臂進(jìn)行位姿定位,依次測(cè)量運(yùn)動(dòng)實(shí)體之間的相對(duì)變換矩陣,由機(jī)械臂運(yùn)動(dòng)學(xué)反解得出相應(yīng)旋轉(zhuǎn)角度,最后對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)軌跡規(guī)劃,確定動(dòng)素指令。
根據(jù)任務(wù)劃分的結(jié)果,建立模型運(yùn)動(dòng)規(guī)劃數(shù)據(jù)表。模型運(yùn)動(dòng)規(guī)劃數(shù)據(jù)表用來(lái)存儲(chǔ)執(zhí)行序列、任務(wù)名稱(chēng)、操作名稱(chēng)、動(dòng)作名稱(chēng)、動(dòng)素名稱(chēng)和指令編碼。
利用Visual C++6.0編程軟件建立了空間機(jī)械臂運(yùn)動(dòng)仿真平臺(tái),運(yùn)動(dòng)仿真交互操作界面如圖4所示。下面以七自由度步行機(jī)器人搬運(yùn)桁架任務(wù)為實(shí)例進(jìn)行實(shí)驗(yàn)驗(yàn)證。
圖4 運(yùn)動(dòng)仿真交互操作界面
通過(guò)運(yùn)動(dòng)幾何建模、運(yùn)動(dòng)場(chǎng)景建模,完成如圖5所示空間機(jī)械臂仿真環(huán)境的構(gòu)建。分析空間機(jī)械臂各連桿之間的運(yùn)動(dòng)連帶關(guān)系,前置連桿與后置連桿聯(lián)動(dòng)帶類(lèi)型為同軸聯(lián)動(dòng),完成模型運(yùn)動(dòng)關(guān)系的建模。分析空間機(jī)械臂搬運(yùn)桁架任務(wù)過(guò)程,任務(wù)在操作層次上分為進(jìn)入作業(yè)空間、執(zhí)行作業(yè)任務(wù)和離開(kāi)作業(yè)空間,任務(wù)在動(dòng)作層面上分為機(jī)械臂展開(kāi)、機(jī)械臂接近桁架和機(jī)械臂捕獲桁架,機(jī)械臂搬移桁架,任務(wù)在動(dòng)素層面上分為調(diào)整、定位、對(duì)接和移位,通過(guò)空間機(jī)械臂運(yùn)動(dòng)路徑規(guī)劃,完成動(dòng)素指令的確立,從而完成仿真任務(wù)的建模。
圖5 仿真環(huán)境
開(kāi)啟運(yùn)動(dòng)仿真過(guò)程,循環(huán)遍歷數(shù)據(jù)庫(kù)中的4張數(shù)據(jù)表信息,實(shí)時(shí)計(jì)算機(jī)器人各連桿及桁架模型的絕對(duì)位姿,實(shí)現(xiàn)七自由度步行機(jī)器人搬運(yùn)桁架任務(wù)的仿真,運(yùn)動(dòng)仿真過(guò)程如圖6所示。
圖6 七自由度步行機(jī)器人搬運(yùn)桁架任務(wù)仿真過(guò)程
基于Pro/E幾何建模技術(shù)、Open Inventor虛擬場(chǎng)景技術(shù)、數(shù)據(jù)庫(kù)信息管理技術(shù)及機(jī)器人運(yùn)動(dòng)學(xué)規(guī)劃技術(shù),利用Visual C++6.0編程軟件完成了空間機(jī)械臂運(yùn)動(dòng)仿真平臺(tái)的設(shè)計(jì),實(shí)現(xiàn)了空間機(jī)械臂搬運(yùn)桁架任務(wù)的仿真。實(shí)驗(yàn)結(jié)果表明,所提出的運(yùn)動(dòng)仿真方法是有效的、便捷的,它使得操作者可以動(dòng)態(tài)修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)表信息來(lái)適應(yīng)變化的場(chǎng)景和任務(wù),因而具有良好的實(shí)用性,較強(qiáng)的通用性,充分利用了計(jì)算機(jī)圖形學(xué)最新的研究成果,減少圖形設(shè)計(jì)開(kāi)發(fā)的工作量,可把精力更多用于機(jī)器人結(jié)構(gòu)設(shè)計(jì)、機(jī)器人控制算法、避障算法及路徑規(guī)劃算法的研究。
[1]熊有倫,丁 漢,劉 恩.機(jī)器人學(xué)[M].北京:機(jī)械工業(yè)出版社,1983.
[2]Jindong Tan,Ning Xi.Hybrid system design for singularityless task level robot controllers[C].Proceedings of the 2000IEEE International Conference on Robotics and Automation,2000.3007-3012
[3]侯國(guó)柱,湯學(xué)華.基于Open Inventor的機(jī)器人運(yùn)動(dòng)仿真技術(shù)研究[J].機(jī)械設(shè)計(jì)與制造,2010,(6):161-162.
[4]閻鋒欣,侯增選,等.Open Inventor程序設(shè)計(jì)從入門(mén)到精通[M].北京:清華大學(xué)出版社,2007.
[5]Huang Haiming,Liu Baowei,Liu Jingang.Building of virtual reality scene based on real scenery[J].Computer Engineering,2005,31(4):183-186.
[6]趙 迪,李世其,朱文革,等.基于任務(wù)級(jí)的空間遙操作研究[J].載人航天,2012,18(5):82-87.
[7]Manocha D,Canny J F.Efficient inverse kinematics for general 6Rmanipulators[J].IEEE Transactions on Robotics and Automation,1994,10(5):648-657.
[8]王雪松,許世范,郝繼飛.MOTOMAN機(jī)械手逆運(yùn)動(dòng)方程新的推導(dǎo)方法及求解[J].中國(guó)礦業(yè)大學(xué)學(xué)報(bào),2001,30(1):73-76.