1. 程式人生 > >ROS2探索總結(一)——ROS成長記

ROS2探索總結(一)——ROS成長記

轉載自古月居
原文連結:http://www.guyuehome.com/772 ROS剛剛度過了9歲生日,這九年以來,無論國外還是國內,越來越多機器人開發者或者機構選擇ROS,同時也為社群貢獻了更多更優秀的程式碼,從下邊這張圖我們可以看到,這種成長几乎是指數級的。 Image[6]1[6]       2007年11月,Willow Garage公司孕育許久的一個寶寶終於誕生了,並且取名叫做ROS,Willow Garage 專門為他設計了一個機器人玩具——PR2,沒想到,ROS寶寶悟性極強,很快就學會了怎麼玩這個PR2,
Willow Garage 發現ROS寶寶潛力很大,就
繼續教ROS寶寶學習更多通用機器人軟體包的知識,讓他學會了怎麼去玩更多的機器人,就算遇到一個新的機器人,也可以將以前學到的知識運用到上邊,繼續愉快的玩起來。但是那個時代,畢竟ROS寶寶可以玩、會玩的機器人少,主要就是玩PR2,於是迫於侷限,也存在一些性格上的不足:
  1. 只能同時玩一個機器人,多機器人就不會玩了。
  2. 腦力有限,只能依靠自身的資源做心算,如果要玩的功能太複雜,就心有餘而力不足了。
  3. 腦子轉的慢,沒有實時性,有的時候會算不過來。
  4. 神經系統不發達 ,自身的各個關節部分都需要保持良好的連線,各部分通訊資料量有點大。
  5. 還只能在實驗室或者研究機構裡託管,不能讓他帶著機器人和大眾玩。
Image(1)[6]        但是  Willow Garage相信自己的孩子,並且把該上小學的ROS放到了社群這個學校裡,接收世界各地開發者老師的培養和教育,這也讓ROS接觸到了眾多資源,激發了他內心強大的學習慾望,並且一路從小學到初中到高中,成績越來越好,最後以名列前茅的成績考入了理想的大學        在這段成長最重要的時光裡,我們確實可以看到,ROS已經不是當年的寶寶,也不僅僅會玩PR2、TurtleBot等機器人,在輪式機器人、類人機器人、工業機械臂、自動駕駛汽車、探索飛船、救援車輛等領域,都已經可以看到這位ROS小朋友勤奮努力的身影。而且他已經不是當年那個會打碎花瓶的熊孩子,他逐漸成長為一個教養有佳的翩翩少年,他帶著不少服務機器人走進了人類的日常生活,同時和農業機器人、工業機器人一起,為人類的生產生活貢獻著力量,最酷的是,NASA的叔叔阿姨還讓他搭乘 
Robonaut 2去了國際空間站,曾經那些欺負他的小朋友( MSRDS等),不僅沒有打倒他,還讓他學會了吸星大法的內功,現在在機器人領域,幾乎無人能敵。
Image(2)[6]       但是ROS並沒有驕傲,在上大學裡,他發現了一個全新的世界。那裡有很多課程需要他去學習,他第一次接觸到那麼多從來沒聽說過的新技術,而這些技術都是他的 基礎課程:
  1. Zeroconf: 零配置網路服務規範, 用於自動生成可用IP地址的網路技術,不需要額外的手動配置和專屬的配置伺服器。
  2. Protocol Buffers: Google公司開發的一種資料描述語言,類似於XML能夠將結構化資料序列化,可用於資料儲存、通訊協議等方面, 它不依賴於語言和平臺並且可擴充套件性極強。
  3. ZeroMQ (and the other MQs): 一個簡單好用的傳輸層,像框架一樣的一個socket library,他使得Socket程式設計更加簡單、簡潔和效能更高。
  4. Redis: 一個高效能的key-value資料庫
  5. WebSockets:HTML5開始提供的一種瀏覽器與伺服器間進行全雙工通訊的網路技術。
  6. DDS (Data Distribution Service): 新一代分散式實時通訊中介軟體技術規範,DDS採用釋出/訂閱體系架構,強調以資料為中心,提供豐富的QoS服務質量策略,能保障資料進行實時、高效、靈活地分發,可滿足各種分散式實時通訊應用需求。
H_ROS3[6]    在學習以上這些基礎技術課程的基礎上,ROS需要靈活應用這些技能,並且在高年級的學習中修煉綜合能力:
  1. 多機器人控制。這個能力厲害了,以後可以同時駕馭多個機器人,別提多炫酷了,必須好好修煉,說不定還能靠此技能吸引異性呢。
  2. 多平臺應用支援。這個能力要求ROS要學會大丈夫能屈能伸,不僅要能在效能強勁的計算機上跑,還要能在資源有限的嵌入式平臺上跑。
  3. 實時應用支援。這個需要好好修煉內功,讓自己完善時間管理能力,說幾點起就幾點起,說幾時完成任務就幾時完成任務。
  4. 增強網路通訊能力。這個能力正是ROS所需要的,原來上100樓,走到50樓還得緩衝一下,這門課就是教ROS如何上100樓大氣不喘的,就算樓要倒,還能飛起來。
  5. 產品應用。這個能力要求ROS具備更強的可靠性,以後就可以帶著更多機器人去到更多普通人的家裡玩了。
  6. 靈活構建。這是個學習能力,要求ROS學習更多的新特性,無論面對多麼複雜的機器人系統,都可以輕鬆應對。
     這麼多的課程需要學習,這麼多的能力需要修煉,這個大學生涯對於ROS可不輕鬆了。
     ROS就像一個孩子,在加速成長的過程中,也需要不斷適應外部壞境的發展,吸收更多與時俱進的技術,從而使自己更加優秀強壯。相信等到他畢業之時,必將是一個全新的自我,我們可以使用全新的API與他交流,他也會變得更加優秀,不僅依然會玩曾經的機器人,還可以玩好更多機器人,甚至可以玩機器人領域之外的東東。他並不會在原有基礎上查漏補缺,而是脫胎換骨的涅磐重生,從少年成長為青年,更加彭勃也更加好強,帶著多年所學,立志闖出大好未來 。        所以,他也應該有一個全新的名字——ROS 2.0。 Image(3)[6]

注:       ROS探索總結系列的文章從2013年開始發表,時過境遷,也要跟上技術進步的步伐。2016年12月19日,ROS2.0第一個beta版本正式釋出,給ROS開發者又來了一劑強心針,我們就從此開始,從這篇文章開始,走近ROS2.0的時代,繼續探索總結,至於什麼時候能夠“走進”,就讓我們一起拭目以待吧。
參考資料: Why ros2:  http://design.ros2.org/articles/why_ros2.html ROS和ROS2.0現在到底該學習哪個呢?:https://zhuanlan.zhihu.com/p/24391444