鐘彩意,王 欣※,吳 迪,王殿龍
(1.大連理工大學(xué)機(jī)械工程學(xué)院,遼寧大連 116024;2.大連理工大學(xué)計(jì)算機(jī)學(xué)院,遼寧大連 116024)
根據(jù)聯(lián)合國(guó)發(fā)布的《世界人口展望:2019 年修訂版》的數(shù)據(jù),2019 年全球65 歲以上人口占比為9%,到2050 年這一占比將達(dá)到16%,人口老齡化問(wèn)題將日益加劇[1]。人口老齡化的加劇使得醫(yī)療護(hù)理的需求不斷增加,從而造成醫(yī)護(hù)人員的相對(duì)缺乏[2]。為此,能夠輔助醫(yī)護(hù)人員提供醫(yī)療服務(wù)的機(jī)器人具有極大的發(fā)展?jié)摿?,尤其是能夠轉(zhuǎn)運(yùn)行動(dòng)不便病人的機(jī)器人[3-4]。目前,美國(guó)、日本、英國(guó)等國(guó)都先后研制了用于轉(zhuǎn)運(yùn)病人的機(jī)器人,如日本的RIBA機(jī)器人[5-6]、美國(guó)的戰(zhàn)場(chǎng)救援機(jī)器人“Vecna Bear”[7]、韓國(guó)的PAM 移動(dòng)機(jī)器人[8]以及英國(guó)的RoNA 機(jī)器人[9]等,這些機(jī)器人都能夠?qū)崿F(xiàn)病人的轉(zhuǎn)運(yùn)。我國(guó)對(duì)醫(yī)療轉(zhuǎn)運(yùn)機(jī)器人也進(jìn)行了一定的研究,如南京理工大學(xué)的“MT-Bear”機(jī)器人[10]和北京建筑大學(xué)的轉(zhuǎn)運(yùn)護(hù)理機(jī)器人[11]。
在機(jī)器人的設(shè)計(jì)與研究過(guò)程中,仿真是不可或缺的。通過(guò)仿真,一方面可以提前發(fā)現(xiàn)機(jī)器人設(shè)計(jì)上的問(wèn)題,如結(jié)構(gòu)是否合理、工作空間是否滿足要求;另一方面可以對(duì)控制算法進(jìn)行驗(yàn)證,避免因控制算法問(wèn)題對(duì)機(jī)器人造成損壞[12-15]。機(jī)器人仿真技術(shù)的應(yīng)用可以極大地縮短機(jī)器人開(kāi)發(fā)周期、降低開(kāi)發(fā)成本。Webots 軟件是一款集建模、編程、仿真、程序移植為一體的專業(yè)機(jī)器人仿真軟件[16],應(yīng)用廣泛。山東大學(xué)的王銘昌[17]利用Webots 軟件搭建了服務(wù)機(jī)器人的故障仿真平臺(tái);劉俊飛[10]利用Webots 軟件對(duì)MT-Bear 護(hù)理機(jī)器人的路徑規(guī)劃和目標(biāo)抱取進(jìn)行仿真;李柳群[18]利用Webots 軟件對(duì)汽車(chē)起重機(jī)的路徑規(guī)劃進(jìn)行研究。
現(xiàn)有轉(zhuǎn)運(yùn)機(jī)器人多為雙臂形式,搬運(yùn)病人時(shí)僅對(duì)背部和大腿有支撐,對(duì)病人頭部和小腿無(wú)支撐。為此,本文提出一種新型醫(yī)療轉(zhuǎn)運(yùn)機(jī)器人,具有4條機(jī)械臂,可分別為病人的頭部、背部、大腿及小腿提供支撐,且可實(shí)現(xiàn)轉(zhuǎn)運(yùn)過(guò)程中病人姿態(tài)的調(diào)整。本文首先設(shè)計(jì)機(jī)器人結(jié)構(gòu),分析機(jī)械臂正逆運(yùn)動(dòng)學(xué),其次在Webots軟件中建立機(jī)器人工作環(huán)境、機(jī)器人以及病人模型,接著編寫(xiě)控制程序,設(shè)計(jì)機(jī)器人控制器軟件,最后通過(guò)仿真實(shí)驗(yàn)驗(yàn)證仿真平臺(tái)的可行性及機(jī)器人結(jié)構(gòu)的可行性。
要進(jìn)行機(jī)器人的結(jié)構(gòu)設(shè)計(jì),首先要確定機(jī)器人托臂的尺寸要求。根據(jù)《YY 0003-90——病床》《GB/T 12996-2012 電動(dòng)輪椅車(chē)》《GB 10000-88 中國(guó)成年人人體尺寸》等資料確定機(jī)器人托臂距地高度范圍為400~900 mm,長(zhǎng)度為600 mm,外側(cè)兩臂間距范圍為1 600~2 000 mm。除此以外,還需進(jìn)行機(jī)構(gòu)選型與設(shè)計(jì),初步設(shè)定機(jī)器人所能搬運(yùn)病人的最大體重為150 kg,單機(jī)械臂最大負(fù)載為50 kg,據(jù)此計(jì)算出機(jī)器人各關(guān)節(jié)所需的驅(qū)動(dòng)力,并進(jìn)行選型,最終所設(shè)計(jì)的機(jī)器人如圖1所示。
圖1 機(jī)器人結(jié)構(gòu)三維模型
機(jī)器人由3 個(gè)部分組成,分別是底盤(pán)行走部分、軀干部分以及機(jī)械臂部分。底盤(pán)行走部分為四輪形式,其中2個(gè)輪為舵輪,對(duì)角分布,為驅(qū)動(dòng)輪,另2個(gè)輪為萬(wàn)向輪,為從動(dòng)輪,此形式可實(shí)現(xiàn)機(jī)器人任意方向的運(yùn)動(dòng)及原地旋轉(zhuǎn),以適應(yīng)室內(nèi)狹小的工作環(huán)境。軀干部分由軀干主體和外罩組成,用于連接底盤(pán)和機(jī)械臂。機(jī)器人共有4條機(jī)械臂,每條機(jī)械臂均由4 個(gè)關(guān)節(jié)組成(即4 自由度),分別為起升關(guān)節(jié)、肩關(guān)節(jié)、肘關(guān)節(jié)和腕關(guān)節(jié),如圖1所示。機(jī)械臂的末端托臂呈扁平狀,可楔入病人與病床之間的縫隙,實(shí)現(xiàn)病人與病床的分離。4條機(jī)械臂運(yùn)動(dòng)的相互配合可改變病人的姿態(tài),例如由平躺姿態(tài)變?yōu)樽鹱藨B(tài),從而實(shí)現(xiàn)病人從病床到輪椅的轉(zhuǎn)運(yùn)。
由于機(jī)器人的4 條機(jī)械臂構(gòu)型類似,故以左側(cè)臂為例進(jìn)行運(yùn)動(dòng)學(xué)分析。以機(jī)器人底盤(pán)在地面投影的中心為原點(diǎn),以豎直向上為Z軸正方向,以前進(jìn)方向?yàn)閄軸正方向,建立機(jī)器人基坐標(biāo)系,再根據(jù)D-H法依次建立左側(cè)臂其余連桿的坐標(biāo)系,如圖2所示。
圖2 機(jī)器人左側(cè)臂連桿坐標(biāo)系
機(jī)器人D-H 法通過(guò)4 個(gè)參數(shù)來(lái)確定相鄰兩坐標(biāo)系間的齊次變換矩陣,分別為關(guān)節(jié)角(θ)、連桿偏距(d)、連桿長(zhǎng)度(a)和連桿轉(zhuǎn)角(α)[19]。根據(jù)機(jī)器人的實(shí)際結(jié)構(gòu)尺寸,得出左側(cè)臂的D-H參數(shù),如表1所示。
表1 機(jī)器人左側(cè)臂D-H參數(shù)
機(jī)器人的正運(yùn)動(dòng)學(xué)問(wèn)題是根據(jù)機(jī)械臂的關(guān)節(jié)位置求解機(jī)械臂末端相對(duì)于基坐標(biāo)系的位姿[19]。根據(jù)D-H 法可得兩相鄰連桿間的齊次變換矩陣為:
為簡(jiǎn)化表示,將sin記為s,cos記為c(以下同),根據(jù)表1 數(shù)據(jù)得出左側(cè)臂各連桿坐標(biāo)系間的變換矩陣,并依次相乘,得出左側(cè)臂手掌坐標(biāo)系與基坐標(biāo)系間的變換矩陣,如下所示:
其中
機(jī)器人逆運(yùn)動(dòng)學(xué)問(wèn)題是根據(jù)機(jī)械臂末端位姿求解機(jī)械臂各關(guān)節(jié)位置參數(shù),常用解法有數(shù)值解法和幾何解法[19],本文采用數(shù)值解法。首先引入6個(gè)參數(shù)來(lái)表示機(jī)械臂末端的位置和姿態(tài):x、y、z、θr、θp和θy,其中x、y、z為機(jī)械臂末端坐標(biāo),即機(jī)械臂末端位置向量為
θr、θp、θy為歐拉角,θr為繞X軸的旋轉(zhuǎn)角(roll角度),θp為繞Y軸的旋轉(zhuǎn)角(pitch角度),θy為繞Z軸的旋轉(zhuǎn)角(yaw角度),歐拉角的順序?yàn)閄→Y→Z,可得末端坐標(biāo)系相對(duì)于基坐標(biāo)系的旋轉(zhuǎn)矩陣為:
則左側(cè)臂末端坐標(biāo)系與基坐標(biāo)系間的齊次變換矩陣為:
由機(jī)械臂末端正運(yùn)動(dòng)學(xué)所得齊次變換矩陣與期望的齊次變換矩陣相等,即,解得:
本文利用Webots 軟件建立仿真平臺(tái)模型,該軟件是一款多平臺(tái)的開(kāi)源機(jī)器人仿真軟件,集建模、編程、仿真和程序移植于一體。軟件使用VRML 語(yǔ)言進(jìn)行建模,使用ODE 作為物理引擎。軟件內(nèi)置有豐富的傳感器和執(zhí)行器,可以滿足絕大多數(shù)機(jī)器人的需求。Webots 軟件可使用內(nèi)置的IDE 或第三方開(kāi)發(fā)環(huán)境進(jìn)行編程,支持C/C++、Java、Python、MATLAB等多種編程語(yǔ)言,支持TCP/IP 協(xié)議,可以通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)仿真環(huán)境中機(jī)器人的遠(yuǎn)程控制。
該機(jī)器人主要工作在醫(yī)院、養(yǎng)老院等有大量病人搬運(yùn)工作的場(chǎng)所,為此,本文設(shè)定機(jī)器人的工作環(huán)境為醫(yī)院病房,其地面平整,四周為墻壁,包含有病床、椅子、柜子等物品。
首先創(chuàng)建基本環(huán)境,包括背景、光源及仿真參數(shù)等,其中背景通過(guò)Background 節(jié)點(diǎn)設(shè)置;環(huán)境光源通過(guò)Direction?alLight節(jié)點(diǎn)設(shè)置;仿真參數(shù)可通過(guò)WorldInfo節(jié)點(diǎn)設(shè)置。
其次在環(huán)境中添加地面、墻壁、病床、椅子等,Webots中的實(shí)體模型可在軟件內(nèi)部建立也可通過(guò)其他三維軟件建立后轉(zhuǎn)為VRML 格式再導(dǎo)入,本文針對(duì)不同的物品采用不同的建模方式,其中結(jié)構(gòu)簡(jiǎn)單的地面和墻壁直接通過(guò)內(nèi)置的Rect?angleArena 和Wall 節(jié)點(diǎn)創(chuàng)建;對(duì)于病床、椅子等,在Solid?works軟件中建模后,導(dǎo)出VRML格式文件,再導(dǎo)入Webots軟件中,并轉(zhuǎn)成PROTO文件,就能以節(jié)點(diǎn)的方式添加到仿真環(huán)境中。最終完成的機(jī)器人仿真工作環(huán)境效果圖如圖3所示。
圖3 機(jī)器人工作環(huán)境模型
機(jī)器人和人體模型除了需要實(shí)體,還需要運(yùn)動(dòng)關(guān)節(jié),We?bots軟件使用HingeJoint和SliderJoint節(jié)點(diǎn)模擬轉(zhuǎn)動(dòng)關(guān)節(jié)和移動(dòng)關(guān)節(jié),關(guān)節(jié)節(jié)點(diǎn)下的jointParameters 用于設(shè)置關(guān)節(jié)參數(shù),de?vice用于添加驅(qū)動(dòng)電機(jī)和傳感器。
由于機(jī)器人結(jié)構(gòu)復(fù)雜,不利于仿真,需進(jìn)行簡(jiǎn)化,簡(jiǎn)化后的機(jī)器人仿真模型如圖4所示。Webots軟件機(jī)器人通過(guò)Ro?bot 節(jié)點(diǎn)創(chuàng)建,機(jī)器人的機(jī)械結(jié)構(gòu)、關(guān)節(jié)、傳感器等均作為Robot節(jié)點(diǎn)的子節(jié)點(diǎn),機(jī)器人的控制器也通過(guò)該節(jié)點(diǎn)下的con?troller 添加。創(chuàng)建好的機(jī)器人模型也可轉(zhuǎn)成PROTO 節(jié)點(diǎn),這樣就可以將機(jī)器人以節(jié)點(diǎn)的形式添加到任意環(huán)境中。
圖4 機(jī)器人仿真模型
對(duì)于病人模型,除了結(jié)構(gòu)需要簡(jiǎn)化,關(guān)節(jié)數(shù)也要減少,由于只考慮病人整體姿態(tài)的變化,因此病人模型可簡(jiǎn)化為3部分,即上半身、大腿和小腿,僅保留腰部關(guān)節(jié)和膝關(guān)節(jié),忽略其他關(guān)節(jié)。腰部關(guān)節(jié)和膝關(guān)節(jié)均為轉(zhuǎn)動(dòng)關(guān)節(jié),與機(jī)器人關(guān)節(jié)不同,病人關(guān)節(jié)不需要添加驅(qū)動(dòng)電機(jī)。最終完成的病人模型如圖5所示。與機(jī)器人類似,人體模型也轉(zhuǎn)成PROTO節(jié)點(diǎn)。
圖5 人體模型
機(jī)器人采用分層控制方式,分為上層控制器和底層控制器。上層控制器負(fù)責(zé)機(jī)器人的控制算法和人機(jī)交互,底層控制器負(fù)責(zé)運(yùn)動(dòng)控制和狀態(tài)的采集,兩控制器間通過(guò)TCP/IP 協(xié)議進(jìn)行通信??刂破鹘M成框圖如圖6所示。
圖6 仿真平臺(tái)控制器總體框圖
底層控制器包括機(jī)械臂關(guān)節(jié)電機(jī)控制模塊、行走電機(jī)控制模塊、傳感器模塊和通信模塊。電機(jī)控制模塊用于機(jī)器人電機(jī)的控制;傳感器模塊用于采集電機(jī)位置和力/力矩等信息;通信模塊用于與上層控制器進(jìn)行信息交互。底層控制器流程如圖7所示。底層控制器使用Webots自帶的IDE 開(kāi)發(fā),編程語(yǔ)言為C 語(yǔ)言,通過(guò)調(diào)用API 函數(shù)設(shè)置電機(jī)參數(shù)以及獲取傳感器參數(shù),利用套接字(socket)進(jìn)行通信模塊的編程。Webots 軟件使用PID 控制電機(jī)位置,PID 參數(shù)可通過(guò)函數(shù)設(shè)置也可在電機(jī)節(jié)點(diǎn)下設(shè)置。
圖7 底層控制器流程
上層控制器包括人機(jī)交互界面、控制算法模塊、數(shù)據(jù)處理模塊和通信模塊,人機(jī)交互界面負(fù)責(zé)參數(shù)的輸入和信息顯示,控制算法模塊包括正逆運(yùn)動(dòng)學(xué)、軌跡規(guī)劃等算法,數(shù)據(jù)處理模塊負(fù)責(zé)傳感器數(shù)據(jù)的處理,通信模塊負(fù)責(zé)與底層控制器建立連接,實(shí)現(xiàn)信息交互。
上層控制器使用Qt開(kāi)發(fā),Qt是一種跨平臺(tái)的圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架,具有豐富的圖形界面庫(kù),使用簡(jiǎn)便。上層控制器有3種模式,分別為電機(jī)控制模式、手動(dòng)控制模式和軌跡規(guī)劃模式,模式的切換通過(guò)選項(xiàng)卡的方式實(shí)現(xiàn)。電機(jī)控制模式可直接設(shè)置電機(jī)轉(zhuǎn)角(位移)控制機(jī)器人的運(yùn)動(dòng);手動(dòng)控制模式是通過(guò)按鈕來(lái)控制機(jī)械臂末端的運(yùn)動(dòng),包括上下左右的4個(gè)方向的運(yùn)動(dòng)及轉(zhuǎn)動(dòng);軌跡規(guī)劃模式用于機(jī)械臂的軌跡規(guī)劃,以驗(yàn)證不同的規(guī)劃方法。受篇幅限制,本文以軌跡規(guī)劃模式為例進(jìn)一步說(shuō)明,軌跡規(guī)劃模式界面如圖8所示,其流程圖如圖9所示。
圖8 上層控制器軌跡規(guī)劃模式界面
圖9 軌跡規(guī)劃模式流程
軌跡規(guī)劃模式界面包括機(jī)械臂末端路徑預(yù)覽區(qū)、軌跡規(guī)劃設(shè)置區(qū)、機(jī)器人控制區(qū)等,其中機(jī)械臂末端軌跡預(yù)覽區(qū)用于顯示機(jī)器人末端的軌跡,軌跡規(guī)劃設(shè)置區(qū)用于設(shè)置軌跡相關(guān)參數(shù),機(jī)器人控制器用于控制機(jī)器人的啟動(dòng)、停止和復(fù)位。
由于該機(jī)器人的主要任務(wù)是轉(zhuǎn)運(yùn)病人,因此仿真平臺(tái)能否模擬機(jī)器人與病人間的相互作用是該仿真平臺(tái)的基本要求,為此,設(shè)計(jì)機(jī)器人將病人由平躺姿態(tài)轉(zhuǎn)變?yōu)榘胱鹱藨B(tài)的仿真實(shí)驗(yàn)。假設(shè)該過(guò)程中病人腰部保持不動(dòng),僅改變上半身姿態(tài),可知機(jī)械臂末端的軌跡為圓弧,且所在平面平行于機(jī)器人基坐標(biāo)系的Y-Z 平面,故進(jìn)行笛卡爾空間的圓弧軌跡規(guī)劃,采用插補(bǔ)的方式來(lái)逼近目標(biāo)軌跡。本文采用定時(shí)插補(bǔ)方式,速度曲線為梯形曲線。設(shè)軌跡圓心為O1(y0,z0),起點(diǎn)為P1(y1,z1),終點(diǎn)為P2(y2,z2),軌跡轉(zhuǎn)角位移為θ(逆時(shí)針旋轉(zhuǎn)為正),如圖10所示。
圖10 機(jī)械臂圓弧軌跡規(guī)劃
設(shè)勻速時(shí)角速度為ω,加減速過(guò)程的加速度均為α。則總插補(bǔ)點(diǎn)數(shù):
式中:Pn為插值參數(shù),與系統(tǒng)控制周期有關(guān)。
則任意插補(bǔ)點(diǎn)角位移為:
根據(jù)幾何關(guān)系,可得任意插補(bǔ)點(diǎn)的位置坐標(biāo):
為進(jìn)行機(jī)械臂逆解計(jì)算,還需進(jìn)行機(jī)械臂末端姿態(tài)的規(guī)劃。根據(jù)幾何關(guān)系,為使托臂始終貼合人體,機(jī)械臂末端橫滾角(roll)需變化,且橫滾角始終等于圓弧軌跡轉(zhuǎn)角,故可直接代入計(jì)算。
根據(jù)人體尺寸確定左前臂和左側(cè)臂圓弧軌跡的起點(diǎn)和圓心坐標(biāo)以及角位移,并在相應(yīng)的輸入框中輸入,如圖11 所示。圖中,X、Y、Z 為相應(yīng)的坐標(biāo)輸入,r、p、y 為橫滾角(roll)、俯仰角(pitch)和偏航角(yaw)的輸入。在設(shè)置好角速度、角加速度參數(shù)后點(diǎn)擊顯示軌跡按鈕,預(yù)覽軌跡,確認(rèn)無(wú)誤后保存軌跡,并開(kāi)始進(jìn)行仿真,觀察機(jī)械臂的運(yùn)動(dòng)。仿真時(shí)的機(jī)器人運(yùn)動(dòng)過(guò)程如圖12所示,機(jī)器人左側(cè)臂的關(guān)節(jié)轉(zhuǎn)角(位移)、角速度(速度)、角加速度(加速度)以及力矩(力)曲線如圖13所示。
圖11 軌跡規(guī)劃參數(shù)設(shè)置
圖12 機(jī)械臂運(yùn)動(dòng)仿真過(guò)程
圖13 仿真過(guò)程左側(cè)臂關(guān)節(jié)參數(shù)
從圖12中可以看出,機(jī)械臂末端能夠沿著預(yù)設(shè)的軌跡運(yùn)動(dòng),病人的姿態(tài)也能隨著機(jī)械臂的運(yùn)動(dòng)由平躺姿態(tài)變?yōu)樽鹱藨B(tài),說(shuō)明該仿真平臺(tái)能在一定程度上模擬機(jī)器人與病人間的相互作用,且能輸出機(jī)器人運(yùn)動(dòng)過(guò)程中關(guān)節(jié)的轉(zhuǎn)角(位移)、角速度(速度)、角加速度(加速度)和力矩(力)曲線,也在一定程度上說(shuō)明了機(jī)器人能夠改變病人的姿態(tài),驗(yàn)證了機(jī)器人結(jié)構(gòu)的可行性。
本文提出了一種四臂醫(yī)療轉(zhuǎn)運(yùn)機(jī)器人,對(duì)機(jī)器人的結(jié)構(gòu)進(jìn)行設(shè)計(jì),并對(duì)機(jī)器人機(jī)械臂進(jìn)行了正逆運(yùn)動(dòng)學(xué)分析。為研究機(jī)器人控制算法,本文搭建了基于Webots軟件的機(jī)器人仿真平臺(tái),首先在Webots軟件中建立機(jī)器人工作環(huán)境模型、機(jī)器人模型以及病人模型,然后編寫(xiě)控制程序,設(shè)計(jì)機(jī)器人控制器,最后通過(guò)病人由平躺狀態(tài)變?yōu)樽馉顟B(tài)的仿真實(shí)驗(yàn)驗(yàn)證了仿真平臺(tái)的可行性以及機(jī)器人結(jié)構(gòu)的可行性,為該機(jī)器人的后續(xù)研究奠定了基礎(chǔ),也為其他機(jī)器人的仿真平臺(tái)的搭建提供一定的參考。