ROS探索總結(一)——ROS簡介

?????? 隨著機器人領域的快速發展和復雜化,代碼的復用性和模塊化的需求原來越強烈,而已有的開源機器人系統又不能很好的適應需求。2010年Willow Garage公司發布了開源機器人操作系統ROS(robot operating system),很快在機器人研究領域展開了學習和使用ROS的熱潮。



??????? ROS系統是起源于2007年斯坦福大學人工智能實驗室的項目與機器人技術公司Willow Garage的個人機器人項目(Personal Robots Program)之間的合作,2008年之后就由Willow Garage
來進行推動。已經有四年多的時間了 (視頻)。隨著PR2那些不可思議的表現,譬如疊衣服,插插座,做早飯,ROS也得到越來越多的關注。Willow Garage公司也表示希望借助開源的力量使PR2變成“全能”機器人。

??????? PR2價格高昂,2011年零售價高達40萬美元。PR2現主要用于研究。PR2有兩條手臂,每條手臂七個關節,手臂末端是一個可以張合的鉗子。PR2依靠底部的四個輪子移動。在PR2的頭部,胸部,肘部,鉗子上安裝有高分辨率攝像頭,激光測距儀,慣性測量單元,觸覺傳感器等豐富的傳感設備。在PR2的底部有兩臺8核的電腦作為機器人各硬件的控制和通訊中樞。兩臺電腦安裝有Ubuntu和ROS。

二、設計目標

??????? ROS是開源的,是用于機器人的一種后操作系統,或者說次級操作系統。它提供類似操作系統所提供的功能,包含硬件抽象描述、底層驅動程序管理、共用功能的執行、程序間的消息傳遞、程序發行包管理,它也提供一些工具程序和庫用于獲取、建立、編寫和運行多機整合的程序。



???????ROS的首要設計目標是在機器人研發領域提高代碼復用率。ROS是一種分布式處理框架(又名Nodes)。這使可執行文件能被單獨設計,并且在運行時松散耦合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便于共享和分發。ROS還支持代碼庫的聯合系統。使得協作亦能被分發。這種從文件系統級別到社區一級的設計讓獨立地決定發展和實施工作成為可能。

????? 上述所有功能都能由ROS的基礎工具實現。



三、主要特點

??????? ROS的運行架構是一種使用ROS通信模塊實現模塊間P2P的松耦合的網絡連接的處理架構,它執行若干種類型的通訊,包括基于服務的同步RPC(遠程過程調用)通訊、基于Topic的異步

數據流通訊,還有參數服務器上的數據存儲。但是ROS本身并沒有實時性。

?????? ROS的主要特點可以歸納為以下幾條:

???? (1)點對點設計




?????? 一個使用ROS的系統包括一系列進程,這些進程存在于多個不同的主機并且在運行過程中通過端對端的拓撲結構進行聯系。雖然基于中心服務器的那些軟件框架也可以實現多進程和多主機的優勢,但是在這些框架中,當各電腦通過不同的網絡進行連接時,中心數據服務器就會發生問題。
????? ROS的點對點設計以及服務和節點管理器等機制可以分散由計算機視覺和語音識別等功能帶來的實時計算壓力,能夠適應多機器人遇到的挑戰。


?????? (2)多語言支持

?????? 在寫代碼的時候,許多編程者會比較偏向某一些編程語言。這些偏好是個人在每種語言的編程時間、調試效果、語法、執行效率以及各種技術和文化的原因導致的結果。為了解決這些問題,我們將ROS設計成了語言中立性的框架結構。ROS現在支持許多種不同的語言,例如C++、Python、Octave和LISP,也包含其他語言的多種接口實現。



????? ROS的特殊性主要體現在消息通訊層,而不是更深的層次。端對端的連接和配置利用XML-RPC機制進行實現,XML-RPC也包含了大多數主要語言的合理實現描述。我們希望ROS能夠利用各種語言實現的更加自然,更符合各種語言的語法約定,而不是基于C語言給各種其他語言提供實現接口。然而,在某些情況下利用已經存在的庫封裝后支持更多新的語言是很方便的,比如Octave的客戶端就是通過C++的封裝庫進行實現的。
?????? 為了支持交叉語言,ROS利用了簡單的、語言無關的接口定義語言去描述模塊之間的消息傳送。接口定義語言使用了簡短的文本去描述每條消息的結構,也允許消息的合成,例如下圖
就是利用接口定義語言描述的一個點的消息:





?????? 每種語言的代碼產生器就會產生類似本種語言目標文件,在消息傳遞和接收的過程中通過ROS自動連續并行的實現。這就節省了重要的編程時間,也避免了錯誤:之前3行的接口定義文件自動的擴展成137行的C++代碼,96行的Python代碼,81行的Lisp代碼和99行的Octave代碼。因為消息是從各種簡單的文本文件中自動生成的,所以很容易列舉出新的消息類型。在編寫的時候,已知的基于ROS的代碼庫包含超過四百種消息類型,這些消息從傳感器傳送數據,使得物體檢測到了周圍的環境。
?
?????? 最后的結果就是一種語言無關的消息處理,讓多種語言可以自由的混合和匹配使用。

