高階機器人學書籍
這本華夏公益教科書主要是在 2012 年左右撰寫的,可能有些過時,但核心概念應該仍然適用。 |
在當今世界,用於機器人的技術不斷發展,變得越來越好。在過去,機器人僅僅是一個夢想,一個關於未來科技的“假設”。每一天,都有新的進展讓那個夢想離現實越來越近。人類不斷尋求突破,他們不願受限於自身侷限,始終拒絕服從界限的束縛。如果有人告訴一個人他或她不能做某事,那麼他或她就會努力超越他人的認知,證明他們認為不可能的事情是可以做到的。有了飛機、直升機和其他空中飛行器,人類擺脫了局限於地面的束縛。有了火箭飛船,人類證明了他們甚至可以逃脫地球的束縛,完全離開地球,到達一個可以俯瞰家園世界的的高度,實現了極少數人才能做到的事情。這種科技的進步推動著人們想要創造更多東西的渴望,因為如果我們能夠實現太空旅行,我們就能做更多的事情。
如今,世界上已經存在幾種機器人;有一些用於清潔,有一些可以跳舞,還有一些可以像盔甲一樣附著在人身上。Roomba 是一款小巧的圓形機器人,旨在像吸塵器一樣清潔房屋地板。這款機器人由 iRobot 公司製造,旨在自動在房屋周圍移動,吸走地板和地毯上的灰塵和汙垢,包括邊緣和角落。它還被設計成不會纏繞在椅子腿或桌子上。還有一些機器人,比如豐田吹小號的機器人,可以模仿人類嘴唇的運動,達到用真正的樂器(比如小號)演奏歌曲的程度。
隨著每一天的進步,機器人技術的未來正在朝著建造具有完整人類般骨骼和肌肉系統的類人機器人方向發展。科學家們還在研究利用神經網路建造機器人的方法,這些神經網路模擬了人類的神經系統。這使機器人能夠擁有一個“大腦”,讓它們能夠在執行任務的過程中學習。例如,如果一個機器人撞到桌子,由於它的神經網路,機器人就會知道不要再往那個方向移動,以避免再次撞到桌子。這是科學家們試圖在仿人機器人設計中實現的目標,但這被證明是相當困難的。一個問題是試圖讓仿人機器人像人類一樣用雙腿行走,因為腿部機器人的移動難度比輪式機器人大,它們必須“學會”保持平衡。隨著科技飛速發展,科學家們很快就會找到一種方法,讓這些機器人更像我們。
機器人程式設計包括告訴機器人何時移動、移動到哪裡、移動速度以及許多其他事情的編碼命令。一個書面程式由控制機器人動作的指令組成,它提供有關必要任務的資訊。使用者程式由一系列描述所需行為的指令組成。程式設計機器人可能是一個複雜而具有挑戰性的過程。由於人們現在試圖創造能夠節省資金並更好地促進其他人簡化某些工作的機器人,因此建立使用者友好且不具挑戰性的程式語言至關重要。
機器人程式設計用於操縱現實世界中的物理物件,同時在模型中表示一些不一定屬於現實世界的資料。基於某些模型的命令導致機器人改變現實世界的條件以及世界模型本身。機器人程式設計中最重要的概念之一是讓機器人以與人類相同的方式移動;機器人應該能夠向所有方向移動。一個高階的機器人程式設計概念是使用感測器,例如觸控感測器、超聲波感測器或光線感測器,使機器人能夠與周圍的現實世界互動。由於這些原因,如今許多機器人都有包含內建程式的監控器,以與機器人控制系統和其他應用程式通訊。監控器可以讀取特定感測器,然後修改機器人的動作,例如讓機器人沿著特定路徑移動或避開朝機器人走來的行人。
在嵌入式系統中,作業系統通常被稱為韌體,或者儲存在非易失性快閃記憶體中的嵌入式系統的軟體,它提供對嵌入式系統硬體的控制。這允許使用者編寫一個程式,該程式可以作為緊湊檔案(稱為位元組碼)直接編譯到機器人上,適合執行。位元組碼不能直接執行;相反,作業系統包含一個應用程式,它檢視每個位元組碼並將其轉換為相應的函式。基於運動和感測器,機器人現在還可以使用認知來規劃其下一步行動。根據程式的編碼,機器人可以“看到”接下來會發生什麼,並根據機器人周圍發生的事情執行一行或多行程式碼。如果機器人感覺到它剛剛撞到椅子,假設,機器人就可以計劃後退並繞著椅子走。這些概念使機器人能夠像人類一樣在現實世界中行動。
機器人控制是研究如何控制機器人的學科。機器人控制是指機器人感知和採取行動的方式,以及感測器和其他機器人部件如何高效地協同工作。機器人有很多程式控制,幾乎有無限種可能性,但在實際控制方面,它們受到特定數量的界限限制。如今,控制機器人的四種基本方法是: deliberative control、reactive control、hybrid control 和 behavior-based control。對於 deliberative control,機器人先認真思考,然後行動。對於 reactive control,機器人不思考,而是直接反應。對於 hybrid control,機器人獨立思考和行動,同時進行。最後,對於 behavior-based control,機器人思考的方式就是它行動的方式。
解釋這些要點是因為每個機器人都有自己的優缺點,因此沒有一種控制機器人的方法是最好的。在控制機器人方面,存在一些權衡。思考可能很慢,但反應必須很快。思考可以讓人有先見之明和提前計劃的優勢,從而避免任何不良行為。然而,思考也有一個缺點;思考太久可能是危險的,因為思考會讓機器人忽略周圍環境,從而導致危險情況,例如被撞到或從懸崖上掉下來。
正是由於這些權衡,機器人彼此的行為不同。有些機器人的設計是少思考少行動,而有些機器人則根本不思考。在決定機器人的用途以及它將放置的環境時,會考慮這些型別的決定。如果機器人的目的是快速反應和移動,那麼幾乎沒有時間思考,因此,它不會被程式設計為以這種方式思考。兩個例子是需要快速反應和移動的機器人:足球機器人和汽車機器人。足球機器人必須快速移動和反應,因為它必須能夠在環境中快速移動,以便獲得球並嘗試進球。汽車機器人必須快速移動和反應,因為它需要能夠以一定的速度移動,並迅速反應,以免撞到任何進入其路徑的東西。
另一方面,那些處於環境不斷變化的機器人有時間和機會思考並提前計劃。這類機器人的例子包括下棋機器人、能夠建造物體的機器人以及負責看守倉庫的機器人。例如,下棋機器人需要能夠思考並提前計劃,因為棋盤遊戲是一場智力遊戲,如果快速思考和反應而不考慮所有可能的細節,就會導致機器人快速失敗。

