天天看點

《機器人程式設計實戰》一一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 定義機器人的7個标準

圖1-1 機器人操作的兩種基本分類

機器人操作或機器人控制一般分為兩類:

遙控機器人

自主機器人

類似自主機器人,遙控機器人也接收指令,但這些指令是實時的,由外部源(人類、計算機或其他機器)實時發送或有一定時延。指令以某種遙控形式發送,機器人按照指令要求執行動作。機器人接收到信号後就會執行動作,有時一個遙控信号會觸發多個動作;其他情況下,信号與動作是一一對應關系,即一個信号對應一個動作。

這裡需要注意的一個要點是,在沒有遙控或外部幹預的情況下,遙控機器人不會執行任何動作。然而自主機器人的指令會提前存儲于機器人内,以執行一系列動作。自主機器人能夠自己出發指令,不需要依賴遙控來執行或啟動每一個動作。需要明确的是,實際會存在混合型機器人和運作情景發生改變的情況,即遙控機器人具有一些自主行為,以及自主機器人有時會進入一個木偶模式。

但是,我們對完全自主機器人和半自主機器人進行了區分,并且整本書可能都稱為強自主性或弱自主性。本書将介紹完全自主機器人程式設計的概念和技術,而并未涵蓋遙控程式設計技術。

1.1.7 标準7:一個沒有生命的機器

雖然有時認為植物和動物是可程式設計的機器,但它們不是機器人。當我們對機器人進行建構、程式設計和部署時,必須有許多倫理規範。當機器人學發展到一定高度時,即把機器人看作有生命的時候,也自然會對機器人重新進行定義。

1.1.8 機器人分類

雖然許多類型的機器可能滿足7個标準中的1個或多個,但是一台機器若要看作一個真正的機器人,必須至少滿足上述7個标準。需要明确的是,一個機器人可以多于但不能低于這7種特性。幸運的是,我們并沒有要求一個機器人像人類那樣具有智力或情感。事實上,現在使用的大多數機器人與人類很少有共同點。機器人分為三個基本類别,如圖1-2所示。

這三類機器人仍然可以基于其如何運作和程式設計做進一步劃分。之前我們将機器人描述為遙控機器人或自主機器人。是以,我們有遙控的或自主的地面、空中或水下機器人。圖1-3展示了空中或水下機器人的簡單分類。

《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖1-2 機器人的三種基本分類

《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖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.1 定義機器人的7個标準

圖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.1 定義機器人的7個标準

圖1-5 微控制器的基本組成

控制器既能控制機器人的記憶體元件,又是擁有機器人記憶體的元件。注意,圖1-5中有4個元件。處理器負責計算、符号操作、指令執行和信号處理。輸入端口從傳感器接收信号并且把這些信号發送給處理器處理。處理器發送信号或指令給連接配接到執行器的輸出端口,于是它們可執行動作。

發送傳感器的信号使得傳感器置于傳感器模式。這些信号用于初始化執行器、設定電動機轉速、起動電動機運動、停止電動機等。

是以,處理器通過來自傳感器的輸入接口獲得回報,發送信号和指令給輸出端口并最終指向電動機、機器人手臂以及機器人活動部件(諸如牽引機構、滑輪和其他末端作用器)。

處理器執行指令。每個處理器都有自己的一套機器語言。發送給處理器的一組指令必須最終轉換為處理器的語言。是以,如果我們用英語着手進行我們想要給處理器執行的一組指令,這些指令最終必須轉換為微控制器中處理器可以了解和執行的指令。圖1-6展示了向機器語言轉化的基本步驟。

《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖1-6 向機器語言轉化的好點子

在本書中,前文讨論過burt用于将好點子轉化為機器語言,是以你可以很清楚在機器人程式設計過程中發生了什麼。除非你有一個使用英語或一些其他自然語言作為内部語言的微控制器,否則所有指令、指令和信号都必須轉化為可以被微控制器中處理器所識别的形式。

圖1-7簡單給出了傳感器、執行器、末端作用器和微控制器之間的互動關系。

《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖1-7中的記憶元件是機器人指令存儲和目前所運作的資料存儲的地方。目前運作的資料包括來自傳感器、執行器、處理器、或存儲資料或資訊(必須最終由控制器的處理器處理)所需任何其他外圍裝置的資料。我們已經在本質上将一個機器人簡化至基本的機器人主體:

