余子衡 楊馨 朱珣
摘 要:文章介紹了機器人動作投影技術(shù)的定義,研究現(xiàn)狀。并提出了研究方法。在此基礎(chǔ)上,通過簡易設(shè)備讓機器人模仿人類完成舉手,抬手,前進,后退等動作。實驗表明,通過紅外攝像頭讀取的深度數(shù)據(jù),通過算法轉(zhuǎn)化為骨骼數(shù)據(jù)后,可以骨骼幀的形式處理,并轉(zhuǎn)化為機器人的舵機數(shù)據(jù)。
關(guān)鍵詞:機器人;傳感器;深度數(shù)據(jù)
中圖分類號:TP242.6 文獻標志碼:A 文章編號:2095-2945(2018)36-0006-05
Abstract: This paper introduces the definition and research status of robot motion projection technology and puts forward the research method. On this basis, through a simple device, the study allows robots to imitate human beings by finishing the process of stretching hands, raising hands, walking forward, walking backward and other movements. The experiment shows that the depth data read by infrared camera can be processed in the form of skeleton frame and transformed into the data of robot steering gear after the algorithm is transformed into bone data.
Keywords: robot; sensor; depth data
隨著科技的發(fā)展,機器人逐漸開始在人類的的生產(chǎn)和生活中扮演著重要的角色,這些機器人可替代人類完成不少工作量大,危險性高的工作。在機器人技術(shù)高度發(fā)展的今天,仍然有部分工作(例如手術(shù),精密設(shè)備修理這類隨機性高,容錯率低的工作),機器人依然無能為力。讓機器人通過模仿人類的行為來完成相應(yīng)工作,是解決此問題的一個很好的辦法。
1 機器人動作投影技術(shù)定義及意義
機器人動作投影技術(shù)的定義為將人類的行為動作,轉(zhuǎn)換機器人的對應(yīng)行為,以此來實現(xiàn)機器人對人類行為的模仿。若能實現(xiàn)此技術(shù),可有效減少部分高風(fēng)險,普通機器人無法完成工作的危險性,提高工作效率。
2 國內(nèi)外研究現(xiàn)狀及方法
2.1 國外的研究現(xiàn)狀以及所用技術(shù)
近期,英偉達在國際機器人與自動化會議①(ICRA)上介紹了其在機器人教學(xué)方面的新的進展——通過簡單地觀察一個人就可以讓機器人學(xué)會新的任務(wù)。
從公開的視頻來看,人類只要先示范動作,機器人就能學(xué)習(xí)拿起、移動、堆疊彩色的盒子和玩具車。當然,其中涉及的任務(wù)也還比較簡單,只涉及堆疊幾個彩色的立方體。
據(jù)介紹,研究人員首先會訓(xùn)練一系列的神經(jīng)網(wǎng)絡(luò)來檢測物體,推斷他們之間的關(guān)系,之后再生成一個程序來重復(fù)人類的過程。而這種新系統(tǒng)可以讓他們訓(xùn)練機器人在現(xiàn)實世界中只需一次演示,就能完成堆疊任務(wù)。這個技術(shù)的厲害之處在于,從流水線下來的機器人可以在內(nèi)置的編程命令之外,通過模仿人類的行為進行自我“進化”。示范學(xué)習(xí)只是其中一步,英偉達機器人研究項目負責(zé)人Dieter Fox稱,比如在今后居家扶老的環(huán)境中,機器人還將利用深度學(xué)習(xí)技術(shù)預(yù)判人類的行為,提前響應(yīng)。
在技術(shù)支撐方面,英偉達表示依靠的是GPU②,畢竟他們有著多年3D建模、圖形識別分析的能力,而且并行計算也提供了廣闊的運算資源支持。英偉達機器人實驗室的目標是讓非專家更容易訓(xùn)練機器人,這對機器人來說是一項非常困難的任務(wù)。除了讓機器人通過觀察學(xué)習(xí)人類動作外,通過外置設(shè)備捕捉人類動作,然后傳達給機器人,也是實現(xiàn)動作投影的辦法之一。
2017 年底,豐田推出了可以模仿人類動作的第三代人形機器人“T-HR3③”;“T-HR3”是一種由通過可穿戴設(shè)備控制的機器人。用戶通過頭部可穿戴設(shè)備可以看見機器人的視角。同時通過手部和腳部的可穿戴設(shè)備來控制機器人的動作。
2.2 國內(nèi)的研究現(xiàn)狀以及所用技術(shù)
2017年9月15日首屆全國創(chuàng)業(yè)就業(yè)服務(wù)展示交流活動④在山東省濟南市啟動。此次展出的體感機器人是本次展覽最大的亮點之一。項目負責(zé)人傅胤榮聯(lián)合北京大學(xué)、韓山師院、山東大學(xué)等眾多國內(nèi)外專家學(xué)者耗時十年研發(fā)出具有自主知識產(chǎn)權(quán)人體編程技術(shù)的機器人。傅胤榮介紹,該機器人擁有國內(nèi)領(lǐng)先仿生機器人技術(shù)、數(shù)字舵機技術(shù)、體感控制技術(shù)、數(shù)據(jù)手套等技術(shù)等。體感機器人可以實時現(xiàn)場精準模仿人類的動作,并記憶人動作運動軌跡,可以再重播人的動作。目前體感機器人技術(shù)可以廣泛應(yīng)用于創(chuàng)客教育、工業(yè)控制、影視制作等產(chǎn)業(yè)。
3 本人提出的研究問題提出的模型
3.1研究問題:如何讓機器人模仿人類動作
3.2 實現(xiàn)過程
(1)捕捉人類動作。
(2)處理捕捉過來的人類數(shù)據(jù)。
(3)將這些經(jīng)過處理的數(shù)據(jù)轉(zhuǎn)化為機器人舵機⑤信號并發(fā)送給機器人。
3.2.1 捕捉人類動作
捕捉動作需要的是被捕捉對象的關(guān)節(jié)位置,換言之,就是需要關(guān)節(jié)部位的深度數(shù)據(jù)。因此我們需要一個自帶深度傳感器的傳感設(shè)備,紅外傳感器是最佳選擇。得到具體的深度數(shù)據(jù),還需要一些輔助儀器。目前測量深度值有兩種方法,第一種是根據(jù)紅外線從發(fā)射到返回的時間差來確定深度值。一般情況下這個時間差會特別短,需要極其精密的計時器。因此,這種辦法測量深度值的儀器都會非常昂貴。第二種辦法則是通過紅外線反射形成的散斑形狀來判斷物體的距離。這種方法只需要用到一個紅外光屏即可實現(xiàn),并且成本低廉。由微軟公司設(shè)計的Kinect固件就是運用這種原理的設(shè)備之一。
Kinect for windows固件中包含很多感應(yīng)元件和處理芯片,這里我們主要使用的感應(yīng)元件有兩個:
(1)紅外投影機:主動投射近紅外光譜,照射到粗糙物體、或是穿透毛玻璃后,光譜發(fā)生扭曲,會形成隨機的反射班點(稱為散班),進而能被紅外攝像頭讀取。
(2)紅外攝像頭:分析紅外光譜,創(chuàng)建可視范圍內(nèi)的人體、物體的深度圖像⑥。
Kinect獲得深度數(shù)據(jù)的原理如下:紅外投影機的普通光源射出一道“一類普通激光”,這道激光經(jīng)過磨砂玻璃和紅外濾光片,覆蓋Kinect的可視范圍,紅外攝像頭接受反射光線,識別物體的“深度場”。紅外投影機是位于Kinect左側(cè)的“眼睛”,他與右側(cè)的紅外攝像頭配合使用。PS1080S
oC(系統(tǒng)級芯片)對紅外光源進行控制,以便通過紅外光源編碼影像放映場景,紅外投影機的光源是一類普通激光光源,經(jīng)過磨砂玻璃和紅外濾光片,投射出近紅外光,該光波長為830nm,可持續(xù)輸出。
3.2.2 處理人體深度數(shù)據(jù)
獲得的人體深度數(shù)據(jù)需要轉(zhuǎn)化為骨骼節(jié)點位置才可以轉(zhuǎn)化為機器人的舵機數(shù)據(jù)。而Kinect內(nèi)置了專門用于計算骨骼的芯片。Kinect固件計算出骨骼數(shù)據(jù)后,這些數(shù)據(jù)將由計算機程序處理并轉(zhuǎn)化為機器人舵機數(shù)據(jù)。具體過程如下:
Kinect for windows SDK是微軟專門為開發(fā)者準備的工具包。其中應(yīng)用層的API⑦中,有三大組件,其中,NUI API是Kinect for windows SDK 的核心,用于處理彩色圖像流,深度圖像數(shù)據(jù),骨骼跟蹤控制,管理設(shè)備等。Kinect Audio DMO主要負責(zé)波形處理以及音源定位。而Windows Speech SDK 提供音頻,語音,多媒體接口以及微軟語音識別功能。作為最核心的API,NUI API具體功能包括傳感器與計算機的連接,傳感器的訪問,關(guān)閉,訪問傳感器的圖像以及深度數(shù)據(jù)流,通過圖像和深度數(shù)據(jù)的處理來確定骨骼的位置等。深度圖像以像素的形式進行存儲,每個像素2字節(jié),共16位。
骨骼跟蹤的第一步就是將用戶從周圍的環(huán)境分離出來,在Kinect的字節(jié)索引中,通過低三位字節(jié)的索引,應(yīng)用程序可將用戶和周圍的環(huán)境分離開來,稱為用戶分割數(shù)據(jù),它是索引數(shù)據(jù)的一部分,其中,低三位字節(jié)表示用戶的索引編號,000表示內(nèi)置處理器認定這個像素點不屬于用戶,而001,010則表示這個像素屬于用戶一和用戶二。而每個像素的高13位數(shù)值表示物體離攝像頭的距離。作為由深度數(shù)據(jù)組成的“視頻”,深度數(shù)據(jù)流由深度圖像幀組成,在每一個深度圖像幀中,每一個像素點包含了特定的距離信息。如果深度數(shù)據(jù)是0,說明距離太近或者太遠。當骨骼識別關(guān)閉時,記錄id的三位被設(shè)定為0。通過建立緩沖區(qū)和相關(guān)方法的調(diào)用,應(yīng)用程序可以獲取最新的彩色圖像幀,深度圖像幀以及骨骼跟蹤數(shù)據(jù)流,新的幀數(shù)一旦準備好,就會被復(fù)制到緩沖區(qū)中。如果應(yīng)用程序取幀的速度大于數(shù)據(jù)準備的速度,那么只能等待下一個幀的觸發(fā)。當骨骼跟蹤引擎一段時間后,會將骨骼幀返回給應(yīng)用程序,應(yīng)用程序會據(jù)此對動作進行識別。
當應(yīng)用程序?qū)@些骨骼幀進行識別后,會調(diào)用相應(yīng)的函數(shù)進行處理。在骨骼幀中,每一個關(guān)節(jié)都會有對應(yīng)的編號,這些編號對應(yīng)著不同的關(guān)節(jié)位置,同時,機器人不同的舵機也具有不同的編號,當Kinect固件捕捉到數(shù)據(jù)幀并將它傳送至應(yīng)用程序后,應(yīng)用程序會將這幾個被認定為關(guān)節(jié)的節(jié)點的位置通過函數(shù)轉(zhuǎn)化為舵機的運動指令,再將這些機器人指令發(fā)送給機器人。
3.2.3將經(jīng)過處理的數(shù)據(jù)轉(zhuǎn)化為機器人舵機信號并發(fā)送給機器人
機器人由結(jié)構(gòu)件,舵機,電機,控制器,電池組成??刂破髫撠?zé)向舵機發(fā)送指令,舵機負責(zé)機器人關(guān)節(jié)運動,而電機負責(zé)機器人的運動。當控制器和計算機連接成功時,即可通過人體來控制機器人。
3.3 實驗成功判斷方法
根據(jù)以上問題的結(jié)論,當Kinect固件連接計算機時,啟動生成的應(yīng)用程序,當使用者在Kinect面前做出肢體動作時,機器人能模仿人類做出對應(yīng)的肢體動作(即當人體關(guān)節(jié)到達指定空間時,機器人對應(yīng)的舵機將移動至指定位置數(shù)值),即可說明機器人動作投影技術(shù)已實現(xiàn)。
4 實驗過程
4.1 實驗環(huán)境
本實驗要求在一間空曠的實驗室進行,要求Kinect固件所面對的方向五米內(nèi)無障礙物。
4.2 實驗步驟
(1)安裝vs2010,并安裝Kinectrobot SDK,組裝機器人。
(2)編寫代碼,生成文件要求可以將Kinect固件傳遞過來的骨骼數(shù)據(jù)轉(zhuǎn)化為舵機信號,同時能讀取并顯示人體關(guān)節(jié)位置,舵機參數(shù)。
(3)架設(shè)好Kinect設(shè)備,接通電源并連接電腦,啟動機器人電源,同時將電腦的藍牙連接機器人控制器。
(4)測試人員站在Kinect固件前,做出測試動作,動作依次為舉手,雙手平放,雙手下垂,前進,后退(注,因為機器人沒有雙腳,所以人體抬右腳被設(shè)置為機器人向前移動,抬左腳為向后移動)。記錄人員負責(zé)記錄人體關(guān)節(jié)位置,機器人舵機位置。
4.3實驗數(shù)據(jù)
數(shù)據(jù)說明:表格記錄了Kinect固件所記錄的操作者關(guān)節(jié)坐標(參見圖1),以及舵機旋轉(zhuǎn)示數(shù)(舵機位置參見圖2)。人體動作由骨骼各節(jié)點坐標(x,y,z)描述,z代表該節(jié)點與Kinect攝像頭正對方向的水平距離,y表示該節(jié)點高度,x代表與z垂直的水平方向的距離。當節(jié)點在攝像頭正前方5米時,坐標為(0,250,0),依此類推。機器人動作由各舵機示數(shù)來描述,范圍為0-256,當舵機轉(zhuǎn)軸在起始位置時,示數(shù)為0,當舵機恰好旋轉(zhuǎn)360度時,示數(shù)為256。當機器人處于初始姿態(tài)(見圖3)時,所有舵機示數(shù)為0。測試者的初始姿態(tài)為雙腳站立,雙手自然下垂。在第1-5次實驗中,測試者動作依次為舉手,雙手平放,雙手下垂,右腳抬起,左腳抬起。
5 結(jié)束語
綜合以上實驗結(jié)果,當使用者在Kinect固件前做出舉手,雙手平攤,雙手下垂,右腳抬起,左腳抬起五個動作時,機器人可以做出舉手,雙手平攤,雙手下垂,右輪前進,左輪前進,因為固件精度以及拍攝環(huán)境的影響,數(shù)據(jù)會出現(xiàn)略微的偏差,但在允許的范圍內(nèi),另外,因機器人為輪式驅(qū)動,故測試者做出抬腳動作時,對應(yīng)方位的驅(qū)動輪會前進,不影響實驗結(jié)果,故機器人動作投影技術(shù)已實現(xiàn)。
注釋:
①搜狐網(wǎng).英偉達再添ai新技術(shù),機器看一遍就“模仿人類行為”[EB/OL].http://www.sohu.com/a/232401651_99970711.
②圖形處理器(英語:Graphics Processing Unit,縮寫:GPU),又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機和一些移動設(shè)備(如平板電腦、智能手機等)上圖像運算工作的微處理器。
③豐田發(fā)布第三代人形機器人T-HR3 佩戴式設(shè)備助力動作模仿及物理交互[EB/OL].http://auto.gasgoo.com/News/2017/11/22115053
505370027958C601.shtml.
④新浪.體感人形機器人亮相全國眾創(chuàng)周[EB/OL].city.sina.com.cn/invest/t/2017-09-18/16336736.html.
⑤舵機是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。目前,在高檔遙控玩具,如飛機、潛艇模型,遙控機器人中已經(jīng)得到了普遍應(yīng)用。
⑥Kinect應(yīng)用開發(fā)實戰(zhàn)[M].機械工業(yè)出版社,2012.
⑦API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。