由於機器人旨在在現實世界中工作,正如人類需要身體和心臟才能運作一樣,機器人也需要某種硬體作為它們的“身體”。機器人的硬體是指任何用於幫助機器人以特定方式操作的物理部件。構建機器人所需的硬體多種多樣,取決於你要構建哪種型別的機器人。如果機器人是自動化的工廠工人,硬體可能涉及各種複雜的重型工業工具。另一方面,如果要構建人形機器人或太空探測機器人,硬體可以是肌肉絲或敏感鏡頭等。
機器人使用許多不同型別的硬體來使機器人能夠以特定方式運作。硬體是使機器人能夠以特定方式移動的部件。機器人使用電機來移動。有些機器人可能只有一個電機,只能以特定速度向前和向後移動。具有多個電機的機器人可以額外實現轉彎。透過使一個電機比另一個電機移動得更快,機器人可以在慢速電機方向轉彎。程式設計師可以對電機進行程式設計,使其以不同的速度移動,這使機器人能夠完成更多工作。
機器人還具有傳動機構,包括齒輪、鏈條、滑輪、皮帶和齒輪箱。齒輪和鏈條的主要目的是將旋轉運動從一個地方傳遞到另一個地方;在此過程中,還可以改變運動的速度或方向。這些傳動機構可以幫助機器人將壓力從一個地方轉移到另一個地方,以保持機器人的重量均勻。它們還可以幫助電機平穩移動。雖然滑輪和皮帶也具有與齒輪和鏈條相同的功能,但滑輪的形狀像輪子,邊緣有槽。
為了構建更智慧的機器人,還可以安裝感測器來賦予機器人更多生命力。例如,機器人可以安裝觸碰感測器,在程式設計後,當機器人撞到物體時,可以後退。機器人還可以使用聲音感測器播放聲音,以及聽到聲音並做出適當的反應。光感測器允許機器人在進入具有特定光照強度的空間時執行某些操作或任務。一個簡單的例子是程式設計機器人沿著一條線移動;透過感知線的黑暗程度,機器人可以沿著線移動而不會偏離路徑。機器人還可以使用超聲波感測器來感知它前面的物體或人,而不必實際接觸或撞擊它。這對於特別脆弱的機器人可能很有用;能夠避免接觸物體可以減輕構建中敏感區域的壓力。
機器人還需要某種電源。在樂高 Mindstorms NXT 機器人中,電源就是積木。它包含電池和所有埠,以便插入電機和感測器。如果沒有積木,機器人將無法移動或以任何方式執行。積木是機器人能量的主要來源。
機器人也可以與攝像頭一起使用。將攝像頭或麥克風連線到機器人可以讓使用者移動機器人並看到它正在去的地方,或者聽到周圍環境中發生的事情。這些額外的硬體包可以讓機器人變得更智慧和更有創意。
-
水生機器人。
-
小型漫遊者風格機器人。
-
軍用機器人。
-
玫瑰修剪機器人。
-
人形機器人。
-
機場的資訊機器人。
機器人控制的數學
[edit | edit source]機器人控制的數學是在機器人積木中進行的,使機器人能夠移動和運作。談論機器人控制的數學時,通常使用的一個術語是運動學。運動學是指描述物體和系統運動的力學,當它與機器人相關時,就是使機器人能夠移動的部件。運動學是指透過機械關節連線在一起的物體系統,該系統允許物體進行運動。一個例子是起重機;運動學允許起重機上下移動,並開啟和關閉以拾取或抓住物體。
事實上,這是機器人控制的數學,這意味著其中涉及科學原理,解釋了機器人如何使用其內部的關節或力學進行移動,以及什麼程式或程式碼賦予其移動能力。在運動學中,點的位移是運動的關鍵。為了確定點的位移,首先需要確定另外三件事:原點,也稱為參考點;距離,即機器人與原點的距離;以及參考點方向。

