Preface機器人新兵訓練營警示作為機器人程序員,我們應確保所從事的編程對于公眾和機器人自身都是安全的,這是我們的特殊責任。當對機器人進行編程時,首先要考慮機器人與人類、動物、其他機器人或資產互動時的安全。這對于所有類型機器人的編程都是適用的,尤其是可編程自主機器人,即本書所介紹的機器人類型。本書所涉及的機器人命令、指令、程序和軟件僅用于展示,就安全性而言其不適合用于與人類、動物、其他機器人的互動。
對機器人安全的深入研究超出了本書的范圍。雖然本書所給出的機器人示例和應用經過測試可以確保其正確性和恰當性,但是不能保證其中的命令、指令、程序和軟件沒有任何瑕疵和錯誤,與任何適售性的特定標準一致,或滿足針對任何特別應用的要求。
機器人代碼段、程序和示例僅用于闡述,在任何情形下當它們的使用會導致人身傷害、造成財產或時間損失,以及產生理念沖突時,都不應該再繼續使用。對于因本書中呈現或在相應支持網站上的機器人、命令、指令、機器人程序和示例的使用所帶來的直接或間接損害,作者和出版商不負任何責任。
機器人編程新兵訓練營歡迎閱讀本書。機器人編程“新兵訓練營”將確保你著手開始前掌握所有必備的信息。我們已經構建了很多類型的機器人并對它們進行編程,從簡單的單用途機器人到先進的多功能自主機器人組群,因而發現這個短期機器人編程訓練營對于不熟悉機器人編程或想要學習新技術進行機器人編程的人來說是不可缺少的。
準備、設置、走起!無需繁瑣接線圖I1給出了機器人控制和操作的兩種基本分類。
圖I1機器人操作的兩種基本分類遙控機器人是由一名操作員用某種遠程控制裝置或木偶模式(puppetmode)遠程控制機器人的操作。有些遠程控制要求一條連線(某種類型的線)以物理方式連接于機器人,而其他遠程控制類型則是無線的(如無線電控制或紅外控制)。
自主機器人是一類不需要人類操作員控制的機器人。它們能自主地訪問和執行一組指令,不需要遠程控制的干預或中斷。
本書主要關注自主機器人操作和編程。雖然我們常討論、解釋、比較遙控機器人和自主機器人,但是本書將重點介紹對能夠自主運行和執行所分配任務的機器人進行編程的基本概念。
如第9章所述,為滿足運行策略而進行不同混合并匹配,存在兩種類型機器人控制或操作的混合物。我們將會介紹混合并匹配不同的機器人控制策略的技術。
警示雖然本書并未假定讀者具有機器人編程的經驗,但是全書假定讀者在標準編程語言(如Java或C++)方面具有一定基礎,熟悉基本的編程技巧。同時,本書并非以Java或C++呈現最終的機器人程序,而是先以圖或通俗易懂的語言給出基本的機器人指令技巧和概念。本書將引導讀者熟悉一些程序用于設計、規劃和分析,比如機器人場景圖形規劃(RobotScenarioVisualPlanning,RSVP)和實際環境中的機器人效能熵(RobotEffectivenessQuotientUsedinRealEnvironments,REQUIRE)。
注釋本書所有機器人指令、命令和程序已經在基于ARM7、ARM9微控制器的機器人以及流行并廣泛使用的LEGONXT、EV3機器人上進行了測試。本書中使用的所有其他機器人軟件也均在MacOSX和Linux環境下進行了測試與運行。
新兵訓練營基礎在試圖對機器人進行編程前一定要回答五個基本問題:
1.?機器人屬于哪種類型?2.?機器人將要做什么?3.?機器人將要在哪里執行任務?4.?機器人如何執行任務?5.?如何對機器人進行編程?許多新手和準機器人程序員不能回答這些基本問題,導致機器人項目不能成功實現。在令任意類型的機器人執行所分配任務的過程中,回答這些基本問題是第一步。本書演示了如何通過回答這些問題來形成一個分步的方法,從而成功指導一個機器人自主地執行一系列任務。
本書介紹的機器人編程核心技巧本書中,我們將在機器人新兵訓練營中講解的基本技巧如表I1所示。
表I1機器人新兵訓練營技能表技巧描述機器人運動規劃與編程手臂運動夾持器編程末端作用器運動機器人導航利用不同類型的傳感器對機器人編程紅外傳感器超聲波傳感器觸碰傳感器光傳感器射頻識別傳感器攝像機傳感器溫度傳感器聲音傳感器分析傳感器使用電動機機器人導航中使用的電動機機器人手臂、夾持器和末端作用器中使用的電動機傳感器定位中使用的電動機決策機器人動作選擇機器人方向選擇機器人路徑選擇指令轉換將英文指令和命令轉換成一種編程語言或一種機器人可以處理的指令形式上述技巧是讓機器人執行幾乎任何所分配任務必需的核心技巧。對上述五個方面做出標注是因為它們代表了夯實機器人編程基石的第二步。
基本的通用機器人轉換器我們將在本書中使用兩個助手以一種易于理解和快速參考的形式呈現機器人程序和常見的機器人編程問題。第一個助手,基本通用機器人轉換器(BasicUniversalRobotTranslator,BURT),用于呈現本書中所有的代碼段、命令和機器人程序。BURT給出了每個代碼段、命令或機器人程序的兩個版本:
純英文版本機器人語言版本BURT用于將一組簡單且易于理解的英文指令轉換成相應的機