?????? (3)精簡與集成

?????? 大多數已經存在的機器人軟件工程都包含了可以在工程外重復使用的驅動和算法,不幸的是,由于多方面的原因,大部分代碼的中間層都過于混亂,以至于很困難提取出它的功能,也很難把它們從原型中提取出來應用到其他方面。
????? 為了應對這種趨勢,我們鼓勵將所有的驅動和算法逐漸發展成為和ROS沒有依賴性單獨的庫。ROS建立的系統具有模塊化的特點,各模塊中的代碼可以單獨編譯,而且編譯使用的CMake工
具使它很容易的就實現精簡的理念。ROS基本將復雜的代碼封裝在庫里,只是創建了一些小的應用程序為ROS顯示庫的功能,就允許了對簡單的代碼超越原型進行移植和重新使用。作為一種新加入的有優勢,單元測試當代碼在庫中分散后也變得非常的容易,一個單獨的測試程序可以測試庫中很多的特點。
?????? ROS利用了很多現在已經存在的開源項目的代碼,比如說從Player項目中借鑒了驅動、運動控制和仿真方面的代碼,從OpenCV中借鑒了視覺算法方面的代碼,從OpenRAVE借鑒了規劃算
法的內容,還有很多其他的項目。在每一個實例中,ROS都用來顯示多種多樣的配置選項以及和各軟件之間進行數據通信,也同時對它們進行微小的包裝和改動。ROS可以不斷的從社區維護中進行升級,包括從其他的軟件庫、應用補丁中升級ROS的源代碼。


?????? (4)工具包豐富

?????? 為了管理復雜的ROS軟件框架,我們利用了大量的小工具去編譯和運行多種多樣的ROS組建,從而設計成了內核,而不是構建一個龐大的開發和運行環境。


???? 這些工具擔任了各種各樣的任務,例如,組織源代碼的結構,獲取和設置配置參數,形象化端對端的拓撲連接,測量頻帶使用寬度,生動的描繪信息數據,自動生成文檔等等。盡管我們已經測試通過像全局時鐘和控制器模塊的記錄器的核心服務,但是我們還是希望能把所有的代碼模塊化。我們相信在效率上的損失遠遠是穩定性和管理的復雜性上無法彌補的。


?????? (5)免費并且開源

????? ROS所有的源代碼都是公開發布的。我們相信這將必定促進ROS軟件各層次的調試,不斷的改正錯誤。雖然像Microsoft Robotics Studio和Webots這樣的非開源軟件也有很多值得贊美的屬性,但是我們認為一個開源的平臺也是無可為替代的。當硬件和各層次的軟件同時設計和調試的時候這一點是尤其真實的。




????? ROS以分布式的關系遵循這BSD許可,也就是說允許各種商業和非商業的工程進行開發。ROS通過內部處理的通訊系統進行數據的傳遞,不要求各模塊在同樣的可執行功能上連接在一起。如此,利用ROS構建的系統可以很好的使用他們豐富的組件:個別的模塊可以包含被各種協議保護的軟件,這些協議從GPL到BSD,但是許可的一些“污染物”將在模塊的分解上就完全消滅掉。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255771.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信瀏覽器取消緩存的方法

摘要:做微信公家號以及調試手機頁面的時辰,防止不了頁面要跳轉到微信閱讀器打開,調試階段,android版微信閱讀器一直都默許緩存html靜態資本,每一次靜態資本變革乃至新內容發布的時辰在微信閱讀器上都極有可能不克不及更新&#xf…

【機器視覺】——裂紋檢測筆記

目錄 傳統算法處理裂縫的基本思路: 第一種思路 第二種思路: 第三種思路 CPP代碼 halcon代碼 python代碼 Matlab代碼 深度學習缺陷檢測 裂縫檢測文獻 傳統算法處理裂縫的基本思路: 第一種思路 1.先轉換彩色圖為灰度圖 2.進行自適應…

利用union判斷系統的大小端

int checkCPUendian()//返回1,為小端;反之,為大端; { union{ unsigned int a; unsigned char b; }c; c.a 1; return 1 c.b; }大端模式(Big-endian),是指數據的高字節保存在內存的低地址中,而數據…

Filter(過濾器)?和?interceptor(攔截器)的區別

Filter(過濾器) 和 interceptor(攔截器)的區別 1.攔截器是基于java反射機制的,而過濾器是基于函數回調的。 2.過濾器依賴于Servlet容器,而攔截器不依賴于Servlet容器。 3.攔截器只對Action請求起作用&#…

ROS探索總結(二)——ROS總體框架