在機器人數學中,還有正運動學和逆運動學。首先,正運動學也稱為“直接運動學”,在正運動學中,唯一給定的資訊是每個關節的角度和每個連桿的長度。需要計算的是機器人工作空間中任何點的位移。對於逆運動學,則相反;給定每個關節的長度和工作空間中點的位移,需要計算每個關節的角度。
機器人程式語言
[edit | edit source]為了對機器人進行程式設計,可以使用許多語言。這取決於程式設計師的知識。許多不同的機器人套件或模型可能最適合某些程式語言,具體取決於程式的難度和機器人的構建。取決於使用者是否熟悉 C、C++、Java 或其他語言,某些程式可能更容易上手。
ROBOTC 是一種基於 C 語言的程式,它非常相容,尤其是與 NXT 機器人相容。它由卡內基梅隆大學的機器人學院建立。ROBOTC 非常容易學習,可以用於簡單的程式,也可以用於更復雜的程式。該程式語言包含一個偵錯程式,允許程式設計師檢視程式錯誤所在的位置;這使得編輯變得更容易。ROBOTC 允許程式設計師指定電機、計時器、感測器和變數。
與 ROBOTC 相似,Not Exactly C 或 NXC 也是一種基於 C 的程式。NXC 程式使用 Bricx 開發環境,該環境最初是為樂高的早期 RCX 機器人產品開發的,並且經過增強以支援 NXT。NXC 使用與 NXT-G 相同的韌體,NXT-G 是樂高 Mindstorms 機器人套件使用的基本圖形使用者介面。這使得程式設計師可以使用圖形環境和文字環境,而無需更改載入到機器人積木中的韌體。使用者可以同時在同一個積木中儲存 NXT-G 和 NXC 程式。NXC 允許使用整數變數;但是,浮點變數會導致問題。
另一種與 NXT 相容的程式語言是 ROBOLAB,它更像是程式的圖形表示,而不是文字行。ROBOLAB 在塔夫茨大學開發,最初用於第一代樂高 Mindstorms RCX 微處理器“積木”。與 NXC 語言一樣,它經過了廣泛的改進和修改,可以與 RCX 和第二代 NXT 一起使用。該程式通常只在使用者熟悉 ROBOLAB 平臺的情況下有用。如果程式設計師不熟悉它的工作原理,則可以使用其他更容易的語言。
Lejos 是一種基於 Java 的程式,因此,如果使用者更熟悉 Java 而不是 C,Lejos 是與機器人一起使用的很好語言。就像任何其他程式語言一樣,Lejos 程式是在 PC 上編寫和編譯的。然後,編譯後的程式被傳輸到 NXT 上執行。
Pblua 也是一種用於機器人的程式語言。Lua 是一種相對較新的基於文字的語言。它允許使用者幾乎完成與 ROBOTC 或 NXC 相同的操作;它只是使用者可以學習的另一種程式語言,以擴充套件其機器人程式語言知識。
避障
[edit | edit source]
避障是一種機器人訓練,它允許機器人根據其感官提供的資訊移動。當情況不可預測且行為未知,或場景處於動態變化狀態時,這些方法被用作一種不同且自然的替代方案。在這些型別的情況下,機器人的周圍環境可能一直在變化,因此,感測器接收到的資訊可用於發現已進行的變化,以便機器人可以繼續適應和移動。
在該主題上進行的一些研究已經確定了這種訓練的兩個主要問題。其中一個是將兩輛車置於有問題的事件中;在那裡,它表明所使用的技術在適應當前情況方面能力有限。另一個造成重大問題的原因是機器人理解車輛特性在避障模式中的作用。這些特性包括動力學、形狀和運動學。
大多數與避障相關的技術都沒有考慮車輛的運動學和形狀約束。正在研究車輛的人可能假設車輛具有無限的方向能力,並在發現車輛無法執行他們認為它可以做的一切時感到失望。一個貢獻是能夠將形狀和運動學一起考慮的框架。這種避障過程是透過從避障方法中抽象約束來完成的。
任務規劃和導航
[edit | edit source]
任務規劃是指透過執行某些較小的任務來實現最終目標,這需要學習機器人高效和正確地執行基本操作(如導航)的空間要求。由於現實工作環境中對機器人環境的要求,機器人任務規劃應高效執行。
為了讓機器人能夠適當地計劃任務,移動機器人通常完全依賴於空間資訊。它們可以透過感測器同步來獲取和理解外部環境的資訊,並利用簡單的領域知識,比如物體和地點的標籤。一些機器人可能儲存了關於配置空間的資訊,以便確定一個合適的路徑穿越配置空間,這樣它們就可以繞過障礙物。一些機器人依賴於感測器或機器人程式碼中的程式規則來選擇移動時的合適路線。還有一些神經網路系統允許機器人透過實驗來學習。如果機器人撞到一個物體,迫使它轉彎,機器人將從此知道,為了避免這個特定的障礙物,它不應該再走那條路了。此外,還有一些演算法可以推匯出機器人應該採取的路徑,以最大化與特定障礙物的距離。
為了讓機器人成功地執行任務計劃和導航,機器人必須在其所有部分之間,例如感測器,建立有組織的通訊。機器人的每個元件都會顯著影響效能。機器人需要能夠在沒有碰撞的情況下執行,並知道哪些安全條件是必要的;這包括確保機器人不會遇到不安全的溫度或燈光,例如。
為了讓機器人安全導航,機器人必須意識到自己相對於某個位置。能夠避免撞到有害物體或從樓梯上掉下來對於機器人成功完成任務計劃至關重要。機器人的程式應該在程式碼中包含這一點,無論是使用感測器來感知世界還是使用神經網路。根據這些資訊,機器人可以根據其速度或在不同方向上的轉彎來進行相應的計劃。機器人還應該能夠在其任務期間創造連續的運動,以便順利地實現目標。

