機(jī)器人操作系統(tǒng)_第1頁
機(jī)器人操作系統(tǒng)_第2頁
機(jī)器人操作系統(tǒng)_第3頁
機(jī)器人操作系統(tǒng)_第4頁
機(jī)器人操作系統(tǒng)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、機(jī)器人操作系統(tǒng) ROS1. 何謂 ROSROS 是一個機(jī)器人軟件操作平臺,前身由斯坦福大學(xué) (Stanford Artificail Intelligence Laboratory 所研發(fā)。它提供一些標(biāo)準(zhǔn)操作系統(tǒng)服務(wù),目前主要支持 Ubuntu 操作系統(tǒng)。 ROS 可分為兩層,低層是操作系統(tǒng)層,高層是實(shí)現(xiàn)不同功能的軟件包。2.ROS 的版本ROS1.0版本 叫做 Box Turtle,2010年 3月 2日發(fā)布; ROS 1.1-1.2 C Turtle, 2010年 8月 2日 發(fā)布; ROS 1.3-1.4 Diamondback,2011年 3月 2日發(fā)布。3.ROS 文件系統(tǒng)的概念和操

2、作(1ROS文件系統(tǒng)的概念Packages: 它位于 ROS 軟件的最底層,可以包含任意的東西 : libraries,tools,executables,etc.Manifest: 是 package 的 描 述 。 其 最 重 要 的 角 色 是 定 義 packages 之 間 的 依 賴 關(guān) 系 (manifest.xml 。Stacks: 它是 package 的集合,是一個更高層的 library 。Stack Manifest: stack的描述(stack.xml 。setup.sh 文件設(shè)置 ROS 工作區(qū)的環(huán)境變量。source /setup.sh:將設(shè)置永久化。此時鍵入

3、echo $ROS_PACKAGE_PATH 指令,會看到類似于home/user/ros_workspace:/opt/ros/electric/stacks的路徑。(2 ROS 文件系統(tǒng)的操作a.rospack find package name 返回指定 package 的路徑 (rospack 提供與 package 相關(guān)的信 息 。b.rosstack find stack name 返回指定 stack 的路徑;c.roscd 更改文件夾;d.rosls 允許根據(jù)名字而不是 package 路徑直接列出 package 、 stack 等的內(nèi)容。e.TAB 鍵可以在前邊有提示的情況

4、下,代替后面的字符。4. 在工作區(qū)中創(chuàng)建一個新的 package 的方法$ cd /ros_workspace /挺像 dos 的$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp5. 建立一個 ROS packagerosdep = ros+dep(endencies : a tool to install package dependenciesrosmake = ros+make : makes (compiles a ROS packageROS (機(jī)器人操作系統(tǒng), Robot Operating System , 是專為機(jī)

5、器人軟件開發(fā)所設(shè)計出來的一套 電腦操作系統(tǒng)架構(gòu)。它是一個開源的元級操作系統(tǒng)(后操作系統(tǒng) ,提供類似于操作系統(tǒng)的 服務(wù),包括硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、程序間消息傳遞、程序發(fā) 行包管理,它也提供一些工具和庫用于獲取、建立、編寫和執(zhí)行多機(jī)融合的程序。ROS 的運(yùn)行架構(gòu)是一種使用 ROS 通信模塊實(shí)現(xiàn)模塊間 P2P 的松耦合的網(wǎng)絡(luò)連接的處理架構(gòu), 它執(zhí)行若干種類型的通訊,包括基于服務(wù)的同步 RPC (遠(yuǎn)程過程調(diào)用通訊、基于 Topic 的 異步數(shù)據(jù)流通訊,還有參數(shù)服務(wù)器上的數(shù)據(jù)存儲。發(fā)展目標(biāo)ROS 的首要設(shè)計目標(biāo)是在機(jī)器人研發(fā)領(lǐng)域提高代碼復(fù)用率。 ROS 是一種分布式處理框架 (

6、又 名 Nodes 。這使可執(zhí)行文件能被單獨(dú)設(shè)計,并且在運(yùn)行時松散耦合。這些過程可以封裝到 數(shù)據(jù)包(Packages 和堆棧(Stacks 中,以便于共享和分發(fā)。 ROS 還支持代碼庫的聯(lián)合系 統(tǒng)。 使得協(xié)作亦能被分發(fā)。 這種從文件系統(tǒng)級別到社區(qū)一級的設(shè)計讓獨(dú)立地決定發(fā)展和實(shí)施 工作成為可能。上述所有功能都能由 ROS 的基礎(chǔ)工具實(shí)現(xiàn)。為了實(shí)現(xiàn)“共享與協(xié)作”這一首要目標(biāo),人們制訂了 ROS 架構(gòu)中的其他支援性目標(biāo):“輕便” :ROS 是設(shè)計得盡可能方便簡易。您不必替換主框架與系統(tǒng),因?yàn)?ROS 編寫的代碼 可以用于其他機(jī)器人軟件框架中。 毫無疑問的, ROS 更易于集成與其他機(jī)器人軟件框架。事

7、 實(shí)上 ROS 已完成與 OpenRAVE 、 Orocos 和 Player 的整合。ROS-agnostic 庫:【 agnostic :不可知論】建議的開發(fā)模型是使用 clear 的函數(shù)接口書寫 ROS-agnostic 庫。語言獨(dú)立性:ROS 框架很容易在任何編程語言中執(zhí)行。我們已經(jīng)能在 Python 和 C+中順利 運(yùn)行,同時添加有 Lisp 、 Octave 和 Java 語言庫。測試簡單:ROS 有一個內(nèi)建的單元 /組合集測試框架,稱為“ rostest ” 。這使得集成調(diào)試和 分解調(diào)試很容易。擴(kuò)展性:ROS 適合于大型實(shí)時系統(tǒng)與大型的系統(tǒng)開發(fā)項(xiàng)目。ROS 的概念ROS 有 三

8、個 層 次 的 概 念 :分 別 為 Filesystem level , Computation graph level , 以 及 Communication level 。 以下內(nèi)容具體的總結(jié)了這些層次及概念。除了這三個層次的概念, ROS 也定義了兩種名稱 - Package資源名稱和 Graph 資源名稱。同樣會在以下內(nèi)容中提及。ROS 的 Filesystem Level文件系統(tǒng)層概念就是你在碟片里面遇到的資源,例如:Packages :ROS 的基本組織,可以包含任意格式文件。一個 Package 可以包含 ROS 執(zhí)行時處 理的文件(nodes ,一個 ROS 的依賴庫,一個數(shù)

9、據(jù)集合,配置文件或一些有用的文件在一 起。Manifests :Manifests (manifest.xml 提供關(guān)于 Package 元數(shù)據(jù), 包括它的許可信息和 Package 之間依賴關(guān)系,以及語言特性信息像編譯旗幟(編譯優(yōu)化參數(shù) 。Stacks: Stacks 是 Packages 的集合,它提供一個完整的功能,像“ navigation stack” Stack 與 版本號關(guān)聯(lián),同時也是如何發(fā)行 ROS 軟件方式的關(guān)鍵。Manifest Stack Manifests: Stack manifests (stack.xml 提供關(guān)于 Stack 元數(shù)據(jù), 包括它的許可信 息和 St

10、ack 之間依賴關(guān)系。Message (msg types: 信息描述 , 位置在路徑:my_package/msg/MyMessageType.msg, 定義數(shù) 據(jù)類型在 ROS 的 messages ROS里面。Service (srv types: 服務(wù)描述 , 位置在路徑:my_package/srv/MyServiceType.srv, 定義這個請求 和相應(yīng)的數(shù)據(jù)結(jié)構(gòu) 在 ROS services 里面。ROS 的 Computation Graph LevelComputation Graph Level (計算圖就是用 ROS 的 P2P (peer-to-peer 網(wǎng)絡(luò)傳輸協(xié)議

11、網(wǎng)絡(luò) 集中處理所有的數(shù)據(jù)。基本的 Computation Graph 的概念包括 Node , Master , Parameter Sever , messages, services, topics, 和 bags , 以上所有的這些都以不同的方式給 Graph 傳輸 數(shù)據(jù)。Nodes: Nodes(節(jié)點(diǎn) 是一系列運(yùn)行中的程序。 ROS 被設(shè)計成在一定顆粒度下的模塊化系統(tǒng)。 一個機(jī)器人控制系統(tǒng)通常包含許多 Nodes 。比如一個 Node 控制激光雷達(dá),一個 Node 控制 車輪馬達(dá), 一個 Node 處理定位, 一個 Node 執(zhí)行路徑規(guī)劃, 另外一個提供圖形化界面等等。 一個 ROS

12、節(jié)點(diǎn)是由 Libraries ROS client library寫成的 , 例如 roscpp 和 rospy.Master: ROS Master 提供了登記列表和對其他計算圖的查找。沒有 Master ,節(jié)點(diǎn)將無法找 到其他節(jié)點(diǎn),交換消息或調(diào)用服務(wù)。Server Parameter Server: 參數(shù)服務(wù)器使數(shù)據(jù)按照鑰匙的方式存儲。目前,參數(shù)服務(wù)器是主持 的組成部分。Messages:節(jié)點(diǎn)之間通過 messages 來傳遞消息。一個 message 是一個簡單的數(shù)據(jù)結(jié)構(gòu),包含 一些歸類定義的區(qū)。支持標(biāo)準(zhǔn)的原始數(shù)據(jù)類型(整數(shù)、浮點(diǎn)數(shù)、布爾數(shù),等和原始數(shù)組類 型。 message 可以包含

13、任意的嵌套結(jié)構(gòu)和數(shù)組(很類似于 C 語言的結(jié)構(gòu) structs Topics: Messages以一種發(fā)布 /訂閱的方式傳遞。 一個 node 可以在一個給定的 topic 中發(fā)布消 息。 Topic 是一個 name 被用于描述消息內(nèi)容。一個 node 針對某個 topic 關(guān)注與訂閱特定類 型的數(shù)據(jù)??赡芡瑫r有多個 node 發(fā)布或者訂閱同一個 topic 的消息;也可能有一個 topic 同 時發(fā)布或訂閱多個 topic ??傮w上,發(fā)布者和訂閱者不了解彼此的存在。主要的概念在于將 信息的發(fā)布者和需求者解耦、分離。邏輯上, topic 可以看作是一個嚴(yán)格規(guī)范化的消息 bus 。 每個 bu

14、s 有一個名字,每個 node 都可以連接到 bus 發(fā)送和接受符合標(biāo)準(zhǔn)類型的消息。Services:發(fā)布 /訂閱模型是很靈活的通訊模式, 但是多對多, 單向傳輸對于分布式系統(tǒng)中經(jīng)常 需要的“請求 /回應(yīng)”式的交互來說并不合適。因此, “請求 /回應(yīng)” 是通過 services 來實(shí)現(xiàn) 的。這種通訊的定義是一種成對的消息:一個用于請求, 一個用于回應(yīng)。假設(shè)一個節(jié)點(diǎn)提供 了一個服務(wù)提供下一個 name 和客戶使用服務(wù)發(fā)送請求消息并等待答復(fù)。 ROS 的客戶庫通常 以一種遠(yuǎn)程調(diào)用的方式提供這樣的交互。Bags: Bags 是一種格式,用于存儲和播放 ROS 消息。對于儲存數(shù)據(jù)來說 Bags 是一種

15、很重要 的機(jī)制。例如傳感器數(shù)據(jù)很難收集但卻是開發(fā)與測試中必須的。在 ROS 的計算圖中, ROS 的 Master 以一個 name service的方式工作。 它給 ROS 的節(jié)點(diǎn)存儲 了 topics 和 service 的注冊信息。 Nodes 與 Master 通信從而報告它們的注冊信息。當(dāng)這些節(jié) 點(diǎn)與 master 通信的時候,它們可以接收關(guān)于其他以注冊節(jié)點(diǎn)的信息并且建立與其它以注冊 節(jié)點(diǎn)之間的聯(lián)系。當(dāng)這些注冊信息改變時 Master 也會回饋這些節(jié)點(diǎn),同時允許節(jié)點(diǎn)動態(tài)創(chuàng) 建與新節(jié)點(diǎn)之間的連接。節(jié)點(diǎn)之間的連接是直接的; Master 僅僅提供了查詢信息,就像一個 DNS 服務(wù)器。節(jié)點(diǎn)

16、訂 閱一個 topic 將會要求建立一個與發(fā)布該 topics 的節(jié)點(diǎn)的連接,并且將會在同意連接協(xié)議的 基礎(chǔ)上建立該連接。 ROS 里面使用最廣的連接協(xié)議是 TCPROS , 這個協(xié)議使用標(biāo)準(zhǔn)的 TCP/IP 接 口。這樣的架構(gòu)允許脫鉤工作(decoupled operation ,通過這種方式大型或是更為復(fù)雜的系統(tǒng)得以建立,其中 names 方式是一種行之有效的手段。 names 方式在 ROS 系統(tǒng)中扮演極為重 要的角色:topics, services, and parameters 都有各自的 names 。每一個 ROS 客戶端庫都支 持重命名,這等同于,每一個編譯成功的程序能夠以另

17、一種形似【名字】運(yùn)行。例如,為了控制一個北陽激光測距儀(Hokuyo laser range-finder ,我們可以啟動這個 hokuyo_node 驅(qū)動,這個驅(qū)動可以給與激光儀進(jìn)行對話并且在 " 掃描 "topic 下可以發(fā)布 sensor_msgs/LaserScan 的信息。為了處理數(shù)據(jù),我們也許會寫一個使用 laser_filters的 node 來訂閱 " 掃描 "topic 的信息。訂閱之后,我們的過濾器將會自動開始接收激光儀的信息。 注 意兩邊是如何脫鉤工作的。 所有的 hokuyo_node的節(jié)點(diǎn)都會完成發(fā)布 " 掃描 " ,不需要知道 是否有節(jié)點(diǎn)被訂閱了。 所有的過濾器都會完成 " 掃描 " 的訂閱, 不論知道還是不知道是否有節(jié) 點(diǎn)在發(fā)布 " 掃描 " 。 在不引發(fā)任何錯誤的情況下, 這兩個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論