劉世平,胡 竹,程 力,付 艷
(華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院,湖北 武漢 430074)
隨著微軟Kinect體感設(shè)備的推出,國內(nèi)外研究機(jī)構(gòu)和科研人紛紛以此作為平臺(tái)進(jìn)行研究和開發(fā),現(xiàn)已經(jīng)將其應(yīng)用于機(jī)器人[1-3]、醫(yī)療[4-5]、教育[6-7]、動(dòng)畫[8-9]、電子商務(wù)[10]和計(jì)算機(jī)[11]等領(lǐng)域。在研究人類智能的平臺(tái)中,仿人機(jī)器人有著獨(dú)特的地位,是一個(gè)多學(xué)科融合的復(fù)雜智能系統(tǒng)。經(jīng)過半個(gè)世紀(jì)的發(fā)展,仿人機(jī)器人技術(shù)在機(jī)器人領(lǐng)域占有越來越重要的地位[12]。
隨著Kinect技術(shù)的進(jìn)一步成熟和充分挖掘,Kinect與仿人機(jī)器人結(jié)合開發(fā)的潛力受到越來越多的研究者關(guān)注,同時(shí)為人機(jī)交互帶來了質(zhì)的突破[13]。作為機(jī)器人學(xué)最重要的研究方向之一,人機(jī)交互最直觀的實(shí)現(xiàn)方式就是模仿。機(jī)器人動(dòng)作模仿系統(tǒng)的研究已取得了一定進(jìn)展,華南理工大學(xué)的陳家順利用動(dòng)作交互技術(shù)實(shí)現(xiàn)了Nao機(jī)器人的動(dòng)作模仿,但由于人體關(guān)節(jié)結(jié)構(gòu)與Nao機(jī)器人關(guān)節(jié)結(jié)構(gòu)存在差異性,通過動(dòng)作交互的方式實(shí)現(xiàn)機(jī)器人動(dòng)作模仿并不能達(dá)到示范者期望姿態(tài)[14]。重慶郵電大學(xué)的林海波教授等人利用Kinect的骨骼追蹤技術(shù)計(jì)算了人體腰、肩、肘和腕四個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)角度,將這四個(gè)角度與四自由度機(jī)械臂的四個(gè)關(guān)節(jié)一一對(duì)應(yīng),實(shí)現(xiàn)體感交互[15],但其實(shí)現(xiàn)的是動(dòng)作匹配而不是動(dòng)作模仿。
這里首先建立起機(jī)器人系統(tǒng),將系統(tǒng)各部分功能與設(shè)備進(jìn)行介紹。不同于其他研究者使用產(chǎn)品化的仿人機(jī)器人,這里所做研究基于一款完全自主制造的仿人機(jī)器人。利用Kinect體感攝像機(jī)獲取人體骨骼數(shù)據(jù),并將其進(jìn)行霍爾特指數(shù)平滑濾波處理后用于坐標(biāo)轉(zhuǎn)換。通過對(duì)機(jī)器人手臂重要關(guān)節(jié)的建模,實(shí)現(xiàn)將人體骨骼數(shù)據(jù)轉(zhuǎn)換為機(jī)器人手臂相應(yīng)伺服電機(jī)的轉(zhuǎn)動(dòng)角度。成功實(shí)現(xiàn)仿人機(jī)器人手臂動(dòng)作模仿。這里所述建模方法,只需利用人體三個(gè)關(guān)節(jié)的三維坐標(biāo)便可控制四個(gè)伺服電機(jī)的轉(zhuǎn)動(dòng),數(shù)據(jù)處理的工作量小。實(shí)驗(yàn)結(jié)果表明,利用這里提出的建模方法進(jìn)行坐標(biāo)變換能夠?qū)崿F(xiàn)仿人機(jī)器人的動(dòng)作模仿,并且效果良好,實(shí)時(shí)性較強(qiáng)。
這里研究以四自由度仿人雙臂機(jī)器人為對(duì)象,機(jī)器人系統(tǒng)包括信號(hào)采集系統(tǒng)、上位機(jī)、下位機(jī)、機(jī)械運(yùn)動(dòng)系統(tǒng)四個(gè)部分,如圖1所示。
圖1 機(jī)器人系統(tǒng)框圖Fig.1 Robot System Block Diagram
信號(hào)采集系統(tǒng)使用Kinect體感攝像頭[16]。使用時(shí),Kinect將安置在人的前方,采集人體骨骼節(jié)點(diǎn)信號(hào),用于后續(xù)的數(shù)學(xué)建模中。Kinect安置高度沒有固定標(biāo)準(zhǔn),根據(jù)使用經(jīng)驗(yàn),使其略帶俯視人體的初始高度與角度效果較好,這樣的高度可以使獲得的骨骼節(jié)點(diǎn)信號(hào)更加穩(wěn)定。信號(hào)采集系統(tǒng)通過USB與上位機(jī)控制系統(tǒng)相連接,將采集到的人體骨骼節(jié)點(diǎn)信號(hào)傳輸?shù)缴衔粰C(jī)控制系統(tǒng)。
上位機(jī)是一臺(tái)普通PC,它將接收到的人體骨骼節(jié)點(diǎn)信號(hào)進(jìn)行濾波處理,同時(shí)利用骨骼節(jié)點(diǎn)信號(hào)建立相應(yīng)的數(shù)學(xué)模型,根據(jù)所建立的數(shù)學(xué)模型計(jì)算得出機(jī)器人手臂各關(guān)節(jié)的控制信息。上位機(jī)控制系統(tǒng)通過Bluetooth與下位機(jī)控制系統(tǒng)進(jìn)行無線通信,將控制信息發(fā)送給下位機(jī)控制系統(tǒng)。
下位機(jī)使用的是STM32主控板。下位機(jī)控制系統(tǒng)接收到上位機(jī)控制系統(tǒng)發(fā)送過來的控制信息后,利用貝塞爾曲線對(duì)控制信息進(jìn)行平滑處理。將平滑處理后的控制信息通過CAN總線發(fā)送到機(jī)械運(yùn)動(dòng)系統(tǒng)[17-18],驅(qū)動(dòng)機(jī)器人手臂各關(guān)節(jié)的電機(jī)運(yùn)動(dòng)。
機(jī)械運(yùn)動(dòng)系統(tǒng)包含機(jī)械雙臂與伺服電機(jī)及其控制器。這里所使用機(jī)械臂是一款完全自主設(shè)計(jì)的四自由度機(jī)械雙臂,每個(gè)機(jī)械臂擁有四個(gè)自由度,包含兩個(gè)在肩部的自由度,兩個(gè)在肘部的自由度。機(jī)械臂正視圖與自由度分布簡圖,如圖2所示。手臂使用的電機(jī)為瑞士MAXON的RE系列伺服電機(jī),控制器為MLDS3065C。
圖2 機(jī)械臂正視圖與自由度分布圖Fig.2 Front View of Robotic Arm and Degree of Freedom Distribution Diagram
在仿人機(jī)器人手臂動(dòng)作模仿模型中,主要考慮肩部與肘部關(guān)節(jié)的運(yùn)動(dòng)。下面以左臂為例分別介紹機(jī)器人肩部與肘部的建模方法與思想。
為便于電機(jī)的控制,這里采用發(fā)送角度數(shù)據(jù)的方式來控制仿人機(jī)器人手臂的運(yùn)動(dòng)。本模型重點(diǎn)在于將人手臂運(yùn)動(dòng)時(shí)肩部關(guān)節(jié)的一個(gè)角度,分解為仿人機(jī)器人肩關(guān)節(jié)的兩個(gè)伺服電機(jī)所需要的旋轉(zhuǎn)角度,并得到相應(yīng)的數(shù)學(xué)關(guān)系。
這里在Kinect上建立了絕對(duì)坐標(biāo)系,在操作者的肩部建立了相對(duì)坐標(biāo)系。絕對(duì)坐標(biāo)是指:人手臂骨骼點(diǎn)在Kinect CameraSpacePoint坐標(biāo)系(以深度攝像頭為原點(diǎn))中的坐標(biāo),如圖3所示。
圖3 Kinect絕對(duì)坐標(biāo)系Fig.3 The Absolute Coordinate System of Kinect
相對(duì)坐標(biāo)是指坐標(biāo)系原點(diǎn)建立在操作者肩部的坐標(biāo)系,如圖4所示。圖中:O點(diǎn)—左肩關(guān)節(jié)(SHOULDER_LEFT);P點(diǎn)—左臂肘部關(guān)節(jié)(ELBOW_LEFT);Q點(diǎn)—沿Y軸負(fù)方向,與O點(diǎn)距離為k的確定點(diǎn)(實(shí)際上最終結(jié)果與k毫無關(guān)系,這里只是為了便于表述)。建立相對(duì)坐標(biāo)系是為了便于將操作者手臂的動(dòng)作分解為適合機(jī)器人手臂各關(guān)節(jié)的運(yùn)動(dòng)量。
圖4 相對(duì)坐標(biāo)系Fig.4 The Relative Coordinate System
已知:OQ=k,通過Kinect可獲得在絕對(duì)坐標(biāo)系中各點(diǎn)的坐標(biāo)分別為:O(x0,y0,z0),P(x1,y1,z1),Q(x0,y0-k,z0),則在相對(duì)坐標(biāo)系中各點(diǎn)的坐標(biāo)分別為O(0,0,0),P(x1-x0,y1-y0,z1-z0),Q(0,-k,0),令∠POQ=θ,∠AOQ=θ1,∠AOP=θ2;相對(duì)坐標(biāo)系中取A(0,y1-y0,z1-z0),C(x1-x0,y1-y0,0);
在△POQ中,
在△AOQ中,
在△AOP中,
則:
式中:θ—人手臂運(yùn)動(dòng)時(shí)的角度;
θ1、θ2—電機(jī)所需的控制角度。
因此可以根據(jù)Kinect獲取的絕對(duì)坐標(biāo)來計(jì)算出相應(yīng)的角度。分別控制肩部兩個(gè)電機(jī)轉(zhuǎn)動(dòng)θ1、θ2來實(shí)現(xiàn)機(jī)械臂的運(yùn)動(dòng),達(dá)到模仿人手臂動(dòng)作的目的。
肘部關(guān)節(jié)同樣有兩個(gè)自由度,假定θ1、θ2、θ3、θ4均不為0(θ1、θ2、θ3、θ4分別對(duì)應(yīng)機(jī)械臂上的四個(gè)電機(jī)轉(zhuǎn)動(dòng)角度,從上到下依次編號(hào))。
在肩部關(guān)節(jié)建立坐標(biāo)系,如圖5所示。圖中:O′、P、M—人的左肩、肘部、手腕三個(gè)骨骼點(diǎn),則:O′P與Y′軸負(fù)方向夾角為θ;O′P在Y′O′Z′面上投影與Y′軸負(fù)方向夾角為θ1;O′P與其在Y′O′Z′面的投影間的夾角為θ2。
圖5 肩部關(guān)節(jié)角度變換Fig.5 The Shoulder Joint Angle Change
按圖5箭頭所示方向從左向右看,可得肘部關(guān)節(jié)坐標(biāo)系,如圖6所示。
圖6 手臂運(yùn)動(dòng)時(shí)肘部關(guān)節(jié)坐標(biāo)系Fig.6 The Elbow Joint Coordinate System when the Arm Movement
圖中:M′—手腕實(shí)際位置(此時(shí)θ3≠0);M″—人為假設(shè)的手腕位置(此時(shí)θ3=0);當(dāng)手腕在M′′位置時(shí),肘部關(guān)節(jié)點(diǎn)的坐標(biāo)系為PX1Y1Z1。設(shè)初始狀態(tài)時(shí)(即θ1、θ2、θ3、θ4均為0),肘部關(guān)節(jié)點(diǎn)的坐標(biāo)系為P′X1′Y1′Z1′,如圖7所示。
圖7 手臂自然放下時(shí)肘部坐標(biāo)系Fig.7 The Elbow Coordinate System when the Arm Natural Decline
對(duì)于圖6,通過Kinect可得到O′、P、M′三點(diǎn)的絕對(duì)坐標(biāo),進(jìn)而得到這三點(diǎn)在坐標(biāo)系O′X′Y′Z′中的相對(duì)坐標(biāo),如下所示:
通過O′、P、M′三點(diǎn)坐標(biāo)構(gòu)造向量,由這兩向量可以計(jì)算出θ4角度。
根據(jù)Kinect關(guān)節(jié)點(diǎn)坐標(biāo)系的定義,Y1軸始終由父節(jié)點(diǎn)指向子節(jié)點(diǎn)(即由肩部關(guān)節(jié)點(diǎn)指向肘部關(guān)節(jié)點(diǎn)),所以Y1軸沿O′P;由于θ4θ4確定,故無論θ3為多少,PM′、PM′′與O′P延長線夾角都不改變,均為θ4,即肘部與手腕所在直線以Y1軸為旋轉(zhuǎn)中心旋轉(zhuǎn),則,由O′P可得Y1軸的單位向量,故=(PM′*由此推得S點(diǎn)坐標(biāo),進(jìn)而得到,若設(shè)面Ω垂直于直線O′P且經(jīng)過P點(diǎn),顯然平行于面Ω。
需要注意的是,當(dāng)手臂運(yùn)動(dòng)時(shí),肩部坐標(biāo)系是固定不變的,而肘部坐標(biāo)系將隨著手臂的運(yùn)動(dòng)而改變坐標(biāo)系自身的狀態(tài)。人手大臂(OP)運(yùn)動(dòng)時(shí),肘部坐標(biāo)系(PX1Y1Z1)發(fā)生旋轉(zhuǎn)后的狀態(tài),如圖8 所示。圖中:Z1′′軸—Z1軸從肘部關(guān)節(jié)點(diǎn)平移到肩部關(guān)節(jié)點(diǎn)的表示。
圖8 手臂運(yùn)動(dòng)時(shí)肩部坐標(biāo)系旋轉(zhuǎn)示意圖Fig.8 The Shoulder Coordinate Rotation Schematic Diagram when the Arm Movement
在圖8中,肩部關(guān)節(jié)的角度θ1會(huì)影響到Z1軸的方向,沿Z1′′軸方向向量由圖8知的方向即為當(dāng)手腕到達(dá)M′′位置時(shí)肘部關(guān)節(jié)點(diǎn)的Z1軸方向。
當(dāng)θ3=0時(shí),手腕在面Ω的投影在Z1軸上,為,可以用替代。由于第三個(gè)電機(jī)的軸在O′P上,所以θ3可在面Ω上進(jìn)行計(jì)算得到:
為了驗(yàn)證上文建立的機(jī)器人手臂運(yùn)動(dòng)模型,直接采用人機(jī)交互的方式進(jìn)行實(shí)驗(yàn)。示教者站在原地連續(xù)揮動(dòng)自己的手臂,Kinect實(shí)時(shí)采集所需關(guān)節(jié)(肩部、肘部、腕部)的數(shù)據(jù)。按照上述建模方法進(jìn)行運(yùn)算,得到電機(jī)轉(zhuǎn)動(dòng)的角度。通過上位機(jī)控制系統(tǒng)將角度信息發(fā)送至下位機(jī)控制系統(tǒng),從而驅(qū)動(dòng)伺服電機(jī)實(shí)現(xiàn)手臂動(dòng)作模仿。
實(shí)驗(yàn)過程中,出現(xiàn)了機(jī)器人手臂動(dòng)作會(huì)有抖動(dòng)的現(xiàn)象。這是因?yàn)槿酥w形狀復(fù)雜以及外界環(huán)境干擾導(dǎo)致Kinect直接采集的人體骨骼節(jié)點(diǎn)信號(hào)干擾多,數(shù)據(jù)處理復(fù)雜導(dǎo)致的。以肘部數(shù)據(jù)為例進(jìn)行分析(肩部和腕部方法相同)。取肘部的3組原始數(shù)據(jù),每組包含100個(gè)數(shù)據(jù)點(diǎn),如圖9所示。(橫坐標(biāo)表示數(shù)據(jù)點(diǎn),縱坐標(biāo)表示數(shù)據(jù)點(diǎn)對(duì)應(yīng)的坐標(biāo)值。)
圖9 肘部關(guān)節(jié)的空間三維坐標(biāo)原始數(shù)據(jù)圖Fig.9 Spatial Three-Dimensional Coordinates Original Data Figure of the Elbow Joint
由圖9可知,肘部關(guān)節(jié)原始數(shù)據(jù)存在著明顯的波動(dòng),因示教者站在原地?fù)]動(dòng)手臂,Z坐標(biāo)變化幅度較大。為了獲得更加平滑的數(shù)據(jù),這里采用霍爾特指數(shù)平滑法[19]對(duì)原始數(shù)據(jù)進(jìn)行濾波處理。通過濾波處理后的數(shù)據(jù),如圖10所示。
圖10 濾波處理后數(shù)據(jù)與原始數(shù)據(jù)對(duì)比圖Fig.10 After Filtering Processing Data Compared with the Original Data
圖10中,肘部的X、Y、Z坐標(biāo)經(jīng)濾波處理后,得到的曲線相比于原始數(shù)據(jù)更加平滑。原始數(shù)據(jù)中的波動(dòng)得到很好的處理,穩(wěn)定性加強(qiáng)。
將濾波后得到的平滑數(shù)據(jù)用于計(jì)算相應(yīng)伺服電機(jī)的旋轉(zhuǎn)角度,控制相應(yīng)電機(jī)。實(shí)驗(yàn)結(jié)果表明,這里所述建模方法能夠達(dá)到使用要求,構(gòu)建的基于Kinect 的仿人機(jī)器人手臂動(dòng)作模仿系統(tǒng)可以實(shí)現(xiàn)實(shí)時(shí)連續(xù)動(dòng)作模仿。實(shí)時(shí)動(dòng)作模仿效果,如圖11所示。
圖11 實(shí)時(shí)動(dòng)作模仿效果圖Fig.11 Real-Time Imitation Rendering
這里建立了仿人機(jī)器人系統(tǒng),將系統(tǒng)各部分功能與設(shè)備進(jìn)行介紹。利用Kinect體感攝像機(jī)的骨骼追蹤技術(shù),采集示教者的重要關(guān)節(jié)骨骼點(diǎn)三維空間坐標(biāo),利用霍爾特指數(shù)平滑濾波處理骨骼數(shù)據(jù),有效解決了原始數(shù)據(jù)出現(xiàn)的波動(dòng)現(xiàn)象,使數(shù)據(jù)更加平滑。基于骨骼數(shù)據(jù)建立仿人機(jī)器人手臂重要關(guān)節(jié)的數(shù)學(xué)模型。利用模型將人體骨骼數(shù)據(jù)轉(zhuǎn)換為機(jī)器人手臂相應(yīng)伺服電機(jī)的控制信息。通過主控計(jì)算機(jī)發(fā)送到機(jī)器人主控制器驅(qū)動(dòng)各關(guān)節(jié)伺服電機(jī)轉(zhuǎn)動(dòng)。成功實(shí)現(xiàn)仿人機(jī)器人手臂動(dòng)作模仿。這里所述建模方法,只需利用人體三個(gè)關(guān)節(jié)的三維坐標(biāo)便可控制四個(gè)伺服電機(jī)的轉(zhuǎn)動(dòng),每一個(gè)關(guān)節(jié)的角度求解都是通過簡單的向量運(yùn)算與三角運(yùn)算實(shí)現(xiàn),模型計(jì)算簡單,因而可以使動(dòng)作模仿的實(shí)時(shí)性較好。此外,利用人體骨骼數(shù)據(jù)來建立相應(yīng)模型,能夠讓動(dòng)作模仿的更加準(zhǔn)確。實(shí)驗(yàn)結(jié)果表明,這里所述建模方法適用于仿人機(jī)器人手臂動(dòng)作模仿系統(tǒng),能夠?qū)崿F(xiàn)實(shí)時(shí)動(dòng)作模仿,且運(yùn)動(dòng)平滑無抖動(dòng),動(dòng)作模仿效果較好。