機器人視覺引導領域是一個發展非常迅速的領域。憑藉高階技術的優勢,它帶來了節省、可靠性、生產力和安全性。機器人視覺涉及識別和導航。視覺應用通常用於找到零件並將其定位以進行檢查或機器人操作,然後再執行其他應用。有時,單個機器人站可以透過視覺引導機器人來取代多個機械工具。
當機器人需要視覺能力時,它需要將校準、溫度、軟體、攝像頭和演算法結合起來才能工作。機器人視覺系統校準取決於應用。這些應用範圍從簡單的引導應用到需要來自多個感測器資料的更復雜應用。演算法始終在不斷改進,允許進行更高水平和更復雜的檢測。現在有些機器人具有碰撞檢測功能,該功能可以在機器人即將撞到物體時通知系統。這種能力允許機器人與其他機器人一起在有障礙物的地方工作,而不必擔心發生重大碰撞。當機器人檢測到其路徑上的其他物體限制其運動時,它會停止移動一段時間。
機器人視覺簡化了流程,使其更加直接,從而降低了成本。當使用機器人視覺時,夾具和硬工具都被消除了。可以識別產品,並且可以執行應用而無需固定。機械和人工部門都有節省。由於機器人現在可以自行處理零件的裝載,因此不需要人工。
在決定合適的機器人引導系統型別時,可以採取一些步驟。應該與整合商合作,並牢記一些事項。必須確保機器人視覺能夠連線到機器人系統及其應用。如果出現斷開連線,則可能會損壞機器人或產品,並會導致質量和生產損失。還必須確保機器人所處的環境是受控的,以便機器人視覺保持清醒和敏銳。最後,必須考慮環境中的所有因素,如照明、空氣中的化學物質和顏色變化,因為它們會影響機器人在視覺中看到的內容。
視覺系統用於機器人技術中,以組織程式來處理影像並識別物體。為了使這能夠正常工作並允許機器人系統在環境中達到所需的水平,視覺系統應透過改變和校正管理系統多個處理階段的限制來適應眾多工作環境。基於知識的視覺系統必須決定將哪些視覺模組連線在一起,並且它必須是影像採集的電源。用於此任務的基於知識的視覺系統可以分析明確提供的知識。
對於基於知識的視覺系統,必須向機器人提供物體的引數,例如特定物體的曲線或角。根據這些資訊,機器人可以生成某些控制器。基於機器人提供的資訊以及它自己計算的資訊,基於知識的視覺系統可以建立一個顯示物體的模型,該模型可以由使用者修改。
基於知識的視覺系統負責調整它遇到的引數,透過更改攝像頭的快門速度或可能調整燈光設定來獲取影像,並觀察系統的配置以在必要時進行更改。基於知識的視覺系統可能會遇到不同型別的輸入資料,因此它必須能夠相應地調整以適應執行時可能遇到的更改。透過其藍圖,基於知識的視覺系統能夠識別有關世界周圍環境的新資訊,並相應地改變其行為。
但是,基於知識的視覺系統可能使用起來很昂貴。必須收集知識(如影像)可能既費錢又費時。基於知識的視覺系統仍然應該進行研究和更改以在動態的世界環境中更好地工作。
人工智慧是機器人領域中最令人興奮的領域之一。在機器人領域的爭議中,人工智慧總是位居榜首。雖然每個人都同意機器人有能力在裝配線上工作,但並非所有人都同意機器人能夠獨立思考。人工智慧與機器人的定義一樣難。終極人工智慧將是一臺能夠像人類一樣思考的機器;它將是人類思維過程的再現。憑藉這些能力,機器人將能夠學習幾乎所有東西;它將能夠創造自己的想法,學習如何使用人類語言,並進行推理。目前,機器人領域還沒有達到這種人工智慧水平,但它在有限的人工智慧領域取得了進展。
計算機已經能夠在一定程度上解決問題,因為人工智慧解決問題的基本理念非常簡單。複雜的在於執行。首先,計算機或機器人必須透過人類告訴它或透過它自己的感測器來收集情況的事實。然後,計算機將資訊與儲存的資料進行比較,然後決定資訊意味著什麼。然後,計算機會執行它可以採取的不同型別的動作,並根據它收集的資訊決定哪個動作最合適。它只能夠解決給定的問題,沒有任何分析能力。
人工智慧的真正挑戰在於試圖理解自然智慧是如何運作的。由於科學家沒有一個可靠的模型可以借鑑,因此開發人工智慧不像建造人工心臟。科學家知道大腦包含數十億個神經元,並且不同神經元之間的電連線讓人們能夠思考和學習。他們不知道的是,這些連線如何加起來產生更高的推理能力,甚至低階運算,正是這種複雜的電路難以理解。