本節書摘來自華章計算機《機器人程式設計實戰》一書中的第2 章,第2.3節,作者:[美]卡梅倫·休斯(cameron hughes) 特雷西·休斯(tracey hughes) ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
你将如何使用它的基本能力來描述機器人?你将如何描述機器人在給定态勢或場景中所扮演的角色?設計并實作以上任務,這就是程式設計自主機器人的全部工作。簡言之,要想程式設計一個機器人,你需要能夠描述:
做什麼
何時去做
何地去做
怎樣去做
同樣重要的是對機器人描述“它”是什麼,“何時”或“何地”指的是什麼。正如我們所看到的,這就要求幾個層級的機器人詞彙。
按照我們的設想,一個自主機器人的機器人詞彙分為7層,我們稱之為機器人本體語言層級(robot ontology language level,roll)模型。圖2-4展示了roll模型的7個層級。
注釋
本書中,我們使用本體這個詞作為一個機器人場景或态勢的描述。
圖2-4 自主機器人roll模型的7個層級
現在,我們隻關注那些可能出現于7個層級之中任何位置的機器人程式設計。這7個層級大緻可以分為兩組:
機器人能力
機器人角色
小貼士
把roll模型放在便于檢視的位置,因為我們會經常參考它。
2.3.1 機器人的能力
1~4層級中的機器人詞彙基本上是針對機器人的能力,即針對機器人的硬體,它可以采取什麼樣的行動以及如何實作這些行動。圖2-5顯示了這些語言層級是如何相關聯的。
層級4的機器人詞彙由層級3的指令實作,我們稍後會進行延伸。根據層級4的機器人基本詞彙,我們使用層級3的指令去定義我們想要表達的東西。正如你所記得的,層級3的指令(第3代語言)經由解釋器或編譯器轉換為層級2或層級1的微控制器指令。
2.3.2 場景和态勢中的機器人角色
圖2-4所示機器人的roll模型的5~7層級負責給予機器人關于特定場景和态勢指令的機器人詞彙。自主機器人執行特定場景或态勢中的任務。
我們以第1章中圖1-9的生日機器人br-1為例。我們設定一個生日聚會場景,機器人的任務是點燃蠟燭并且在聚會結束後清除盤子和杯子。
一個态勢是場景中一個事件的快照。比如,生日聚會機器人br-1的一個态勢是桌子上一個未點燃蠟燭的蛋糕,另外一個态勢是機器人走向蛋糕,還有一個态勢是定位打火機與蠟燭的距離,等等。任何場景都可以視為一個許多态勢的集合,當把所有的态勢組合在一起時就是一個場景。對于一個給定的場景,如果機器人正确執行其角色中的所有任務,那麼我們就認為它是成功的。
層級5的态勢詞彙
層級5是描述場景中特定态勢的詞彙。讓我們一起看下第1章中機器人場景1的一些态勢:其中midamba發現自己處于困境;在一個研究設施裡有機器人和化學品;一些化學品是液體,其他的是氣體;有些機器人是移動的,其他的沒有;研究設施有一定的規模、貨架和容器;機器人位于設施中它們的指定位置。對于midamba的困境,利用層級5的詞彙,圖2-6給出了一些必須定義的東西。
在場景1中,midamba有一些态勢要求機器人能夠處理相關詞彙,如下:
研究設施所處區域的大小
區域中容器的位置
區域中容器的大小
貨架的高度
化學品類型等
圖2-6 層級5詞彙描述的态勢特性
注意,描述這些特性的機器人詞彙不同于那種描述機器人基本能力的詞彙。在一個機器人采取每個行動之前,我們可以描述目前态勢。在該機器人采取每個行動之後,我們可以描述目前态勢。一個機器人采取的行動總是以一種或更多方式改變态勢。
層級6的任務詞彙
層級6的詞彙類似于層級4的詞彙,因為它描述了機器人的行動和能力。差異表現為層級6的詞彙所描述的行動和能力是态勢的具體特征。
例如,如果midamba擷取了表2-1能力矩陣中所列硬體配置的unit2機器人,一個合适的任務詞彙将支援如下指令:
行動1——掃描貨架而尋找一罐藍色的油
行動2——測量油的等級
行動3——如果它是a級且至少包含2誇脫,取走這罐油
注意,所有行動都涉及一個特定态勢的詞彙具體說明。是以,層級6的任務詞彙可以看作層級4詞彙的一個态勢具體說明。
層級7的場景詞彙
我們的機器人程式員新手midamba面對這樣一個場景:研究區域中的一個或多個機器人必須識别某種可以幫助他給原電池充電或中和備用電池上的酸的化學品。一旦識别出該化學品,機器人必須取回交給他。态勢中的一系列任務構成了該場景。unit2的場景詞彙綜合起來描述如下:
unit2,從你目前位置開始掃描貨架,直到你找到一個可以為我的原電池充電或清除我備用電池上酸的化學品,然後取回該化學品并将它交給我。
理想的情況下,層級7的機器人詞彙允許你程式設計機器人以直截了當的方式去完成這個任務集。實用的自主機器人必須有某種有用和有效的層級7詞彙。
圖2-7給出了機器人詞彙5~7層級之間的聯系。
5~7層級的詞彙允許程式員在一個給定态勢和場景中描述機器人的角色,以及機器人将如何完成這個角色。