871
技術社區[雲棲]
《機器人編程實戰》一一1.1 定義機器人的7個標準
1.1 定義機器人的7個標準
在開始著手於機器人編程任務之前,需要明確是什麼讓一個機器人能真正被稱作機器人。那麼,什麼時候才能讓一個自操作的軟件控製裝置有資格成為一個機器人呢?在ASC(Advanced Software Construction公司,作者為機器人和軟件機器人打造智能引擎的地方),一台機器需要滿足以下7個標準:
1.?通過編程,應具備以一種或多種方式感知外部或內部環境的能力。
2.?其行為、動作和控製是執行一組程序指令的結果,並可重複編程。
3.?通過編程,應具備以一種或多種方式來影響外部環境、與外部環境交互或者在外部環境中進行操作的能力。
4.?應擁有自己的電源。
5.?應具備一種語言,它適合表示離散指令和數據並支持編程。
6.?一旦啟動,無需外部幹預即具備執行程序的能力。
7.?必須是一個沒有生命的機器。
下麵將詳細闡釋上述標準。
1.1.1 標準1:感知環境
一個有用或有效的機器人應具有一些感知、測量、評估或監測環境與態勢的方法。機器人計劃執行的任務決定了其需要什麼感知,以及如何在所處環境中利用這些感知。它可能需要識別環境中的對象、記錄或區分聲音、測量遇到的物質、通過觸碰定位或規避物體等。在某種程度上,如果缺少感知環境與態勢的能力,機器人將很難完成任務。當然,除了具有一些感知環境與態勢的方法之外,機器人還必須具有接受指令的能力,諸如如何、何時、何地以及為何使用其感知等。
1.1.2 標準2:可編程的動作和行為
應要有給機器人指令的描述方法:
執行什麼動作
何時執行動作
何地執行動作
何種情形下執行動作
如何執行動作
通過本書可知,對機器人編程相當於給機器人一係列關於是什麼、何時、何地、為什麼和如何執行動作問題的一組指令。
1.1.3 標準3:改變環境、與環境交互或作用於環境
一個有用的機器人不但需要感知環境,而且在某種程度上要改變其所處的環境或態勢。換言之,一個機器人應能夠通過行動改變某些東西或利用某些東西來完成任務,否則就是無用的。采取行動或執行任務的過程應影響或作用於環境,否則就無法得知機器人的行動是否有效。一個機器人的行動以某種可測量的方式改變其所處環境、場景或態勢,並且這種改變是向機器人發出一組指令後直接的結果。
1.1.4 標準4:具備電源
機器人的主要功能之一是執行某種動作,這就需要消耗機器人的能量。能量應來自某種電源,比如電池、電力、風力、水力和太陽能等。隻有電源持續提供能量,機器人才能操作和執行動作。
1.1.5 標準5:適用於表示指令和數據的語言
一個機器人需要給定一係指令以確定如何、何時、何地以及在何種態勢或場景下執行什麼動作。有些指令是硬連接於機器人的,並且不論機器人處於何種情況,隻要其有主動電源便會一直執行這些指令。這是機器人的機械部分。常規機器與機器人之間最重要的差異之一表現為:機器人可以接收新指令而不用重建或改變硬件,也無需重新連接。機器人擁有接收指令和命令的語言,該語言應能夠表示命令和數據以描述機器人的環境、情景或態勢。機器人的語言裝置應允許給定指令而無需物理連接,即機器人可以通過一組指令實現再編程。
1.1.6 標準6:無需外部幹預的自主性
我們堅持本條是定義機器人的硬性標準,雖然此觀點仍有爭議。我們認為,真正的機器人是完全自主的,但該觀點並未得到所有機器人專家的認同。圖1-1源自機器人新兵訓練營,它給出了機器人操作的兩種基本分類。
圖1-1 機器人操作的兩種基本分類
機器人操作或機器人控製一般分為兩類:
遙控機器人
自主機器人
類似自主機器人,遙控機器人也接收指令,但這些指令是實時的,由外部源(人類、計算機或其他機器)實時發送或有一定時延。指令以某種遙控形式發送,機器人按照指令要求執行動作。機器人接收到信號後就會執行動作,有時一個遙控信號會觸發多個動作;其他情況下,信號與動作是一一對應關係,即一個信號對應一個動作。
這裏需要注意的一個要點是,在沒有遙控或外部幹預的情況下,遙控機器人不會執行任何動作。然而自主機器人的指令會提前存儲於機器人內,以執行一係列動作。自主機器人能夠自己出發命令,不需要依賴遙控來執行或啟動每一個動作。需要明確的是,實際會存在混合型機器人和運行情景發生改變的情況,即遙控機器人具有一些自主行為,以及自主機器人有時會進入一個木偶模式。
但是,我們對完全自主機器人和半自主機器人進行了區分,並且整本書可能都稱為強自主性或弱自主性。本書將介紹完全自主機器人編程的概念和技術,而並未涵蓋遙控編程技術。
1.1.7 標準7:一個沒有生命的機器
雖然有時認為植物和動物是可編程的機器,但它們不是機器人。當我們對機器人進行構建、編程和部署時,必須有許多倫理規範。當機器人學發展到一定高度時,即把機器人看作有生命的時候,也自然會對機器人重新進行定義。
1.1.8 機器人分類
雖然許多類型的機器可能滿足7個標準中的1個或多個,但是一台機器若要看作一個真正的機器人,必須至少滿足上述7個標準。需要明確的是,一個機器人可以多於但不能低於這7種特性。幸運的是,我們並沒有要求一個機器人像人類那樣具有智力或情感。事實上,現在使用的大多數機器人與人類很少有共同點。機器人分為三個基本類別,如圖1-2所示。
這三類機器人仍然可以基於其如何運行和編程做進一步劃分。之前我們將機器人描述為遙控機器人或自主機器人。因此,我們有遙控的或自主的地麵、空中或水下機器人。圖1-3展示了空中或水下機器人的簡單分類。
圖1-3 空中和水下機器人的運行模式
空中和水下機器人
空中機器人也稱為無人機(Unmanned Aerial Vehicle,UAV)或自主式無人機(Autonomous Unmanned Aerial Vehicle,AUAV)。但不是每個UAV和AUAV都有資格成為一個機器人,記住前麵的7個標準。大多數UAV僅僅是機器,但其中有一些滿足所有7個標準且可以通過編程來執行任務。水下機器人也稱為遙控潛水器(Remotely Operated Vehicle,ROV)和自主式水下機器人(Autonomous Underwater Vehicle,AUV)。類似於UAV,大多數ROV僅僅是機器而並未上升到機器人的水準,但是水下機器人也可以像任何其他機器人那樣編程和控製。
正如你可能會想到的那樣,空中和水下機器人經常麵臨的問題是地麵機器人通常不需要考慮的。例如,水下機器人必須通過編程在水下導航和運行,也必須處理所有來自水生環境(如水壓、水流、水等)的挑戰。大多數地麵機器人不用或不需要在水生環境中運行,也通常並不需要防水防潮設計。
空中機器人負責起飛、降落,並且它們通常在離地數百或數千英尺的空中運行。UAV機器人所編程必須考慮一個航空器所要麵對的一切挑戰(比如,如果一個空中機器人失去了所有動力會發生什麼?)。而一個地麵機器人耗盡電源後可能隻是簡單地停止工作。
如果出現導航或電源問題,UAV和ROV都可能會遇到災難。不過,地麵機器人有時也可能遇到危險。它們可能在邊緣掉落、從樓梯上滾下、鑽進液體裏或在惡劣天氣裏失靈。一般而言,機器人隻運行在上述某一類環境中,很難建立和設計一個可以運行於多類環境的機器人。UAV通常不在水中操作,ROV通常也不在空中操作。
雖然本書中的大多數示例集中於地麵機器人,但是所介紹的機器人編程的概念和技巧可以應用於所有這三類機器人。機器人具有其框架,
圖1-4展示了一個簡化的機器人組成框架。
所有真正的機器人具有圖1-4所示的基本組成框架。不論一個機器人屬於哪一類(地麵、空中或水下),它應至少包含四類可編程組件:
一個或多個傳感器
一個或多個執行器
一個或多個末端作用器/環境作用器
一個或多個微控製器
這四類組件是最基本的機器人編程核心。在最簡單的形式裏,機器人編程歸結為用控製器控製機器人的傳感器、執行器和末端作用器。是的,機器人編程遠比僅僅處理傳感器、執行器、感受器和控製器要複雜,但是這些組件主要構成了機器人的內部和外部設備。機器人編程的其他主要涉及機器人的場景,我們將在後麵介紹。現在,首先來看看(其實也是簡單看)這四個基本的可編程機器人組件。
1.1.9 傳感器
傳感器是機器人在這個世界上的眼睛和耳朵。它們是可以使機器人接收其當前環境下輸入、信號、數據或信息的組件。傳感器是機器人與這個世界的接口,換言之,傳感器是機器人的感官。
機器人傳感器有許多不同的類型、形狀和大小,有感知溫度的傳感器,有感知聲波、紅外線、運動、無線電波、氣體和土壤成分的傳感器,也有測量引力的傳感器。傳感器可以使用攝像機來實現可視和識別方向。人類局限於視覺、觸覺、嗅覺、味覺和聽覺這五種基本感覺,而機器人在傳感器方麵幾乎具有無限潛力。機器人可以裝備幾乎所有種類的傳感器,並且隻要電源支持,可以配備盡可能多的傳感器。第5章會詳細講述傳感器。現在隻是把傳感器看作一種裝置,為機器人提供關於其當前態勢或場景的輸入和數據。
每個傳感器都要負責給機器人某種關於其當前所處環境的反饋。通常,機器人從某個傳感器閱讀數值或向某個傳感器發送數值。但是,傳感器並不僅僅是自動感知,機器人的編程還會指定何時、如何、何地以及在何種程度上使用傳感器。編程決定了傳感器處於哪種模式以及機器人接收到傳感器的反饋後做什麼。
例如,我有一個配備了光傳感器的機器人,根據傳感器的複雜度不同,可以讓機器人利用其光傳感器來確定一個物體是否是藍色的,然後隻取回藍色物體。如果一個機器人配備的是聲傳感器,我可以讓它聽到某種聲音執行一個動作,聽到另一個不同的聲音執行另一個動作。
並不是所有的傳感器都是平等的。對於給機器人配備的任何傳感器,在其所屬類別中都有一個從低端至高端的具體定位。例如,有些傳感器隻能檢測4種顏色,而有些光傳感器可以檢測256種顏色。機器人編程部分包括熟悉機器人的傳感器設置、傳感器能力和局限性。一個傳感器越通用越高級,相應的機器人任務就可以更精巧。
機器人的效能受其傳感器所限製。機器人若隻有一個可視距離僅幾英寸的攝像機傳感器,它就無法看到一英尺遠的東西;若隻配備檢測紅外線的傳感器,它就不能看到紫外線,等等。本書討論機器人的效能並且從機器人框架層麵(見圖1-4)描述它。我們基於以下幾方麵來評估一個機器人的潛在效能:
執行器的效能
傳感器的效能
末端作用器的效能
微控製器的效能
REQUIRE
通過機器人效能的簡單測量,得知傳感器占機器人潛在效能的近四分之一比重。我們開發了一種測量機器人潛力的方法,稱為實際環境中的機器人效能熵(Robot Effectiveness Quotient Used in Real Environments,REQUIRE)。使用REQUIRE作為一個最初的試金石,以確定我們可以通過編程讓機器人做什麼和不能做什麼。稍後我們再解釋REQUIRE,並且將其作為一個機器人性能指標貫穿本書。需要重點注意的是,傳感器的質量以及如何對其編程決定了一個機器人潛在效能的25%。
1.1.10 執行器
執行器是提供機器人部件運動的組件。對於機器人來說,電機通常扮演著執行器的角色。電機可以是電動的、液壓的、氣動的或其他能源。執行器提供了機器人手臂的動作,或是牽引機構、輪子、螺旋槳、手動遙控杆或機翼和機器人腿的運動。執行器允許機器人移動其傳感器,以及旋轉、移動、打開、關閉、提高、降低、扭曲和轉動其組件。
可編程機器人的速度和機器人力量
執行器或電動機最終決定了一個機器人的移動速度。機器人的加速度與其執行器緊密相關。執行器也決定了一個機器人可以舉起或托住多少重量。執行器與一個機器人可以生成多少扭矩或力密切相關。完整地編程一個機器人涉及給予機器人關於如何、何時、為什麼、何地和在何種程度上使用執行器的指令。很難想象或建立一個沒有任何運動類型的機器人。這種運動可能是外部的或內部的,但它必須是存在的。
小貼士
回憶前麵列出的機器人要求中的標準3:通過編程,機器人應能夠以一種或多種方式影響其外部環境、與外部環境交互或作用於外部環境。
機器人必須以某種方式在其環境中運行,而執行器則是互動的關鍵組件。類似傳感器設置,機器人的執行器可以實現或限製其潛在效能。例如,執行器讓一個機器人的手臂隻能轉動到45°,則對於要求轉動90°的情形就不再有效。或者若執行器隻能以200r/min移動螺旋槳,對於要求1?000r/min的場合,執行器將阻止機器人恰當地執行所要求的任務。
因此,機器人的運動必須要有正確的類型、距離、速度、角度和自由度,執行器是提供這種運動的可編程組件。執行器涉及一個機器人可以移動多少重量或質量。如果任務要求機器人舉起一個2?000mL或1kg液體的容器,但其執行器的極限僅僅約為0.35kg,則機器人注定失敗。
機器人的效能通常是由其在特定態勢或場景中的有用性來衡量的。執行器通常決定一個機器人能或不能完成多少工作。類似傳感器,機器人的執行器不是簡單地自我驅動,需要對其編程。和傳感器一樣,執行器使用範圍包括從低端的簡單功能到高端、自適應、複雜的功能。編程工具越靈活,執行器執行能力越強。第7章將更詳細地討論執行器。
1.1.11 末端作用器
末端作用器是機器人在其環境中處理、操作、改變或控製對象的硬件。末端作用器是使得機器人的動作對它所處環境或場景產生影響的硬件。執行器和末端作用器通常緊密相關。大多數末端作用器需要使用執行器或與其交互。
機器人末端作用器常見的例子有手臂、鉗子、爪子和手。末端作用器有許多形狀和大小,並具有多種功能。例如,一個機器人可以使用鑽頭、拋射體、滑輪、磁鐵、激光器、聲波衝擊器,甚至漁網作為末端作用器。類似傳感器和執行器,末端作用器也受機器人編程
控製。
對機器人進行編程所麵對的挑戰,一部分來自於指導機器人充分利用其末端作用器來完成任務。末端作用器同樣也會決定機器人能否成功完成一個任務。類似傳感器,一個配備了多個末端作用器的機器人能同時操控不同類型的對象或相似對象。是的,有時候最好的末端作用器是那些按兩個、四個、六個等一組工作的。末端作用器必須具有與對象交互的能力,這些對象在機器人的場景或環境中被其操控。第7章會詳細介紹末端作用器。
注釋
末端作用器符合機器人定義的標準3。機器人必須能夠做某事以改變某些東西或利用某些東西來做某事。機器人必須在其環境或態勢中產生影響,否則就無用。
1.1.12 控製器
控製器是機器人用於“控製”其傳感器、末端作用器、執行器和運動的組件。控製器是機器人的“大腦”。控製器的功能可通過多個控製器實現,但其通常是一個微控製器。微控製器是一個位於芯片上的小型單片機。圖1-5展示了一個微控製器的基本組成。
控製器或微控製器是可編程的機器人組件,並且支持機器人的動作和行為編程。根據定義,一個連微控製器都沒有的機器不是機器人。但需要記住的是,可編程僅僅是7個標準中的一個。
圖1-5 微控製器的基本組成
控製器既能控製機器人的內存組件,又是擁有機器人內存的組件。注意,圖1-5中有4個組件。處理器負責計算、符號操作、指令執行和信號處理。輸入端口從傳感器接收信號並且把這些信號發送給處理器處理。處理器發送信號或指令給連接到執行器的輸出端口,於是它們可執行動作。
發送傳感器的信號使得傳感器置於傳感器模式。這些信號用於初始化執行器、設置電動機轉速、起動電動機運動、停止電動機等。
因此,處理器通過來自傳感器的輸入接口獲得反饋,發送信號和命令給輸出端口並最終指向電動機、機器人手臂以及機器人活動部件(諸如牽引機構、滑輪和其他末端作用器)。
注釋
處理器執行指令。每個處理器都有自己的一套機器語言。發送給處理器的一組指令必須最終轉換為處理器的語言。因此,如果我們用英語著手進行我們想要給處理器執行的一組指令,這些指令最終必須轉換為微控製器中處理器可以理解和執行的指令。圖1-6展示了向機器語言轉化的基本步驟。
圖1-6 向機器語言轉化的好點子
在本書中,前文討論過BURT用於將好點子轉化為機器語言,因此你可以很清楚在機器人編程過程中發生了什麼。除非你有一個使用英語或一些其他自然語言作為內部語言的微控製器,否則所有指令、命令和信號都必須轉化為可以被微控製器中處理器所識別的形式。
圖1-7簡單給出了傳感器、執行器、末端作用器和微控製器之間的交互關係。
圖1-7中的記憶元件是機器人指令存儲和當前所運行的數據存儲的地方。當前運行的數據包括來自傳感器、執行器、處理器、或存儲數據或信息(必須最終由控製器的處理器處理)所需任何其他外圍設備的數據。我們已經在本質上將一個機器人簡化至基本的機器人主體:
傳感器
執行器
末端作用器
微控製器
從最基本的層麵上來說,編程一個機器人等同於通過給微控製器一組指令集來處理機器人的傳感器、末端作用器和運動。不管我們正在編程的是一個地麵、空中或水下機器人,基本的機器人主體是相同的,並且都必須處理一組核心的初級編程活動。編程一個機器人去自主執行一個任務要求我們在某種程度上傳達這項任務給機器人的微控製器。隻有在機器人的微控製器存在這個任務後,機器人才可以執行。圖1-8展示了我們轉化的機器人主體。
圖1-7 微控製器、傳感器、執行器和末端作用器之間的基本相互作用
圖1-8展示了相類似的基本機器人組成。機器人傳感器、執行器和末端作用器肯定有更詳細的形式,但是圖1-8顯示了一些常用形式,並傳達了我們在本書中使用的基本思想。
注釋
我們特別強調微控製器,因為它是一個機器人主要的可編程組件,並且當我們討論機器人編程時,通常也會涉及微控製器。末端作用器和傳感器也很重要,但微控製器處於“駕駛員”的位置,能設置並讀取傳感器、控製機器人運動以及操作末端作用器部件。表1-2列出了針對低成本機器人的一些常用的微控製器。
圖1-8 轉化的機器人主體
雖然本書中大多數示例開發時采用的是Atmega、ARM7和ARM9微控製器,但是我們介紹的編程理念可以應用於具有圖1-4基本機器人主體和滿足我們7個機器人標準的任何機器人。
1.1.13 機器人所在的場景
機器人主體隻講了機器人編程故事的一半,另外一半不在於實際的機器人部分,而是機器人場景或態勢。機器人是在一個特定的環境中執行某個類型的任務的。機器人若是有用必須能在環境中造成某種影響。機器人的任務和環境不隻是隨機的、未指定的概念。有用的機器人必須在特定場景或態勢中執行任務。機器人在場景或態勢中扮演給定的某種角色。舉例來說,圖1-9中所示為一個機器人參加一場生日聚會。
圖1-9 一個生日聚會機器人
我們有一個機器人,稱之為BR-1,分配給它兩個任務:
點燃蛋糕上的蠟燭
聚會結束後清除盤子和杯子
生日聚會是機器人所處的場景。機器人BR-1扮演的角色是點燃蠟燭和清除盤子與杯子的人。場景與期望相伴,有用的機器人是由期望驅動的。生日聚會上會有期望,通常生日聚會會有場所、蛋糕、冰淇淋、客人、慶祝活動、時間和禮物。對於BR-1去完成其在生日聚會上的角色,它必須有處理場景或特定態勢的指令,比如:
蛋糕的位置
點燃蠟燭的數量
機器人相對於蛋糕的位置
點燃蠟燭的時間
聚會如何以及何時結束
盤子和杯子的數量等
機器人的實用性和成功與否取決於其在特定態勢中扮演角色的好壞。每個場景或態勢都有一個場所、一組對象、條件和一係列事件。自主機器人位於場景內並且受期望驅動。當對一個機器人編程時,我們期望它以某種方式參與和影響一個態勢或場景。描繪場景、與場景交流和給機器人設置期望是機器人編程故事的後半部分。
小貼士
簡言之,編程一個有用的機器人相當於編程一個機器人利用其傳感器和末端作用器,通過在某個特定態勢或場景中執行一組任務而完成其角色並滿足期望。
編程一個有用的機器人可以分為兩個基本層麵:
指導機器人利用其基本能力去實現某些期望
在某個給定態勢或場景中給機器人解釋期望是什麼
通過編程,一個自主機器人無需人類幹預就能在特定態勢或場景中實現期望時,它就是有用的。因此,一半工作需要編程機器人以執行某個任務或一組任務。
另一半任務則需要指導機器人在一個或多個特定場景中執行其功能。我們的機器人編程方法是場景驅動的。機器人在態勢和場景中扮演一定角色,且這些態勢和場景一定是編程和指導機器人成功執行任務的重要部分。
最後更新:2017-08-17 14:32:39