前言
今天來跟大家一起看一篇論文,可以讓機器人將貨架整理成指定的樣子,算是比較進階的機器人應用。大家可以先看個影片,對整個應用會比較有概念。
系統 overview
有 overview,就比較能夠繼續往下看。所以首先讓我們來看看整個系統架構:
整個系統的運作流程如下:
- CRAM 先產生最初的任務 - 重新整理貨架,整理成跟 KNOWROB 中儲存的樣貌一樣
- CRAM 向 ROBOSHERLOCK 提出 query ,以偵測有哪些物品
- ROBOSHERLOCK 調出儲存在 KNOWROB 裡的 semantic map,了解只需要偵測貨架上的物品即可
- 偵測出有哪些物品後,回傳給 CRAM
- CRAM 規劃出一個可以把貨架整理好的 plan
- 執行剛剛規劃好的 plan(若中途失敗,就重新規劃)
這一系列的步驟中,有三個極為重要的黑盒子 - CRAM、KNOWROB 跟 ROBOSHERLOCK。接下來我們會分別簡介。
Perception
Perception 這個功能主要是交給 ROBOSHERLOCK 這個黑盒子,他比較特別的地方在於,他是把 perception 這個任務用 query-answer 的角度來切入。
什麼意思呢?
舉例來說,我們可以送給 ROBOSHERLOCK 下面這種 query:
(detect (an object
(category container)
(capacity (≥ 1 liter))))
ROBOSHERLOCK 就會想辦法回傳給你大於 1 公升的容器。看到這邊是不是覺得很酷呢?因為這種 perception 的機制有點像是人類要完成一件事情時,心中會有的想法。例如我們如果要念書,我們就會想「我的課本在哪裡呢
?」,然後就會有相對應的知識讓我們可以正確地知道課本在哪裡。
而之所以能夠回答這種問題,在於 ROBOSHERLOCK 在設計之初就將 knowledge 跟物體綁在一起,可以看看下面這張圖,裡面的每個物體都有一些相對應的 knowledge - color, shape, text, size 等等,這些 knowledge 是利用 KNOWROB 這個 knowledge base 來儲存,看完下一個部分就會知道怎麼儲存。
Knowledge
Knowledge 相關的東西,都是儲存在 KNOWROB 裡面。一言以蔽之,KNOWROB 就只是一個 knowledge base,只是這個 knowledge base 裡面的知識,都是用 Web Ontology Language (OWL) 來儲存。
用 OWL 儲存的好處是,所有的知識都可以用 description logic 來表示,比如說
換句話說,我們可以用嚴謹的邏輯來儲存類別的知識(男人、人),可以儲存個體的知識(張三)。這種知識表達的方法不僅僅是儲存了機器人所需要用到的知識,也讓機器人易於使用。舉個例子:
- 瓶子是容器
- 桌上的瓶子.size: medium
假設 medium 大於 1 公升,那當 ROBOSHERLOCK 被 query 要找大於 1 公升的容器時,就可以利用 KNOWROB 的知識,很容易推論出目前辨識出的 medium size bottle 符合需求。
而實際上,機器人要做的整個任務都是可以用知識來表示的,看看這張圖就很清楚了:
Plan and Execution
有了 perception 的能力,也有相關的 knowledge 可以使用,接下來要進場的就是實際規劃可以把貨架收拾好的計畫,還有執行。這個就交給 CRAM 來處理。
CRAM 的核心精神是為了讓機器人可以更有彈性地完成任務,如果想看稍微詳細一點的介紹,可以參考這篇 CRAM 簡介。
因為 CRAM 的設計有跟 manipulation 等 module 相接,所以可以用來執行任務,可以參考這個架構圖:
總結
今天跟大家一起簡單地看過了這篇很 high level 的論文,因為裡面用到的三大黑盒子都太高級了,其實只看這篇論文沒有辦法對整個系統有透徹的了解。不過,機器人這麼複雜的系統,有一篇較大的 paper,這篇 paper 再包含一些厲害的 paper 也不為過吧。
延伸閱讀
- CRAM Tutorials
- KnowRob 2.0 — A 2nd Generation Knowledge Processing Framework for Cognition-enabled Robotic Agents
- ROBOSHERLOCK: Unstructured Information Processing for Robot Perception
關於作者:
@pojenlai 演算法工程師,對機器人、電腦視覺和人工智慧有少許研究,正在學習用心體會事物的本質跟不斷進入學生心態改進。