ROS

簡介一個強大的工具 – CRAM

之前一直以為CRAM是一個認知架構,不過我之前這樣講被Lorenz糾正過
可以看我之前在rosanswer回問題的被電過程XD

CRAM嚴格來說不算是一個認知架構,因為認知架構應該要模擬如何認知,
而頂級的認知架構就是人類都有的認知架構,
只是我們的認知架構是怎麼建立的沒有人知道,
如果知道的話我們也許已經有頭緒要如何實作認知架構了

回到CRAM,之所以說CRAM嚴格來說不算是一個認知架構,
是因為CRAM並沒有提出這樣的一個model,而是提供一系列的工具讓機器人可以做到”類似有認知功能”的行為.

什麼叫做類似有認知能力的行為?
首先要理解認知行為的意義,
基本上,我們可以寫死程式,叫機器人去完成一件複雜的任務,
如果環境定死,只要程式寫出來,機器人一定做得到.(這是目前工業機器人的程度)
但是,我們不會說這樣的行為有認知行為.
因為機器人認知不到他怎麼做到這些事,這些事的意義是什麼,
所以只要環境一動,或是某個用到的工具壞掉,他就做不出來,
這樣的行為就是沒有認知的功能在裡面
(那什麼是有認知的我就不寫了,對比一下應該懂,再不懂就稍微想想自己怎麼完成一件事,如果沒有認知能力你真的做得到嗎)

那為什麼我說是”類似”有認知功能的行為呢?
因為沒有真正的認知架構, 機器人做到的只不過就是完成更具有彈性的task而已
假如我今天再把環境弄得更難一點,或是給的task再抽象化一點
CRAM可能就無法處理了

了解什麼叫做具認知的行為之後,再來看CRAM怎麼做到這件事,就會了解CRAM, CPL, Knowrob之間的關係
CRAM只是一個名稱,主要做事的是兩個核心, CPL和Knowrob

如果你今天叫機器人去倒一杯水,流程會是
1.Knowrob產生倒一杯水的步驟(從原本的知識庫查,或上網,或觀察人類行為)
2.Knowrob產生的步驟交給CPL,CPL是計畫的執行者
3.如果計畫執行順利,任務完成

但如果計畫不順利,CPL具有彈性地完成任務的能力
例如說按照原本的計畫在廚房裡找不到杯子,那麼就再去問Knowrob要怎麼辦
CPL不是把每個task的步驟當成一段段只能執行的程式碼,
而是model成一個個object,
這樣做的目的是讓這些步驟(object)可以被檢視(有沒有認知的味道)
以剛剛的例子而言, 假設倒一杯水只需要找到水杯,倒水,拿水回來這三個步驟
CPL就會得到三個object,而第一個object(找到水杯)需要知道水杯長怎樣,
就代表機器人知道要做到找到水杯需要知道水杯長怎樣

做個summary,
CRAM是整個架構的名稱,提供工具讓機器人可以做出類似有認知功能的行為
CPL和Knowrob是CRAM兩大利器,一個負責執行計畫,一個負責提供知識
所以有CRAM的機器人可以完成任務.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s