傳感器

執行器

末端作用器

微控制器

從最基本的層面上來說,程式設計一個機器人等同于通過給微控制器一組指令集來處理機器人的傳感器、末端作用器和運動。不管我們正在程式設計的是一個地面、空中或水下機器人,基本的機器人主體是相同的,并且都必須處理一組核心的初級程式設計活動。程式設計一個機器人去自主執行一個任務要求我們在某種程度上傳達這項任務給機器人的微控制器。隻有在機器人的微控制器存在這個任務後,機器人才可以執行。圖1-8展示了我們轉化的機器人主體。

圖1-7 微控制器、傳感器、執行器和末端作用器之間的基本互相作用

圖1-8展示了相類似的基本機器人組成。機器人傳感器、執行器和末端作用器肯定有更詳細的形式,但是圖1-8顯示了一些常用形式,并傳達了我們在本書中使用的基本思想。

我們特别強調微控制器,因為它是一個機器人主要的可程式設計元件,并且當我們讨論機器人程式設計時,通常也會涉及微控制器。末端作用器和傳感器也很重要,但微控制器處于“駕駛員”的位置,能設定并讀取傳感器、控制機器人運動以及操作末端作用器部件。表1-2列出了針對低成本機器人的一些常用的微控制器。

《機器人程式設計實戰》一一1.1 定義機器人的7個标準
《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖1-8 轉化的機器人主體

雖然本書中大多數示例開發時采用的是atmega、arm7和arm9微控制器,但是我們介紹的程式設計理念可以應用于具有圖1-4基本機器人主體和滿足我們7個機器人标準的任何機器人。

1.1.13 機器人所在的場景

機器人主體隻講了機器人程式設計故事的一半,另外一半不在于實際的機器人部分,而是機器人場景或态勢。機器人是在一個特定的環境中執行某個類型的任務的。機器人若是有用必須能在環境中造成某種影響。機器人的任務和環境不隻是随機的、未指定的概念。有用的機器人必須在特定場景或态勢中執行任務。機器人在場景或态勢中扮演給定的某種角色。舉例來說,圖1-9中所示為一個機器人參加一場生日聚會。

《機器人程式設計實戰》一一1.1 定義機器人的7個标準

圖1-9 一個生日聚會機器人

我們有一個機器人,稱之為br-1,配置設定給它兩個任務:

點燃蛋糕上的蠟燭

聚會結束後清除盤子和杯子

生日聚會是機器人所處的場景。機器人br-1扮演的角色是點燃蠟燭和清除盤子與杯子的人。場景與期望相伴,有用的機器人是由期望驅動的。生日聚會上會有期望,通常生日聚會會有場所、蛋糕、冰淇淋、客人、慶祝活動、時間和禮物。對于br-1去完成其在生日聚會上的角色,它必須有處理場景或特定态勢的指令,比如:

蛋糕的位置

點燃蠟燭的數量

機器人相對于蛋糕的位置

點燃蠟燭的時間

聚會如何以及何時結束

盤子和杯子的數量等

機器人的實用性和成功與否取決于其在特定态勢中扮演角色的好壞。每個場景或态勢都有一個場所、一組對象、條件和一系列事件。自主機器人位于場景内并且受期望驅動。當對一個機器人程式設計時,我們期望它以某種方式參與和影響一個态勢或場景。描繪場景、與場景交流和給機器人設定期望是機器人程式設計故事的後半部分。

簡言之,程式設計一個有用的機器人相當于程式設計一個機器人利用其傳感器和末端作用器,通過在某個特定态勢或場景中執行一組任務而完成其角色并滿足期望。

程式設計一個有用的機器人可以分為兩個基本層面:

指導機器人利用其基本能力去實作某些期望

在某個給定态勢或場景中給機器人解釋期望是什麼

通過程式設計,一個自主機器人無需人類幹預就能在特定态勢或場景中實作期望時,它就是有用的。是以,一半工作需要程式設計機器人以執行某個任務或一組任務。

另一半任務則需要指導機器人在一個或多個特定場景中執行其功能。我們的機器人程式設計方法是場景驅動的。機器人在态勢和場景中扮演一定角色,且這些态勢和場景一定是程式設計和指導機器人成功執行任務的重要部分。

繼續閱讀