基于Kinect的機(jī)器人控制系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:設(shè)計(jì)一款可以通過(guò)人體動(dòng)作對(duì)機(jī)器人進(jìn)行控制的機(jī)器人控制系統(tǒng)。該系統(tǒng)由主機(jī)和從機(jī)兩部分組成,通過(guò)Kinect體感傳感器采集人體動(dòng)作信息,在主機(jī)中進(jìn)行圖像處理解析出相應(yīng)的人體動(dòng)作,然后通過(guò)無(wú)線傳輸單元向機(jī)器人發(fā)送相應(yīng)的控制指令,控制機(jī)器人做出響應(yīng),完成相應(yīng)的一套動(dòng)作或?qū)θ梭w動(dòng)作進(jìn)行實(shí)時(shí)模仿、制作的機(jī)器人樣機(jī)運(yùn)行良好,能夠根據(jù)人體左右手的動(dòng)作和語(yǔ)音命令,做出正確的響應(yīng)。
隨著機(jī)器人控制技術(shù)的迅猛發(fā)展,各類機(jī)器人已廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、國(guó)防、科研、教育以及人們的日常生活等諸多領(lǐng)域。但目前機(jī)器人的操控方式卻不乏單調(diào),傳統(tǒng)意義上的控制基本上是通過(guò)遙控器、按鈕、操作手柄來(lái)實(shí)現(xiàn)的。文中則提供了一種新的控制方式——體感控制,即操作者可直接通過(guò)手勢(shì)對(duì)機(jī)器人進(jìn)行控制,巧妙地將Kinect體感技術(shù)與機(jī)器人控制技術(shù)結(jié)合,創(chuàng)造性地實(shí)現(xiàn)了機(jī)器人控制方式上的創(chuàng)新,實(shí)現(xiàn)更加自然的人機(jī)交互。
1 總體結(jié)構(gòu)與工作原理
本控制系統(tǒng)以Kinect體感傳感器作為圖像采集工具,結(jié)合機(jī)器人控制技術(shù),實(shí)現(xiàn)了人體動(dòng)作對(duì)機(jī)器人的控制,使機(jī)器人更加智能化。裝置由主機(jī)和從機(jī)兩部分組成,系統(tǒng)總體結(jié)構(gòu)如圖1所示。主機(jī)用于人體動(dòng)作信息采集,然后進(jìn)行圖像處理,識(shí)別出入體動(dòng)作,并負(fù)責(zé)把人體動(dòng)作信息無(wú)線傳送給從機(jī)。
主機(jī)系統(tǒng)由PC機(jī)、Kinect體感傳感器、XL02—232AP1無(wú)線傳輸模塊組成。主機(jī)用于人體動(dòng)作信息采集,然后進(jìn)行圖像處理,識(shí)別出人體動(dòng)作,并負(fù)責(zé)把人體動(dòng)作信息無(wú)線傳送給從機(jī)。
從機(jī)則是一個(gè)動(dòng)作執(zhí)行機(jī)器人,它的控制系統(tǒng)由AVRatmega128單片機(jī)、無(wú)線傳輸模塊、語(yǔ)音模塊、BT37970B直流電機(jī)驅(qū)動(dòng)模塊等組成。它的機(jī)械結(jié)構(gòu)主要由多自由度的手臂和四輪驅(qū)動(dòng)的底盤構(gòu)成。從機(jī)對(duì)信息進(jìn)行實(shí)時(shí)處理,控制機(jī)器人手臂各個(gè)關(guān)節(jié)旋轉(zhuǎn)相應(yīng)的角度,從而完成相應(yīng)的動(dòng)作。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 主機(jī)
1)Kinect體感傳感器它是2010年由微軟對(duì)XBOX360體感周邊外設(shè)正式發(fā)布的名字,具有動(dòng)態(tài)捕捉,影像辨識(shí),語(yǔ)音識(shí)別等功能?;谠摷夹g(shù),可以利用手勢(shì)在游戲中開車、與其他玩家互動(dòng)、通過(guò)互聯(lián)網(wǎng)與其他Xbox玩家分享圖片和信息等,這也顯示了它具有非常強(qiáng)大的圖像采集與處理功能。
Kinect可以同時(shí)獲取RGB和深度圖像數(shù)據(jù),支持實(shí)時(shí)的全身的骨骼追蹤,并可以識(shí)別一系列的動(dòng)作。圖2是它的外觀圖,左邊鏡頭為紅外線發(fā)射器,中間鏡頭是一般常見(jiàn)的RGB彩色攝像頭,右邊鏡頭是紅外線CMOS攝像頭所構(gòu)成的3D深度傳感器。微軟在2011年6月推出的Kinect for Windows SDK Beta使開發(fā)人員可以直接取得距離傳感器、彩色攝像機(jī)以及四單元麥克風(fēng)數(shù)組的原始數(shù)據(jù)流進(jìn)行應(yīng)用程序開發(fā)。此套SDK能夠追蹤Kinect視野內(nèi)一位或兩位用戶的骨架映像,便于建立以體感操作的應(yīng)用程序。
Kinect不同于普通攝像頭的是,它有感知世界的CMOS紅外傳感器。該傳感器通過(guò)黑白光譜的方式來(lái)感知環(huán)境,純黑代表無(wú)窮遠(yuǎn),純白代表無(wú)窮近,黑白間的灰色地帶對(duì)應(yīng)物體到傳感器的距離。它收集視野范圍內(nèi)的每一點(diǎn),并形成一幅代表周圍環(huán)境的景深圖像。傳感器以每秒30幀的速度生成深度圖像流,實(shí)時(shí)3D地再現(xiàn)周圍環(huán)境。
利用Kinect采集到的深度圖信息,可以得到一個(gè)20點(diǎn)的人體骨架結(jié)構(gòu),其二維投影如圖3所示,前景分割與骨架提取該系統(tǒng)直接調(diào)用了SDK封裝函數(shù),得到人體20個(gè)節(jié)點(diǎn)的3維空間坐標(biāo)以及節(jié)點(diǎn)方向信息,進(jìn)而得到完整的人體骨架信息。
運(yùn)用這些信息可以提取出人體姿態(tài)特征以及運(yùn)動(dòng)特征,用于人體基本動(dòng)作的識(shí)別。譬如,通過(guò)比較右手與頭部的Y軸坐標(biāo)差值的閾值變化,可以解析出右手是否舉起,如圖4所示。
2)通訊模塊XL02—232AP1無(wú)線模塊是UART接口半雙工無(wú)線傳輸模塊,可以工作在433 MHz公用頻段。其傳輸距離約300 m,其工作電壓+5 V,低功耗,可以與單片機(jī)I/O口直接相連,發(fā)射模式下串口速率為1.2~115.2 kbps,抗干擾能力強(qiáng)。連接電路如圖5所示。
2.2 從機(jī)
1)動(dòng)作執(zhí)行機(jī)器人
①手臂動(dòng)作控制
本作品所使用的機(jī)器人有兩種結(jié)構(gòu)形式,分別是類人機(jī)器人和輪式機(jī)器人,不同點(diǎn)是一個(gè)是雙足站立的,一個(gè)是輪式的,它們每條手臂均由4個(gè)舵機(jī)構(gòu)成,通過(guò)控制每個(gè)舵機(jī)的旋轉(zhuǎn)角度可以得到不同的手臂動(dòng)作和腿部動(dòng)作,每8個(gè)舵機(jī)角度數(shù)據(jù)對(duì)應(yīng)于一個(gè)特定的手臂動(dòng)作??梢詫⒚總€(gè)手臂動(dòng)作對(duì)應(yīng)的8個(gè)舵機(jī)角度封裝在一個(gè)結(jié)構(gòu)體數(shù)組中,需要時(shí)可以直接調(diào)用。類人機(jī)器人的腿部動(dòng)作的控制也是如此。
機(jī)器人手臂動(dòng)作的執(zhí)行有兩種方式:根據(jù)從上位機(jī)傳來(lái)的動(dòng)作指令,做出對(duì)應(yīng)的預(yù)先設(shè)定的一套動(dòng)作;對(duì)人體的當(dāng)前動(dòng)作進(jìn)行實(shí)時(shí)模仿,人體的動(dòng)作信息解析出來(lái)后,在上位機(jī)中計(jì)算山對(duì)應(yīng)的各個(gè)角度數(shù)據(jù),然后將這些角度數(shù)據(jù)通過(guò)無(wú)線傳輸單元實(shí)時(shí)地傳送到機(jī)器人,機(jī)器人做出響應(yīng),模仿當(dāng)前人體手臂動(dòng)作。
②機(jī)器人平面運(yùn)動(dòng)控制
機(jī)器人平面運(yùn)動(dòng)的控制針對(duì)的是輪式機(jī)器人,機(jī)器人的平面運(yùn)動(dòng)方式大致有4種,分別是前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)。這4種運(yùn)動(dòng)方式對(duì)應(yīng)于4個(gè)指令數(shù)據(jù),也同時(shí)對(duì)應(yīng)著4個(gè)操作者的手勢(shì)動(dòng)作。通過(guò)真實(shí)的開車旋轉(zhuǎn)方向盤來(lái)控制機(jī)器車的旋轉(zhuǎn),通過(guò)右手相對(duì)于左手的超前或落后來(lái)控制車的前進(jìn)和后退,解析出這4個(gè)動(dòng)作后,只需發(fā)送對(duì)應(yīng)的4個(gè)指令數(shù)據(jù)即可。機(jī)器人硬件結(jié)構(gòu)如圖6所示。
2)通訊模塊 同主機(jī)。
3)電機(jī)驅(qū)動(dòng)模塊BT37970B直流電機(jī)驅(qū)動(dòng),這是一款H橋有刷直流電機(jī)驅(qū)動(dòng)模塊,適用3~24 V的大功率直流電機(jī),DC 10~29 V輸入直流電壓。在25 V電壓下,額定持續(xù)輸出10 A電流,適用于鋰電池直接供電。供電為25 V 10 A時(shí)測(cè)得芯片工作頻率高達(dá)1 MHz,驅(qū)動(dòng)能力有了明顯的提高,響應(yīng)速度快。兩路PWM輸入,占空比可以在0~100%,是一般驅(qū)動(dòng)所達(dá)不到的。具有瞬間制動(dòng)能力以及做到全程速度精確控制。適用于鋰電池直接供電驅(qū)動(dòng)的機(jī)器人或車模比賽。控制方式簡(jiǎn)單,僅需要接3根輸入線即可控制電機(jī)制動(dòng)及正反轉(zhuǎn),其中GND引腳與單片機(jī)的GND相連,P引腳接單片機(jī)的PWM輸出引腳,R引腳接單片機(jī)的PC0引腳,用于對(duì)電機(jī)轉(zhuǎn)動(dòng)方向的控制。連接圖如圖7所示。
4)語(yǔ)音模塊最大輸出功率為25W,具有30M存儲(chǔ)容量,可以通過(guò)8個(gè)按鍵觸發(fā)8段語(yǔ)音,也可以通過(guò)RS485/232給模塊指令觸發(fā)220段語(yǔ)音。
5)電源部分采用的是3S鋰電池,容量為1500 mAh,額定電壓11.1 V,35C超大放電能力。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)采用模塊化處理方法,主機(jī)程序主要由主程序、Kinect初始化、圖像辨識(shí)、語(yǔ)音識(shí)別、串口通信等模塊組成,采用C#編寫,編譯環(huán)境為VS2010,使用部分環(huán)境庫(kù)函數(shù)。從機(jī)程序主要有主程序、串口通信、電機(jī)驅(qū)動(dòng)、舵機(jī)驅(qū)動(dòng)、動(dòng)作函數(shù)等模塊組成。采用C語(yǔ)言編寫,編澤環(huán)境為Avrstudi04,使用部分環(huán)境庫(kù)函數(shù)。系統(tǒng)程序流程如圖8所示。
Kinect將采集到的圖像信息傳送給上位機(jī),上位機(jī)經(jīng)過(guò)圖像處理后識(shí)別出人體動(dòng)作,并將處理后的結(jié)果輸出,如圖9所示。機(jī)器人實(shí)時(shí)模仿人體動(dòng)作測(cè)試情況如圖10所示。
4 結(jié)論
操作者可以站在離Kinect體感傳感器3 m左右的距離對(duì)機(jī)器人進(jìn)行體感操控。目前該機(jī)器人能夠?qū)崟r(shí)模仿左、右手各6個(gè)簡(jiǎn)單的動(dòng)作:高舉、半舉、乎舉、擁抱、架起、放下。以及實(shí)時(shí)模仿單腿抬起動(dòng)作。你還可以通過(guò)雙手模擬方向盤實(shí)時(shí)控制機(jī)器車的前后左右運(yùn)動(dòng),亦可通過(guò)語(yǔ)音forward、back、turn left、turn right宋控制機(jī)器人的前后左右運(yùn)動(dòng)。
機(jī)器人在人們牛活中承擔(dān)著越來(lái)越重要的作用,該系統(tǒng)則提供了一種新的控制方式——體感控制,使機(jī)器人的控制更加靈活多樣,實(shí)現(xiàn)了更加自然的人機(jī)交互,具有較高的理論研究?jī)r(jià)值和先進(jìn)性。同時(shí),通過(guò)手勢(shì)實(shí)時(shí)控制機(jī)器人的方式,能應(yīng)用于排爆、救援、醫(yī)療等諸多行業(yè),具有廣闊的市場(chǎng)前景。在此基礎(chǔ)上可以根據(jù)工業(yè)生產(chǎn)等需要,研發(fā)出更多種類的自動(dòng)化機(jī)器人,為創(chuàng)建自動(dòng)化機(jī)器人體系提供積極的支持和幫助。