本書是關于機器人學和機器視覺的實用參考書, 第一部分“基礎知識”(第2章和第3章)介紹機器人及其操作對象的位置和姿態描述,以及機器人路徑和運動的表示方法;第二部分“移動機器人”(第4章至第6章)介紹其基本運動控制模式及其導航和定位方法;第三部分“臂型機器人”(第7章至第9章)介紹其運動學、動力學和控制方面的知識;第四部分“計算機視覺”(第10章至第14章)包括光照與色彩,圖像形成和處理技術,圖像特征提取,以及基于多幅圖像的立體視覺技術;第五部分“機器人學、 視學與控制”(第15章和第16章)分別討論基于位置和基于圖像的視覺伺服及更先進的混合視覺伺服方法。
本書將機器人學與機器視覺知識有機結合,給出了實例算法和程序。作者有完備的代碼可下載,用于驗證書中知識點和實例,注重如何利用視覺信息控制機器人的運動。
只要會使用MATLAB ,就能通過本書學習和掌握機器人與機器人視覺的基礎知識和控制算法。本書使用的MATLAB“機器人學工具箱”(Robotics Toolbox)和“機器視覺工具箱”(Machine Vision Toolbox)可從 www.petercorke.com/RVC 下載。
譯 者 序
從世界上第一臺工業機器人誕生至今,機器人技術已經有了長足的發展。智能機器人是現今機器人領域研究的熱點,其特點之一是能夠融合多種傳感器的信息做出分析、 判斷和決策,以適應復雜的環境和任務。隨著硬件成本的降低和計算機性能的提升,視覺傳感器已逐漸成為機器人常用的感知器件。與其他種類傳感器相比,視覺傳感器能提供更加豐富和全面的信息,因而必將成為智能機器人的主要傳感器。
目前,國內外有關機器人技術和機器視覺技術的專著很多,但大多是兩種技術單獨論述。即使有的機器人專著中包含了視覺技術,也是作為機器人傳感器的一種簡要介紹。本書是將機器人學與機器視覺知識有機結合的產物。雖然書中闡述了機器人學和機器視覺各自的基礎知識,但更注重如何利用視覺信息控制機器人的運動,將兩者融合運用。本書側重知識的實用性,圖片說明及應用實例貫穿全書,很少有理論方程的長篇大論。即使在講述理論基礎知識的同時,也穿插了很多實例,可以讓讀者對學到的知識點及時進行驗證,使讀者不斷獲得掌握知識的滿足感,增加學習興趣。另外,本書給出的實例算法和程序都是基于目前國內大專院校和研究所廣泛使用的數學仿真軟件包MATLAB。該軟件包功能強大,而且有很多開源的工具箱,其中本書主要使用的“機器人學工具箱”和“機器視覺工具箱”就是作者自己編寫的。讀者可以利用MATLAB中現成的函數、 模塊及工具箱完成機器人的運動和控制仿真,從而省去大量編程時間,便于快速驗證和掌握所學的知識,也為下一步用其他語言編程打下了基礎。
全書共分為5部分。第一部分是機器人學基礎(第2章和第3章),介紹了機器人及其操作對象的位置和姿態表達,以及機器人路徑和運動的表示方法; 第二部分和第三部分介紹了兩類典型的機器人,其中第二部分(第4章至第6章)是關于移動機器人的,介紹了其基本運動控制模式及其導航和定位方法; 第三部分(第7章至第9章)針對關節式機械臂,介紹了其運動學、 動力學和控制方面的知識; 第四部分(第10章至第14章)涉及了機器視覺技術的基礎知識,包括光照與色彩、 圖像形成、 圖像處理、 圖像特征提取,以及立體視覺技術; 第五部分(第15章和第16章)介紹了基于視覺的機器人控制方法,包括基于位置的視覺伺服和基于圖像的視覺伺服,以及更先進的混合視覺伺服方法。
本書可以作為學習機器人技術和視覺控制的高年級本科生和研究生的教輔書籍。現有的專業教材一般理論性較強,知識比較抽象,難以理解。同時,要在實際機器人上開展大量實驗成本既高,也耗時。本書中大量的仿真實驗實例會幫助學生更容易和及時地驗證并掌握相關知識。該書也可以作為從事機器人技術研究和開發人員的技術參考書,可以幫助他們在機器人投入實際制作前對機器人的運動和控制進行仿真,驗證其設計的合理性和有效性。
參加本書翻譯工作的有劉榮(翻譯第1章、 第6章、 第15章和第16章及附錄)、 薛彤(翻譯第2章和第3章)、 陳銳(翻譯第4章和第5章)、 徐江平(翻譯第7章至第9章)、 李揚(翻譯第10章至第12章)和翟士民(翻譯第13章和第14章)。全書由劉榮負責統稿和審校。鑒于譯者水平有限,難免有錯誤和不妥之處,敬請廣大讀者批評指正。
序 言
很久以前,我收到一本很厚的博士論文讓我評審。論文的主題是關于機器人視覺控制的,作者是彼得?科克(Peter Corke)。以下是我對該論文評語的一段摘錄: 這是一篇杰作,無論在論文構思還是實際內容上都是出類拔萃的,其質量之高堪稱博士生論文的表率。
二十多年來,彼得?科克一直致力于機器人與視覺二者的集成技術研究和探索,并且取得了很多突出的成果。現在,他的這些成果終于在本書中與大家見面了。在這本新書中,不僅有前沿理論,還有應用實例,它包含了作者多年來在井下機器人、 無人飛行器、 水下機器人、 野外作業機器人等領域探索中所取得的富有特色的基礎和應用研究成果。
雖然現在已有很多關于機器人以及視覺的專著,但很少有像這本書一樣在兩種技術的集成、 剖析以及例證方面做得如此出色的。書中對有關技術的探討和論述既深入透徹,又通俗易懂。對于機器人領域正在或將要從事這方面研究的人員而言,這是一本絕對有價值的參考書。本書涉及的技術比較全面,對于要實現機器人視覺任務的幾乎每個方面都有涵蓋與分析,這一點讀者可以從書中對MATLAB工具箱(Toolbox)軟件的有效使用中體會到。
本書內容按讀者接受相關知識的先后邏輯進行安排,從移動機器人基礎到機器人導航、 定位,以及機械臂的運動學、 動力學和關節控制,再到攝像機建模、 圖像處理、 特征提取以及多圖像幾何學。最后,將以上技術知識通過集成到視覺伺服系統中進行更廣泛的探討。在上述過程中,作者展示了如何利用強有力的數字工具和有效軟件對復雜問題進行分解并最后解決的方法。
Springer Tracts in Advanced Robotics(STAR, 施普林格先進機器人技術集)系列叢書致力于將機器人學領域的最新研究進展引入學術界,內容選擇是基于它們的重要性和研究質量。出版該系列叢書的目的是要通過對機器人學一些關鍵技術開發進展的廣泛而及時的傳播,推動學術界研究人員之間的交流與合作,并為該技術的進一步發展做出貢獻。
彼得?科克的這本專著以其跨學科性、 縝密的構思和精彩的內容為STAR系列叢書增色良多。
歐薩馬?卡蒂布(Oussama Khatib)
加州,斯坦福
2011年7月
前 言
告訴我,我會忘記。
給我看,我可能記住。
讓我參與其中,我才會理解。
——中國諺語
機器人和機器視覺的研究都涉及到用算法來處理大量數據。這些數據來源于各種傳感器,如測量車輪轉速的、 測量機械臂關節轉角的、 或者測量機器人環境觀察圖像中各像素亮度的。對于很多的機器人應用,需要實時處理的數據量非常大,就視覺處理而言,數據會達到每秒幾十到幾百兆字節的量級。
過去,機器人和機器視覺領域中的許多技術進步都是由于數據處理方法的改進而推動的,并且這種促進作用仍然繼續著。這些數據處理方法的改進一方面體現在大量新的并且更有效的算法的涌現,另一方面則是摩爾定律下的機器本身計算能力的大幅提升。回想20世紀80年代中我踏入機器人和視覺研究領域時,IBM公司的個人計算機才剛推出,它用的僅僅是主頻477 MHz的16位處理器,以及16 KB的內存(擴展后才256 KB)。經過25年后,計算機的計算能力已經翻番了16次,也就是增長了大約65 000倍。在20世紀80年代后期,能夠實時進行處理圖像的系統需要19英寸寬的機柜才能裝下(見圖0.1)。而今天,一塊小小的高性能處理芯片就能勝過那時的圖像處理能力。
圖0.1 很久以前,要完成基于視覺的機器人控制需要很多設備。該圖片是
1992年作者在實驗室里和一大堆圖像處理與機器人控制的設備在一起
在機器人和機器視覺近一段時間的發展歷程中,研究者們開發出了大量的各種算法,它們是學術界通過技術積累獲得的重要成就。然而這些算法不僅數量多,而且都比較復雜,對于剛涉足該領域的人來說是不小的障礙。要想從這么多算法中進行選擇,首當其沖的問題就是:
為解決這個特定問題,哪一個才是最佳算法?
一種策略是去嘗試多種不同的算法,看哪種算法解決問題的效果最好。但這樣做又帶來新的問題:
我怎樣才能不用花很長時間去編輯和調試程序,就能評判出原始論文中的算法是否適合我自己的數據?
有兩種解決方案可以幫助我們。一種是利用通用的數學工具軟件,它們能簡化算法編程。這類工具中包括商用軟件包,如MATLAB、 Mathematica和MathCad,也有開源軟件包,如SciLab, Octave和PyLab。所有這些工具軟件包都能輕松自然地處理向量和矩陣,也能繪制出漂亮和復雜的圖形,同時具有交互式的編程環境。另一種是開源軟件模塊。很多學者都把自己開發的算法以開源形式共享出來,有的是用上面提到的通用數學軟件包編寫的,有的則是用目前主流的C、 C++和Java語言編寫的。
我本人15來年一直活躍在開源軟件的圈子,曾經管理過兩個開源的MATLAB工具箱軟件: 一個是機器人的,另一個是機器視覺的。這兩個工具箱可以追述到我做博士論文時期,并且從那時起它們的功能一直在擴展,還隨著MATLAB軟件語言的改進不斷提升(這一點在當時非常重要)。機器人工具箱還被翻譯成多種其他編程語言,如Python, SciLab 和LabView。
這兩個工具箱有一些很重要的特征。第一,它們已經很長時間被很多人使用以解決各種不同的問題,因此代碼的可信度較高。在檢驗新的算法,亦或舊的相同算法要用其他語言編寫或者在新環境中執行時,工具箱起到“黃金標準”的作用。
第二,這些工具箱能讓使用者接