前言
這本書,講機器人作業系統(ROS),更講機器人。
?ROS 緣起
2007 年,一群懷揣夢想的年輕人,正在史丹佛大學的機器人實驗室裡進行一場腦力激盪:如果可以開發一款硬體足夠強大的機器人,再搭配足夠好用的軟體系統,那麼在此之上開發的應用功能就可以被快速分享了。舉例來說,我做的自主導航功能你可以用,你做的物體抓取功能我也可以用,只需開發一個標準化的軟硬體平臺,在此之上的應用就會逐漸流行,將會打造機器人領域的全新「爆品」。類似的原理造就了以電腦為平臺的電腦時代,和以手機為平臺的行動網際網路時代,下一個以機器人為核心的智慧型機器人時代,是否也會遵循這樣的邏輯?
將近20 年過去了,以「事後諸葛亮」的角度來看,當時那群年輕人花重金打造的服務機器人並沒有走進各家各戶。機器人不像電腦或手機,它需要和外界環境產生多種多樣的互動,硬體形態非常難以統一,小到奈米醫療機器人、家用娛樂機器人,大到智慧駕駛汽車、人形機器人,都是未來會並存的機器人形態。不過,當年遵循「提高機器人軟體重複使用率」思想開發的機器人作業系統——ROS,在2010 年開放原始碼之後快速發展,助推過去十幾年機器人行業的繁榮,逐漸成為智慧型機器人開發的主流標準。
當然,ROS 的快速發展也遠超那群年輕人的預期,本來只是為一款家用服務機器人設計的系統,被逐漸用於巡檢、運輸、農業等許多領域。需求越來越多,問題也越來越多,為了打造一款能夠成為通用機器人標準化軟體平臺的「作業系統」,ROS 2 在2014 年問世,之後推出多個測試版本,並於2017 年年底發佈第一個正式版本。截至本書定稿時,ROS 2 全新的穩定版本Jazzy Jalisco 發佈,這也代表著ROS 2 走向成熟。
?智慧型機器人時代
在ROS 2 快速迭代的同時,人工智慧和機器人行業也發生了天翻地覆的變化。ChatGPT 如一聲驚雷,掀開了人工智慧的大模型時代。相比過去的深度學習,大模型有更大的模型規模,就像一個有更多神經元的大腦一樣,更加聰明、穩定。在ChatGPT 之後,全球湧現了數百種大模型,這些大模型快速與各行各業結合。在機器人領域,原本遭受諸多詬病的智慧化問題,也因為大模型的出現,而擁有了新的可能。
同時,機器人正在從工廠走向生活,餐廳裡有送餐機器人,酒店裡有送物機器人,家裡有掃地機器人,路面上有自動駕駛汽車,再加上已然成為熱點的人形機器人,機器人行業從底層硬體,到軟體系統,再到智慧化應用,正在逐漸成熟,智慧型機器人時代的序幕已經緩緩拉開。
我從2008 年開始開發機器人,2011 年接觸ROS,2012 年創辦了「古月居」機器人社區,2022 年開始打造RDK 機器人開發者套件,親眼見證了ROS 與機器人行業的相伴快速成長,也有幸和許多夥伴一起助推ROS 在國內的普及應用。如今,「古月居」已經成為匯聚了200 多萬名開發者的機器人社區,RDK 也正成為智慧型機器人開發套件的首選,一個全新的智慧型機器人時代正在向大家招手。
?本書特色和內容
本書匯聚了我過去十幾年的機器人開發經驗,雖然將ROS 作為貫穿全書的主線,但更重要的是告訴所有讀者:ROS 既是開發機器人的軟體平臺,也是軟體工具,在開發機器人時,不僅要會用這個工具,還要懂機器人開發的諸多原理。所以,本書不僅會詳細講解ROS 2 的基本概念,更會介紹如何將這些概念應用在機器人開發中,同時指導讀者從零建構一個完整的機器人系統。
本書共有9 章,分為三部分。
第一部分(第1~3 章)介紹ROS 2 基礎原理:主要講解ROS 2 的發展歷程、核心原理和元件工具,提供大量的程式設計和使用範例,為讀者全面展示ROS2 的基礎原理和功能。
第二部分(第4~6 章)介紹ROS 2 機器人設計:主要講解如何使用ROS 2設計一個模擬機器人和實物機器人,有條件的讀者甚至可以根據書中內容自己做一個機器人。
第三部分(第7~9 章)介紹ROS 2 機器人應用:主要講解使用ROS 2 開發機器人視覺辨識、地圖建構和自主導航等許多應用的方法,讓機器人不僅動得了,還能看懂和理解周圍的環境,並且產生進一步的互動運動。
本書採用最新穩定版本ROS 2 系統和全新一代的Gazebo 機器人模擬平臺,絕大部分功能和原始程式可以在單獨的電腦和Gazebo 模擬平臺上運行。同時,本書介紹實物機器人的架設方法,並且在實物機器人上實現相應的功能。配套原始程式都加入了中文註釋,同時針對核心內容提供C++ 和Python 兩個版本,方便讀者理解。
所以,本書不僅適合希望了解、學習、應用ROS 2 的機器人初學者,也適合有一定經驗的機器人開發工程師,同時可以作為資深機器人開發者的參考手冊。
?致謝
本書的出版離不開許多「貴人」的幫助。感謝我的妻子薛先茹,謝謝你陪我輾轉多地並一直無條件支持我;感謝兩個對世界充滿好奇的小朋友胡敬然、胡澤然,是你們給了我前進的動力和思考的源泉;感謝電子工業出版社的支持,鄭柳潔編輯為本書提供了很多寶貴建議,並組織推動本書順利出版,張晶老師為本書的編排付出了大量心血;感謝本書的另一位作者李喬龍,配合我完成了全書的寫作和修正工作;感謝當年史丹佛那群打造ROS 的年輕人:Morgan Quigley、Brian Gerkey、Tully Foote 等,是你們大膽的想法和嘗試,帶來了機器人開發標準化的可能;感謝ROS 機器人開發之路上一路同行的夥伴,我們都是智慧型機器人時代的創造者。要感謝的人太多,無法一一列舉,但是我都銘記在心。
機器人系統錯綜複雜,ROS 版本變化繁多,書中難免有不足和錯誤之處,歡迎讀者朋友批評指正,相關問題都可以在「古月居」機器人社區交流。
最後分享胡適先生的一句名言,願你我共勉:怕什麼真理無窮,進一寸有一寸的歡喜。
胡春旭