全文共6083字,預計學習時長16分鐘
近期,參與GraknOrbit第二系列研究的TNO首席科學家Joris Sijs加入了我們。TNO是荷蘭國家研究協會,Joris和他的團隊希望將機器人和人工智慧結合起來。
約兩年前他們開始與Grakn合作,當時的機器人資料庫還無法準確反映真實世界。對於需要在真實世界環境中執行任務和做出決策的自主系統來說,機器人資料庫非常關鍵。機器人項目通常在精心策劃的環境中運行,因此TNO研究人員想要儘可能設置接近真實世界的場景。
搜索和救援——SNOW項目
TNO正在進行的項目名為SNOW,重點關注自主系統。該團隊將自主系統定義為機器人與人工智慧的結合。
實際上,這意味著機器人被賦予了更多的自主權。從用戶的角度來看,人工幹預越少,這樣機器人就能在越複雜的環境中工作。
傳統的機器人技術需要遠程控制系統。然而在 SNOW項目中, TNO正試圖儘可能減少人為幹預,特別是當環境變複雜時。SNOW項目團隊由15名科學家組成,主要關注3大挑戰:
· 態勢感知——機器人是否知道其運行位置
· 自我意識——在設定情況下,機器人在那時能做什麼
· 情景規劃——如何運用已知信息完成任務
TNO為項目選擇的用例是半現實的。通常情況下,他們的客戶只會要求使用一個弱人工智慧(narrow Artificial Intelligence)任務進行探索。然而,通過創建自己的案例,他們能夠探測到所有的技術情況,併集成所有的技術解決方案。SPOT將在什麼樣的環境和情況下運作呢?
TNO使用一棟預置別墅,該別墅由四個房間、一個大廳、一個門廊組成。現場有四名受害者和一名消防員。SPOT被派去獲取遇難者的準確位置,以及任何對搜索和救援情況有用的額外信息。隨後,波士頓動力公司的機器人SPOT被派往別墅尋找、定位受害者。
SPOT隨後的任務是完成一系列目標:
· 定位家庭成員
· 對他們進行醫學評估
例如,機器人可能報告說,女兒在走廊裡正走向廚房,她還有反應。接下來機器人會去尋找其他受害者。過了一會兒,機器人報告說它發現父親在客廳裡,坐在椅子旁邊,但沒有反應。在這種情況下,機器人原地不動,並發出聲音指引救援隊前來救援。
SPOT在現實環境中運行時會面臨一些挑戰:
· SPOT不應被玩具狗迷惑,要把真狗和玩具區分開來。
· SPOT應該根據空間條件評估什麼時候過於危險、搜索和定位能力是如何減弱的。
· SPOT應該能夠根據受害者的情況或其他可變因素(如地點、與危險地點之間的距離等)權衡救援對象。
SNOW的機器人系統
SPOT是如何觀察收集數據的?使用什麼硬體呢?
· PTZ攝像頭——安裝在SPOT頂部的平移變焦攝像頭
· 用於語音交互的語音陣列和揚聲器
這些組件安裝在一臺微型電腦的頂部。這款迷你電腦計算能力很強,大多數計算都是靠電腦自己完成的,以確保機器人有儘可能多的自主性。
一個典型的機器人系統在TNO裡是什麼樣子的?
首先,從PTZ攝像頭獲取圖像,然後將其傳遞給圖像識別模塊,該模塊用於房間特徵識別,這樣機器人就可以在房間內定位自己。關聯模塊從相機獲取所有的檢測並將它們關聯起來,這樣它們就可以創建更好的軌跡,而不是單獨分散的檢測。使用Grakn作為資料庫,編排系統中的所有數據和知識。
通常在機器人技術中,ROS和Python用於支持系統中模塊之間的通信。如果你用Python創建一個模塊或軟體組件,ROS會在Python代碼中添加另一個層,以便與系統的其餘部分進行通信。
因此,他們還需要為Grakn創建專用的ROS客戶端,並使用本機Python客戶端。
Joris指出,他們的資料庫雖然相對較小,卻是以非常動態的方式處理管理負擔、並向資料庫中添加新信息的。
Grakn ROS客戶端
ROS是什麼?它在這一過程中起什麼作用?
ROS(機器人狀態發布者)是一種發布/訂閱機制。設置包括:攝像機、圖像識別、關聯層、規劃師和控制器。ROS有助於將輸入日期合併到資料庫中。來看看狗被識別的例子:
· 圖片由PTZ攝像機發布
· Grakn客戶端訂閱圖像,以便將其反饋給資料庫
· 圖像隨後被傳輸到識別模塊
· 檢測到狗
· 隨後這隻狗狗被發布在ROS巴士上
· Grakn客戶端再次訂閱這個輸出信息(狗),以便將它發送並寫回資料庫
· 關聯模塊也是如此,狗的速度和位置會被寫入資料庫
· 然後規劃師可能需要一些信息
· Grakn客戶端也會訂閱來自規劃師的這些請求(物體速度),反之亦然
如何創建ROS Grakn客戶端?
該團隊開始創建這個ROS客戶端,將其分為兩部分:ROS包裝器和Grakn客戶端會話。
ROS包裝器處理髮布/訂閱機制,Grakn客戶端會話作為抽象層構建在Grakn客戶端頂層。它們各自有哪些要求?
· ROS包裝器對客戶端和要發布或訂閱的主題進行初始化處理。
· Grakn客戶端應該自動啟動Grakn並刪除任何現有的密鑰空間。刪除密鑰空間是必要的,因為在機器人技術中,我們希望從一個空密鑰空間開始。我們想為機器人所處的動態變化環境提供一個全新的場景。
· Grakn客戶端會話也應該加載已知的模式和實例。
運行一段時間後,會出現新的ROS消息(例如,對object_velocity的請求)。此處他們使用基於Grakn Python客戶端的Grakn實用程序。Joris和他的團隊目前正在考慮開發一個可以自動生成查詢的附加功能。這是今後的工作。
這張幻燈片向我們展示了一個read函數在內部看起來是怎樣的。函數request_all_humans 可以獲取資料庫中已知的所有人,這樣設置是為了使用Grakn實用程序從資料庫讀取查詢。
然後檢索數據,並將其放入一種可以提供給ROS包裝器的良好格式中,包裝器將該數據作為ROS主題再次發布。這是一個相當簡單的函數。然而,當我們為機器人添加額外變量進行觀察時,它就變得有點複雜了。
在這之前,讓我們先看看他們的模式——Joris在下面的幻燈片中以模式圖的形式介紹了其中的一部分。
我們看到他們已經定義了一個living_being,它是human 或 animal的父實體。這兩個是adult, child 以及 dog, cat的父實體。SPOT需要報告 living_beings的狀態,包括 physical狀態和mental 狀態。具體而言,SPOT的任務是識別一個被識別 living_being的 mental-responsiveness。
讓我們看看它們是如何在這個模式片段中建模關係的。
define
## relation 1: mental responsiveness of a discovered (by SPOT) living-being ##
well-being sub relation,
relates health,
relates being;
mental-responsiveness sub attribute,
plays health;
living-being sub entity,
plays being;
## relation 2: family of living-beings ##
family sub relation,
relates father,
relates mother,
relates son,
relates daughter,
relates pet;
human sub living-being;
adult sub human;
child sub human;
man sub adult,
plays father;
woman sub adult,
plays mother;
boy sub child,
plays son;
girl sub child,
plays daughter;
animal sub living-being,
plays pet;
我們還可以看到這個模型實例的樣子,參考上面幻燈片的下方部分。首先,他們用true 或 false實例化了 mental 概念。他們有一些人和一隻叫Fluffy的狗。注意,在這個例子中有兩個成年人,man(薩姆)和man(喬治)。薩姆是消防員,喬治是這個家庭的父親。
我們可以看到Sam有心理反應,而George沒有。那我們如何在代碼中創造心理反應呢?我們假設母親有心理反應:
小卻動態
還記得我們說過資料庫很小卻是動態的嗎?來看看SPOT在真實場景中運行時會發生什麼。場景設置在現實世界中,包括一個家庭、一個消防隊、一個帶大廳和房間的房子。以下大致是SNOW項目的完整架構圖。
綠色表示所有關係,深藍色表示所有屬性。所有概念或實體都用淺藍色顯示,並組織成一個類型層次結構。乍一看,它並沒有看上去那麼大或複雜,但正如Joris繼續描述的那樣,一旦機器人進入房間,複雜性就會迅速增加,因為機器人需要進行自我定位。他們能夠通過在資料庫中描繪多邊形來建模。
在下面的幻燈片中,我們可以看到廚房、廚房門和四面牆都被映射成多邊形的點和邊。
多邊形是一個數學概念,你可以用它來描述房間的邊界,比如廚房。多邊形需要一系列的點、邊、線,和邊對應的是牆壁或廚房門。多邊形由直線構成,直線由兩點確定下來。如果您要將這個多邊形建模為Grakn,那麼多邊形與一組直線相關,每條直線與兩個點和一個結構部件相關。
在Grakn中建模,我們得到實體:mathematical-concept, polygon, lines, points,和實體 point的兩種子類型:local-origin 和 global-origin。這些線條也可以以某種物理形式出現,比如結構部件:牆壁或門。
為什麼要知道這些有用的信息?
如果SPOT在廚房,它應該能夠定位自己在那個房間裡。如果它在廚房,並且需要通過廚房門離開房間,它一定要知道廚房門的位置。SPOT通過雷射雷達系統,能夠測量到到牆壁的距離,從而將陣列映射到多邊形。接下來,它應該通過檢索門的端點來定位門。最後,它會找到一個出口,朝門走去。
如果你是按照平面圖與機器人和真實環境一起工作,使用多邊形是很方便的。
推理如何從一個房間移動到另一個房間
我們看到Joris是如何模擬一個特定房間,以便SPOT在其中移動。但要想在整棟樓裡移動呢?該如何建模一個建築,使SPOT可以在房間和大廳之間自由移動?首先,Joris需要在架構中建模建築的組成,我們可以在Graql中看到他的圖解表:
define
building sub entity,
plays composition;
office-building sub building;
res-house sub building;
space sub entity,
plays partition;
open-space sub space;
closed-space sub space;
real-estate sub closed-space,
plays composition;
room sub real-estate;
composing sub relation,
relates composition,
relates partition;
structural-part sub entity,
plays partition;
window sub structural-part;
wall sub structural-part;
door sub structural-part;
這意味著,當我們有一個像這個別墅這樣的 res-house實例時,它是由房間組成的:kitchen hall living。這些房間是由structural-parts組成的,如:kitchen-wall, kitchen-door, hall-wall, living-wall, living-door.
正如Joris解釋的那樣,我們可以利用Grakn的超圖和基於規則的推理來創建基於普遍關聯的structural-parts的房間連接(關係)。
如果我們知道kitchen-door在kitchen和 living的關係中扮演著一個角色(上面幻燈片中的c#2),那我們可以通過kitchen-door推斷出kitchen and living之間的關係。
這讓SPOT認識到它可以通過廚房門從廚房移動到大廳。就像自己推斷的那樣,我們可以通過 kitchen-door 和 living-door來建立kitchen 和 living之間的關係。這是Grakn中傳遞關係的一個例子。
機器人團隊通常會使用SLAM或其他導航技術來實現空間中的這種移動。在Grakn中,這變得相當簡單。可以在Grakn Workbase(即Grakn的IDE中)看到它的樣子:
模型否定
當機器人進入建築時,SPOT還不知道 living-beings的位置,我們該如何解決這個問題呢?我們如何在資料庫中模擬這種知識的缺乏?
在Grakn中,我們使用了一個有兩個子關係的locating 關係:possibly-locating、 not-possibly-locating、和actually-locating。這些能讓我們解決消極的問題。
一旦搜索一個空間,就能在資料庫中了解到 living_being不在該空間中,這樣我們無需浪費寶貴的時間到現場再檢查一遍。這需要在主動搜索過程中對資料庫進行頻繁更新。
向資料庫添加新知識會怎樣?
真實場景中,新的事件是在積極搜索和救援過程中出現的。想像一下,一位消防指揮官發現其中一間臥室裡有一個彈球機,而資料庫目前可能還不知道這些。您應該更新基礎知識,而不是將此新知識作為實例添加到資料庫中。您希望將其添加到模式中,以便對知識進行推理並使用它來幫助SPOT實現其目標。
Joris指出,這種情況可能會經常發生。以一種合適的、自動化的方式將新知識添加到模式中是必不可少的。Grakn的動態模式不需要進行任何遷移就可以隨時更新,非常簡單方便。
對我來說,機器人技術非常酷,知識圖也很火,所以二者結合起來,我就變得「狂熱」,躁動不已。只有一些額外的「狂熱」才能激勵Joris及其團隊。
Joris談到了他喜歡在知識圖上使用機器學習來通過對象識別來實現自我定位。例如,如果我們能認出烤箱和水槽這兩個物體,我們就能知道自己在廚房裡。
Joris和他的團隊目前正在與Grakn實驗室首席科學家James Fletcher合作,這位科學家對知識圖卷積網絡(KGCN)的研究在此項目中得到了應用。
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範