孔令軻
(華僑大學(xué)工業(yè)智能化技術(shù)與系統(tǒng)福建省高校工程研究中心,泉州362021)
機器人是近年來發(fā)展起來的綜合學(xué)科[1],集中了機械工程、電子工程、計算機工程、自動化控制工程以及人工智能等多種學(xué)科的最新科研成果,對工業(yè)生產(chǎn)發(fā)展、勞動生產(chǎn)率等多方面都產(chǎn)生了深遠的影響。其中,仿人機器人是一個多關(guān)節(jié)且具有冗余自由度的復(fù)雜系統(tǒng)[2],它不同于一般機器人,在外形和功能等方面更像人類,它的最終目標是研制出具備人類特征(如行走、感官、思維、判斷等能力),在相當程度上替代人類并服務(wù)于人類的高級智能機器人。因此研究如何讓機器人在行為上更貼近人類在當前服務(wù)領(lǐng)域[3]、工業(yè)領(lǐng)域[4]、健康領(lǐng)域[5]的研究是非常具有應(yīng)用價值的。
仿人機器人運動穩(wěn)定性研究是機器人領(lǐng)域的一個熱點。目前,穩(wěn)定運動的規(guī)劃主要是基于動力學(xué)模型[6],而運動規(guī)劃形成的運動模式往往需要復(fù)雜的計算,機器人的運動形式單一。為了實現(xiàn)機器人的多樣化運動[7]生成。以人體行走信息為教學(xué)數(shù)據(jù),實現(xiàn)仿人機器人對人體運動過程的模擬學(xué)習(xí),簡化了運動規(guī)劃[8],使機器人的運動更加多樣化和擬人化。為了滿足機器人在運動仿真過程中的穩(wěn)定性,本文采用Kinect 深度傳感器來捕捉人體的教學(xué)運動[9]。針對Kinect 坐標系與機器人坐標系精確統(tǒng)一的問題,以Nao 機器人為中心重構(gòu)三維坐標解,將解的值轉(zhuǎn)化為Nao 機器人的底層控制,實現(xiàn)實時動作仿真。
本文以機器人Nao 為研究對象,依托Kinect 的骨骼追蹤識別功能搭建動作捕捉系統(tǒng),實時將目標人物的動作簡化為關(guān)節(jié)角度傳遞給機器人,完成實時模仿效果。該方法精確度高、實時度好、簡便易行,規(guī)避了復(fù)雜的運動模型建立過程。
Nao 機器人重4.5kg,高0.57m,擁有25 個自由度(見圖1),機構(gòu)復(fù)雜程度高,動作較為靈活,智能程度高[10]。其軀干內(nèi)安裝了3 軸加速度傳感器(ACC)和陀螺儀(GYRO),能夠進行信息融合生成軀干姿態(tài)角度。同時Nao 每只足有4 個壓力傳感器(FSR)來確定每只腳壓力中心位置,擁有慣性導(dǎo)航儀裝置用以保持在移動模式下的平穩(wěn),通過超聲波傳感器探測并繞過障礙物[11],正是有了以上硬件支持,保證了Nao 動作格外平穩(wěn)和流暢,完美支撐了我們研究的展開。
Kinect 是一款微軟發(fā)布的體感設(shè)備感知器,作為一種非合作方式的人體跟蹤系統(tǒng),可以提供骨骼圖像、景深圖像及骨架追蹤。它含有3 個鏡頭,中間是RGB彩色攝像機,左右兩邊鏡頭分別是紅外線發(fā)射器和紅外線CMOS 攝像機所構(gòu)成的3D 深度傳感器。它們負責捕捉人肢體動作,然后將其和本身內(nèi)部存有的人體模型相對照,符合的便會被創(chuàng)造成和他相關(guān)的骨骼模型,系統(tǒng)可識別人體各個關(guān)鍵部位,見圖2。利用彩色攝像頭采集到彩色圖像和紅外攝像頭采集到的深度圖像,我們可以提取出人體骨架和關(guān)節(jié)空間位置信息,見圖3。
圖1 Nao各自由度示意圖
圖2 人體各個關(guān)鍵節(jié)點總覽
圖3 Kinect提取人體骨骼框架
Kinect 三維坐標是根據(jù)Kinect 攝像頭建立的,原點位于攝像頭位置,x 軸由原點從左指向右,y 軸垂直主光軸向上,按右手系法則確定出z 軸方向。但是該種建立的坐標系的方式會收到距離和背景的影響,捕捉的數(shù)值具有一定的噪聲,為了解決這個問題,我們重新以人體為依據(jù),重新建立了坐標系。設(shè)SHOULDER_CENTRE、SPINE、HOULDER_RIGHT 和SHOULDER_LEFT 四個節(jié)點分別為點A、點B、點C 和點D。
可以求解:
X 軸為:(CX-DX,CY-DY,CZ-DZ);
Z 軸為:(BX-AX,BY-AY,BZ-AZ);
圖4 重建三維坐標系建立
再通過公式(1)求出向量作為Y 軸,即:
得到的人體坐標系見圖4 所示。
以右手為例見圖5 所示,接下來將詳細介紹計算機器人關(guān)節(jié)角度計算:取SHOULDER(S)、ELBOW(E)、WRIST(W)三個點坐標(Xs,Ys,Zs)、(XE,YE,ZE)和(XW,YW,ZW)。
圖5 人體右手關(guān)節(jié)點
其中,各個向量表示如下所示:
將SHOULDER_ELBOW 與向量(公式(2))求得θ1。
將θ作為傳遞給Nao 機器人右手臂的RShoulder-Pitch 關(guān)節(jié)的值;
REblowYaw 為自由旋轉(zhuǎn)角度用上述方法無法直接計算,我們通過實驗調(diào)試最終將WRIST 的Z 坐標值與ELBOW 的Z 坐標值做差再除以WRIST 與ELBOW 之間的距離求反三角函數(shù)再加上RShoulderPitch 的值將其作為Nao 機器人REblowYaw 的關(guān)節(jié)值(公式(5))。
Nao 機器人左臂關(guān)節(jié)與以上算法類似,在這里不再贅述。通過計算出手臂的八個關(guān)節(jié)角度值傳入Nao機器人的驅(qū)動系統(tǒng)來實現(xiàn)運動控制,以及實時的動作模仿。
考慮到Nao 機器人每一個關(guān)節(jié)能活動的范圍并不能像人一樣大,過大的角度會造成Nao 機器人損壞,所以超過各個關(guān)節(jié)閾值的角度后,一律傳入最大角度。Nao 機器人各節(jié)點活動閾值見表1。
表1 Nao 機器人各節(jié)點活動閾值
Nao 機器人是法國阿爾德巴蘭公司研發(fā)的一款具有25 個自由度、可雙足行走的人形機器人,目前世界范圍內(nèi)有超過5000 所高校和研究機構(gòu)將其作為研究實驗平臺,本文創(chuàng)建Nao 機器人動作模仿系統(tǒng),人體關(guān)節(jié)點采集以及示教數(shù)據(jù)讀取使用Python 語言開發(fā)實現(xiàn),將示教動作信息傳入Naoqi 達到數(shù)據(jù)更新,再映射到Nao 機器人控制端從而完成動作模仿的效果。
實時通過Kienct 實現(xiàn)Nao 機器人動作模仿如下圖所示,其中圖6 為手臂伸展動作模仿,圖7 為手臂彎曲復(fù)合動作模仿。
圖6 手臂伸展動作
圖7 手臂彎曲復(fù)合運動
本文針對仿人機器人實現(xiàn)實時模仿目標人物運動進行研究與實驗,提出了一種基于Kinect 的動作捕捉模仿方法,該方法規(guī)避了復(fù)雜的底層運動建模,簡便易用的使仿人機器人能像真實人類一樣運動,該方法精確度高、實時度好。但是同時也存在缺陷,即因為Kinect 無法感知目標人物平向運動變化(如左右轉(zhuǎn)動頭部),因此無法完成機器人模仿目標人物該類型的動作。同時,本實驗未引入機器人平衡控制,所以即使Nao 能接受下半身目標人物關(guān)節(jié)信息,但當運動下半身,很大幾率會出現(xiàn)摔倒的情況。以上問題將在后續(xù)的工作中進一步研究和解決。另外,本文方法將在未來時間進行如下拓展:將各個動作相關(guān)信息按照時間維度存儲數(shù)據(jù)庫中,之后進行調(diào)用,從而達到仿人運動的效果。