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