ROS高效入门第一章 -- ROS历史与现状
ROS介紹--歷史與現狀
- 1 資料
- 2 讀后整理
- 2.1 此岸與彼岸
- 2.2 柳樹街68號
- 2.3 機器人畢業舞會,PR2的締造者,ROS的起源,ROS被OSRF托管,ROS開發者大會
- 2.4 ROS烏龜的起源,烏龜機器人,烏龜設計師,ROS的名字和烏龜幫,ROS第一只烏龜
- 2.5 ROS導航與hiDOF,ROS之可視化rviz
- 2.6 ROS阿C龜-諾亞方龜,ROS之物體操控manipulation
- 2.7 ROS飛天金剛龜與視覺傳感器
- 2.8 ROS之OpenCV,ROS之KDL
- 2.9 ROS烏龜幫,ROS與Windows,ROS之Gazebo,ROS之編譯系統,ROS之皆大歡喜(Player與Stage),ROS驅動DARPA挑戰賽,ROS之MoveIt!
- 2.10 TurtleBot的故事,TurtleBot背后的女人,TurtleBot背后的男人,TurtleBot的演變,ROS之IPI,秘密項目PlatformBot愛與恨,從非盈利組織OSRF到企業化的OSRC,實習生計劃,柳樹車庫系繁花盛葉
- 3 總結
1 資料
(1)本文資料主要來自《ROS史話36篇》,在古月居連載,這篇文章很好地梳理了ROS乃至機器人產業的發展歷史,可以讓我們很快了解到ROS和機器人發展的方方面面,包括技術,商業場景等等。
(2)ROS史話36篇:https://www.guyuehome.com/Blog/index/_cate/ros-history/category/13/p/2
2 讀后整理
2.1 此岸與彼岸
(1)主要介紹美國東西海岸研究機器人的幾個重點大學。文中提到了斯坦福和硅谷,就是下面這片地方。
(2)文中特別提到了世界知名的賓夕法尼亞大學機器人實驗室(GRASP:General Robotics, Automation, Sensing and Perception)負責人維杰·古瑪(Vijay Kumar)在 TED 的演講,這里是視頻鏈接:https://www.ted.com/talks/vijay_kumar_robots_that_fly_and_cooperate
2.2 柳樹街68號
(1)硅谷有個柳樹路(Willow Road),有很多知名公司,而ROS就起源于柳樹街68號的“柳樹車庫”公司。這個公司致力于研發個人服務機器人,而不是傳統的工業機器臂,ros就從這里走出來。其實這地方不是車庫,是個別墅,但老外喜歡車庫創業,改變世界的故事,比如惠普。
2.3 機器人畢業舞會,PR2的締造者,ROS的起源,ROS被OSRF托管,ROS開發者大會
(1)2010年5月26日,柳樹車庫研發了一個機器人叫PR2(Personal Robot,個人機器人2代),并把他們送給了全世界11個機器人研究單位。
(2)ROS是PR2項目其中的軟件部分,柳樹一開始就準備把ros做成開源的,2010年,柳樹正式推出ROS1.0。
(3)ROS最初的理念,在論文《ROS: An Open-Source Robot Operating System》中進行了表述:
ROS is not an operating system in the traditional sense of process management and scheduling; rather, it provides a structured communications layer above the host operating systems of a heterogenous compute cluster. (譯文:ROS不是傳統意義上的操作系統,不是用于進程管理和調度,而是構建在其它操作系統之上的一種結構化的通訊層。)
(4)經過幾年發展,柳樹一時半會找不到盈利點,因此,2012年柳樹車庫成立了開源機器人基金會(OpenSource Robotics Foundation,簡稱OSRF),是一個非盈利機構,通過接受企業捐款運行。自此以后,OSRF接收ROS一切事宜。
(5)2012年5月,OSRF舉辦第一屆ROS開發者大會(ROSCon),在美國明尼蘇達州,圣保羅市,此后每年舉辦一屆。ROS之父的摩根·奎格利,做了《ROS的昨天,今天,明天》報告。大衛·魯(David Lu)介紹了URDF(統一的機器人描述格式),一種特殊的XML文件,用來定義機器人關節間的相對關系和位姿。萬·蘇坎(Ioan Sucan)介紹了Moveit!,是工業機器人操控的開發平臺,后被廣泛使用。
2.4 ROS烏龜的起源,烏龜機器人,烏龜設計師,ROS的名字和烏龜幫,ROS第一只烏龜
(1)ros的標志是個小烏龜,turtle,每一版ros,都有一個新烏龜logo。之所以選烏龜,是因為柳樹好多人從小就玩一個面向兒童的編程語言LOGO,里面就有一個小烏龜,供人操控。
(2)1948年,美國人瓦爾特制作了一個形似烏龜的機器人,這是人類歷史上第一個自主移動的機器人。后來MIT的實驗室也搞過一個像烏龜的機器人。于是,烏龜就慢慢成了機器人的代名詞了。
(3)ros烏龜的設計師是喬許·埃林森(Josh Ellingson),下面是各個ros版的烏龜。
(4)ROS的全名是機器人操作系統,這個名字其實是有歧義的,其嚴格來說是個分布式的通信框架,當時柳樹也想了好多名字,直到申請了ros.org的域名,于是討論停止了。
(5)ROS的每一版名稱是按照英語字母順序,取字母表中對應的字母依次命名。第一版ROS叫B ROS,即Box ROS,后面是C,D,E。為了取名,OSRF還成立了ROS取名委員會。這個是ros的版本歷史鏈接:http://wiki.ros.org/Distributions
(6)ROS的第一版Box Turtle完全是為PR2設計的,時間是2010年。打造PR2機器人的那些人,在柳樹解體后,創辦了遠程遠程會議替身機器人和酒店服務機器人,以及倉儲機器人,碼垛機器人等等。這些機器人目前都有不錯的應用,而他們都是從ROS衍生出來的。
2.5 ROS導航與hiDOF,ROS之可視化rviz
(1)機器人最重要的能力是自主移動,而自主移動依賴導航。ros的導航軟件包作者是埃坦?馬德-愛潑斯坦(Eitan Marder-Eppstein)。
(2)導航的目的是讓機器人從初始位置A到目標位置B,中間不與周邊環境碰撞。實現這個目標需要:路徑規劃軟件,其依賴地圖構建軟件,其又依賴激光雷達。還需要的傳感器包括輪速傳感器,IMU慣導,GPU定位等。
(2)ROS導航軟件包里有各種常見算法,包括SLAM建圖算法,A*和Dijkstra規劃算法,AMCL自適應蒙特卡洛定位算法等,可以直接調用。
(3)ros導航軟件包作者后來成立了hiDOF機器人自動化軟件咨詢公司,后來被谷歌收購。
(4)rviz是ros官方的3D可視化仿真工具,支持以可視化的方式顯示ros消息,包括各種傳感器數據,機器人模型,坐標變換TF等,很強大。
2.6 ROS阿C龜-諾亞方龜,ROS之物體操控manipulation
(1)2010年8月,ros第二個版本C turtle發布,從這里可以看出ros要統治各個機器人領域,包括無人駕駛汽車,而事實上無人駕駛汽車也是一種機器人,也大量使用ros進行開發。
(2)ROS C-turtle版增加了機器人抓取軟件包,用來檢測物體,用機器手臂進行抓取,包名叫manipulation。下圖的二位是這個軟件包的作者,凱仁·蕭(Kaijen Hsiao)和馬泰·喬卡列(Matei Ciocarlie)。從這里出發,衍生出了碼垛機器人領域,國內有個星猿哲科技 (XYZ Robotics) 。
2.7 ROS飛天金剛龜與視覺傳感器
(1)2011年3月,ros D版本發布,菱背龜(Diamondback),此時已經有很多機器人公司加入ros,提供各自機器人的驅動。
(2)2010年微軟推出了帶深度相機的XBox,深度相機是Kinect,這個東西后來被各個研究機構使用,ROS也進行了支持,提供這個設備的驅動。下圖就是Kinect,中間的攝像頭為RGB彩色攝像頭,左右兩個分別為紅外發射器和紅外CMOS接收器,從而構成深度傳感器,獲取深度數據,即可視范圍內物體到相機的距離。從這些深度數據,可以計算出3D點云(Point Cloud)。此時ROS加入了點云庫(Point Cloud Library, PCL)
(3)PCL是開源的點云處理軟件,包括大量與點云相關的算法,包括顯示點云數據,濾波,分割,特征提取,配準,重建等等,其在3D點云的地位等于OpenCV在圖像處理的地位。PCL也是柳樹衍生出來的,作者是萊度·茹蘇(Radu B. Rusu),當時點云處理已經在逆向工程里廣泛應用了,只是沒人開源出來。
2.8 ROS之OpenCV,ROS之KDL
(1)OpenCV(Open SourceComputer Vision Library:http://opencv.org)是C/C++實現的開源計算機圖像處理庫,作者是蓋里·布拉德斯基(Gary Bradski),其在intel工作時開發的,作者還寫了著名的《Learning OpenCV》。他搞這個的初衷就是為了不重復造輪子。
(2)ros加之了openCV,改進了易用性,通過vision_opencv的軟件包,用戶可以方便的在ros使用opencv。包括兩部分:一是cv_bridge負責將OpenCV下的圖像類型轉換為ROS圖像消息,二是image_geometry軟件包可用來校正圖像,將ros接收到的校準參數,送給opencv圖像校正函數使用。
(3)ros后來把底層的庫拆開,不再統一維護,而由貢獻者各自維護,比如KDL,Kinematics-Dynamics Library的縮寫,意為“運動學-動力學庫”,由歐洲大學的研究人員開發。
2.9 ROS烏龜幫,ROS與Windows,ROS之Gazebo,ROS之編譯系統,ROS之皆大歡喜(Player與Stage),ROS驅動DARPA挑戰賽,ROS之MoveIt!
(1)ROS各版本名字:Box turtle(箱龜,2010.3),C turtle(阿C龜,2010.8),菱背龜(Diamondback,2011.3),ElectricEmys(雞血澤龜,2011.8),Fuerte Turtle(大力神龜,2012.4),Groovy Galapagos(加拉帕戈斯象龜,2012.12)(這一版ros引入catkin編譯系統,catkin的意思是“柳樹上結的尾狀花絮“),Hydromedusa(南美蛇頸龜,2013.9),Indigo Igloo(青色冰屋,2014.7)(這一版以后,ROS交給OSRF,成員們開始了全球的機器人創業大潮,中國也遍地開花,時間是2014~2015年),Jade Turtle(翡翠龜,2015.5),Kinetic Kame(動感神龜2016.5),Lunar Loggerhead(登月大頭龜,2017.5),Melodic Morenia(優雅的孔雀龜,2018.5)
(2)ROS越來越火了,于是很多window開發人員也想用ROS,而且是在windows上,微軟也提供了一些支持,比如WSL(Windows Subsystem for Linux),適用于Windows的ROS1實驗版等。但是作為中國開發者,仍然建議在ubuntu上玩ros,且最好是純ubuntu系統,而不是虛擬機或者wsl。
(3)Gazebo是一個機器人三維仿真軟件,可以與ros配套使用,也可以單獨使用。其作者是OSRF的創始人之一。Gazebo支持物理元素的仿真,比如重力,摩擦力等,應用非常廣泛
(4)ros是一個非常大的軟件系統,C,C++,python,把五花八門的軟件包組織編譯起來,相當麻煩,其編譯系統也經過幾次更新:rosbuild --> catkin --> ament(ros2),至少前兩個是基于cmake實現的。
(5)player用于控制機器人設備和傳感器;Stage是一個二維的機器人仿真環境。
(6)2015年,DARPA舉辦了一屆機器人挑戰賽,23支進入決賽的隊伍,18支使用ros,14支使用Gazebo進行仿真,ros成功了。但是比賽的冠軍不是美國的隊伍,而是韓國。而中國的中科院合肥和香港大學,要么沒進決賽,要么墊底,因此機器人方向,中國人要學的還有很多。
(7)MoveIt源于ROS的機械臂導航軟件包arm_navigation,最早是用于PR2上,現已成為工業機器人,機械臂上使用最多的開源操作軟件。MoveIt!降低了對ros的依賴,代碼復用效率更高。傳統的工業機器人是固定的程序,不感知周邊環境,而MoveIt可以支持機器人對周圍進行建模,并自主規劃移動路徑,并動態調整,從而實現與人協作。
2.10 TurtleBot的故事,TurtleBot背后的女人,TurtleBot背后的男人,TurtleBot的演變,ROS之IPI,秘密項目PlatformBot愛與恨,從非盈利組織OSRF到企業化的OSRC,實習生計劃,柳樹車庫系繁花盛葉
(1)由于ros是機器人軟件,因此學習ros最好有個機器人。ros最開始的PR2太貴了,難以大量推廣,因此柳樹設計了一個簡易機器人平臺,使用東拼西湊的硬件,即TurtleBot,軟硬件開源。其中計算平臺使用華碩筆記本,相機使用微軟Kinect深度相機,運動設備使用掃地機器人iRobot Create,于是TurtleBot火了。
(2)TurtleBot是圖利·弗特(Tully Foote)和麥羅尼·威瑟(Melonee Wise)發明的。麥羅尼·威瑟(女)(Melonee Wise)是柳樹二號員工,多次創業,并領導ROS實習生計劃。圖利·弗特(Tully Foote)是OSRF ROS開發負責人,熱衷無人車比賽,相信他也使用了ros在無人車上,專業是機械工程,機械當自強!
(3)TurtleBot火了以后,有個韓國公司愿意接著搞,于是就有了TurtleBot家族,其中TurtleBot3是最新的。
(4)IPI,即Industrial Perception, Inc.工業感知公司,是柳樹孵化的一家碼垛機器人公司,面向未來電子商務物流,利用視覺技術輔助貨物的裝卸,物品分揀,上下物料,后來被谷歌收購。
(5)發明TurtleBot的麥羅尼·威瑟,領導柳樹的PlatformBot項目,建造售價10000美元的服務機器人,但是沒啥結果。麥羅尼·威瑟后來離開柳樹,創辦了Fetch Robotics,做一整套的智能倉儲機器人,這個領域的最早火的是亞馬遜的Kiva,如下圖。
(6)2016年,開源基金會OSRF接受了豐田一百萬美金的捐助,并與豐田成立以盈利為目的開源機器人公司(OSRC),這聽起來有點奇怪。豐田希望OSRC能幫助豐田研究自動駕駛。
(7)柳樹和OSRF非常重視擴大ROS影響力,其中一個重要項目就是實習生計劃,此后這些人形成了柳樹系,對機器人行業產生了重大影響,這些人即使貢獻者,也是布道者。
(8)現狀柳樹車庫直接衍生出的公司正在改變著世界,現在ROS已經是事實上的機器人領域的普遍標準,就像unix對于OS,TCP/IP對于網絡協議,ros也已是機器人工程師的必備技能了,包括自動駕駛工程師,必須要掌握!
3 總結
雖然《ROS史話36篇》總體結構不是很好,有點碎,但是不妨礙我們通過這篇文章了解ros和機器人發展歷史,這些是深入學習ros的重要背景知識,可以形成對機器人行業的大局意識。
寫作不易,轉載請注明出處!!
總結
以上是生活随笔為你收集整理的ROS高效入门第一章 -- ROS历史与现状的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt opengl 混合实现半透明
- 下一篇: Terraform 基础 定义阿里云资源