一、 總體結構 根據ROS系統代碼的維護者和分布來標示,主要有兩大部分:(1)main:核心部分,主要由Willow Garage公司和一些開發者設計、提供以及維護。它提供了一些分布式計算的基本工具,以及整個…

python 阿貍的進階之路(4)

裝飾器 #1、開放封閉原則:對擴展開放,對修改是封閉#2、裝飾器:裝飾它人的,器指的是任意可調用對象,現在的場景裝飾器-》函數,被裝飾的對象也是-》函數#原則:1、不修改被裝飾對象的源代碼 2、不修…

【深度學習】——利用pytorch搭建一個完整的深度學習項目(構建模型、加載數據集、參數配置、訓練、模型保存、預測)

目錄 一、深度學習項目的基本構成 二、實戰(貓狗分類) 1、數據集下載 2、dataset.py文件 3、model.py 4、config.py 5、predict.py 一、深度學習項目的基本構成 一個深度學習模型一般包含以下幾個文件: datasets文件夾:存放…

二叉樹的序遍歷

時間限制: 1 s空間限制: 32000 KB題目等級 : 白銀 Silver題目描述 Description求一棵二叉樹的前序遍歷,中序遍歷和后序遍歷 輸入描述 Input Description第一行一個整數n,表示這棵樹的節點個數。 接下來n行每行2個整數L和R。第i行的兩個整數Li和Ri代表編號…

GUI登錄界面

在這次的作業中,我先使用單選按鈕,輸入框,復選框設計了一個簡單地登錄界面。接著我使用了MouseListener將登陸按鈕與下一個“查詢界面”連接起來。最后我使用了我們本周所學的JFrame框架與事件處理機制設計了一個簡單地界面。我所設計的登錄界…

淺談ROS操作系統及其應用趨勢

ROS操作系統是最先由斯坦福開發的開源機器人操作系統,目前由willowgarage公司開發和維護,相關的開發社區也很成熟( http://www.ros.org , http://answers.ros.org, http://www.willowgarage.com), 經過幾年的發展API也逐漸穩定&a…

Raft學習傳送門

Raft官網 官方可視化動畫1 官方可視化動畫2 論文中文翻譯 論文英文地址 Paxos Made Simple論文翻譯 Raft理解 技術分享 《分布式一致性raft算法實現原理》 狀態機 MIT: raft實現 分布式系統學習2-Raft算法分析與實現 分布式系統MIT 6.824學習資源 知乎大神的&#…

【Python生成器與迭代器的區別】

目錄 一、迭代 二、迭代器 1)創建迭代器——兩種方法 iter()方法 利用()和range結合使用 2)具體案例 3、生成器 4、二者的異同 1)、共同點 2)、不同點 a、語法上 b、用法上 一、迭代 首先理解一…

BZOJ4426 : [Nwerc2015]Better Productivity最大生產率

如果一個區間包含另一個區間,那么這兩個區間是否在一起的生產率是一樣的。 將所有這種包含了其他區間的區間放入數組$b$,其余的放入數組$c$,有多個相同的時候則從$b$移一個到$c$。 那么$c$里所有區間左端點遞增,右端點也遞增&…

[codevs1105][COJ0183][NOIP2005]過河

[codevs1105][COJ0183][NOIP2005]過河 試題描述 在河上有一座獨木橋,一只青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的…

ABB機器人套接口通信 機器人部分

ABB機器人套接口通信 機器人部分 文章機器人部分,描述如何運行機器人從機程序,使機器人根據上位機節點發送的命令,執行具體運動。 ABB機器人執行3個任務。這些任務都配置為SEMISTATIC(背景程序)的任務,第三任務是正常動作任務。下文描述如…

CRM項目總結

CRM項目總結 一:開發背景 在公司日益擴大的過程中,不可避免的會伴隨著更多問題出現。 對外 : 如何更好的管理客戶與公司的關系?如何更及時的了解客戶日益發展的需求變化?公司的產品是否真的符合客戶需求?以…

【面經——《速騰聚創科技有限公司——深度學習算法工程師》】

自我介紹 實習項目 1)項目主要應用的領域? 2)難點在哪?——機械臂吸盤大小和目標大小之間坐標的協調 3)難點不在于算法,在于數據的處理和均衡性?對于數據均衡方面有什么理解&#xf…

js變量和數據類型

轉載于:https://www.cnblogs.com/songyinan/p/6181421.html

offline .net3.5

1.加載虛擬光驅 2.dism.exe /online /enable-feature /featurename:netfx3 /Source:D:\sources\sxs轉載于:https://www.cnblogs.com/BillLei/p/5294082.html

(九)模板方法模式詳解(包含與類加載器不得不說的故事)

作者:zuoxiaolong8810(左瀟龍),轉載請注明出處,特別說明:本博文來自博主原博客,為保證新博客中博文的完整性,特復制到此留存,如需轉載請注明新博客地址即可。 模板方法模…