久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

ros是linux發行版本嗎

196次閱讀
沒有評論

共計 4716 個字符,預計需要花費 12 分鐘才能閱讀完成。

本文丸趣 TV 小編為大家詳細介紹“ros 是 linux 發行版本嗎”,內容詳細,步驟清晰,細節處理妥當,希望這篇“ros 是 linux 發行版本嗎”文章能幫助大家解決疑惑,下面跟著丸趣 TV 小編的思路慢慢深入,一起來學習新知識吧。

ros 是 linux 發行版本。ROS 全稱 Robot Operating System,譯為機器人操作系統;它基于 Linux 內核,只能在 Linux 下運行。ROS 提供一些標準操作系統服務,例如硬件抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。ROS 可以分成兩層,低層是上面描述的操作系統層,高層則是廣大用戶群貢獻的實現不同功能的各種軟件包,例如定位繪圖、行動規劃、感知等。

ROS 定義介紹

ROS 全稱 Robot Operating System,譯為機器人操作系統。基于 Linux 內核,目前只能在 Linux 下運行。

ROS 設計者將 ROS 表述為“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即 ROS 是通訊機制、工具軟件包、機器人高層技能以及機器人生態系統的集合體。

顧名思義,ROS 是一個系統。它和我們用的普通操作系統類似,ROS 將底層的機器人硬件封裝起來,也就是說,不同的機器人中包含的各種底層參數,在使用 ROS 進行開發的人員眼里,都是一樣的。這里還要提一下,目前 ROS 沒有一個可視化界面。我們所用的 Windows、Linux 能直接看到圖像界面并操作,是因為它們有一個可視化界面,而 ROS 沒有。我們所謂的操作系統,并不一定是都要有可視化界面才算的,如果有興趣的可以去看一下最早期的操作系統,只有命令行,并沒有絢麗多彩的界面。

ROS 提供一些標準操作系統服務,例如硬件抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。ROS 是基于一種圖狀架構,從而不同節點的進程能接受,發布,聚合各種信息(例如傳感,控制,狀態,規劃等等)。

ROS 可以分成兩層,低層是上面描述的操作系統層,高層則是廣大用戶群貢獻的實現不同功能的各種軟件包,例如定位繪圖,行動規劃,感知,模擬等等。

ROS 是一個多義詞,它還可以是一種通訊機制。在 ROS 開發中,用節點(Node)表示應用程序,一個節點就是一個可執行程序。節點之間就是通過 ROS 進行通信。ROS 通過節點管理器(Master)對各個節點進行管理。至于具體的原理實現等后續再說。

此外,ROS 還代表一系列用于機器人開發的工具包、算法、技能、平臺、生態等。

ROS 的歷史。說白了,ROS 就是一幫大佬在開發機器人的時候覺得比較好的東西(可以是一些好用的庫、軟件,也可以是一些思想、協議、標準)匯集在一起后形成的東西。在機器人的開發中,各種各樣的機器人沒有統一的標準,每次開發一個自己沒見過的機器人都需要重新去學習大量的東西,十分的不方便,于是,大佬們借鑒操作系統產生的思想,覺得為什么不可以給機器人也做一套系統來對底層進行封裝呢?于是,ROS 產生了。經過歲月的打磨,ROS 越來越完善,用的人也越來越多了。

ROS 功能作用

如果你要問我 ROS 是干什么的,那你只需要知道一句話就夠了。ROS 是用來做機器人或者機器臂開發的。

機器人開發的歷史中,標準化的工作還是沒有做到位。不同的機器人,所用的系統、程序等等都不一樣,這樣導致只要跨平臺,開發起來就十分的困難。為了解決這樣的問題,ROS 誕生了。ROS 可以通過封裝,使得底層硬件對于開發者來說變得透明,大大降低了跨平臺開發的難度。

之所以選擇 ROS,上面說了那么多其實大家也應該明白了,無非就是,用的人多,普及范圍廣。ROS 所包含的領域、資料、功能、內容、知識等十分豐富,不用它你想去自己編庫么?

1. ROS 的性能特色

在正式學習 ROS 之前,先介紹 ROS 的幾個特性,即元操作系統、分布式通信機制、松耦合軟件框架、豐富的開源功能庫等,來幫大家建立一些感性的認識。

ROS 是一個機器人領域的元操作系統。也就是說,它并不是真正意義上的操作系統,其底層的任務調度、編譯、設備驅動等還是由它的原生操作系統 Ubuntu Linux 完成。

ROS 實際上是運行在 Ubuntu Linux 上的亞操作系統,或者說軟件框架,但提供硬件抽象、函數調用、進程管理這些類似操作系統的功能,也提供用于獲取、編譯、跨平臺的函數和工具。

ROS 的核心思想就是將機器人的軟件功能做成一個個節點,節點之間通過互相發送消息進行溝通。這些節點可以部署在同一臺主機上,也可以部署在不同主機上,甚至還可以部署在互聯網上。ROS 網絡通信機制中的主節點(master)負責對網絡中各個節點之間的通信過程進行管理調度,同時提供一個用于配置網絡中全局參數的服務。

ROS 是松耦合軟件框架,利用分布式通信機制實現節點間的進程通信。ROS 的軟件代碼以松耦合方式組織,開發過程靈活,管理維護方便。

ROS 具有豐富的開源功能庫。ROS 是基于 BSD(Berkeley Software Distribution,伯克利軟件發行)協議的開源軟件,允許任何人修改、重用、重發布以及在商業和閉源產品中使用,使用 ROS 能夠快捷地搭建自己的機器人原型。

2. ROS 的發行版本

與 Linux 發行版類似,ROS 發行版內置了一系列常用功能包,即將 ROS 系統打包安裝到原生系統中。ROS 最初是基于 Ubuntu 系統開發的,ROS 的發行版本名稱也和 Ubuntu 采用了同樣的規則,即版本名稱由兩個相同首字母的英文單詞組成,版本首字母按字母表遞增順序選取,圖 1 - 1 展示了 ROS 的一些主要版本。

圖 1 -1 ROS 的主要版本 ROS 系統架構

安裝完 ROS 后,很多朋友應該迫不及待想立馬開始寫程序。由于 ROS 的架構比較復雜,為了后面容易理解遇到的各種概念,這里先討論一下 ROS 的系統架構,好讓大家對 ROS 中的各種概念有全面性把控。按照官方的說法,可以分別從計算圖、文件系統和開源社區視角來理解 ROS 架構。

1. 從計算圖視角理解 ROS 架構

ROS 中可執行程序的基本單位叫節點(node),節點之間通過消息機制進行通信,這樣就組成了一張網狀圖,也叫計算圖,如圖 1 - 3 所示。

圖 1 -3 ROS 的計算圖結構

節點是可執行程序,通常也叫進程。ROS 功能包中創建的每個可執行程序在被啟動加載到系統進程中后,就是一個 ROS 節點,如圖 1 - 3 中的節點 1、節點 2、節點 3 等。

節點之間通過收發消息進行通信,消息收發機制分為話題(topic)、服務(service)和動作(action)三種,如圖 1 - 3 中的節點 2 與節點 3、節點 2 與節點 5 采用話題通信,節點 2 與節點 4 采用服務通信,節點 1 與節點 2 采用動作通信。計算圖中的節點、話題、服務、動作都要有唯一名稱作為標識。

ROS 利用節點將代碼和功能解耦,提高了系統的容錯性和可維護性。所以最好讓每個節點都具有特定的單一功能,而不是創建一個包羅萬象的龐大節點。如果用 C ++ 編寫節點,需要用到 ROS 提供的 roscpp 庫;如果用 Python 編寫節點,需要用到 ROS 提供的 rospy 庫。

消息是構成計算圖的關鍵,包括消息機制和消息類型兩部分。消息機制有話題、服務和動作三種,每種消息機制中傳遞的數據都具有特定的數據類型(即消息類型),消息類型可分為話題消息類型、服務消息類型和動作消息類型。消息機制和消息類型將在 1.5 節中展開講解。

數據包(rosbag)是 ROS 中專門用來保存和回放話題中數據的文件,可以將一些難以收集的傳感器數據用數據包錄制下來,然后反復回放來進行算法性能調試。

參數服務器能夠為整個 ROS 網絡中的節點提供便于修改的參數。參數可以認為是節點中可供外部修改的全局變量,有靜態參數和動態參數。靜態參數一般用于在節點啟動時設置節點工作模式;動態參數可以用于在節點運行時動態配置節點或改變節點工作狀態,比如電機控制節點里的 PID 控制參數。

主節點負責各個節點之間通信過程的調度管理。因此主節點必須要最先啟動,可以通過 roscore 命令啟動。

2. 從文件系統視角理解 ROS 架構

ROS 程序的不同組件要放在不同的文件夾中,這些文件夾根據不同的功能對文件進行組織,這就是 ROS 的文件系統結構,如圖 1 - 4 所示。

圖 1 -4 ROS 的文件系統結構

工作空間是一個包含功能包、編譯包和編譯后可執行文件的文件夾,用戶可以根據自己的需要創建多個工作空間,在每個工作空間中開發不同用途的功能包。在圖 1 - 4 中,我們創建了一個名為 catkin_ws 的工作空間,其中包含 src、build 和 devel 三個文件夾。

src 文件夾放置各個功能包和配置功能包的 CMake 配置文件 CMakeLists.txt。這里說明一下,由于 ROS 中的源碼采用 catkin 工具進行編譯,而 catkin 工具又基于 CMake 技術,所以我們在 src 源文件空間和各個功能包中都會見到一個 CMake 配置文件 CMakeLists.txt,這個文件起到配置編譯的作用。

build 文件夾放置編譯 CMake 和 catkin 功能包時產生的緩存、配置、中間文件等。

devel 文件夾放置編譯好的可執行程序,這些可執行程序是不需要安裝就能直接運行的。一旦功能包源碼編譯和測試通過后,可以將這些編譯好的可執行文件直接導出與其他開發人員分享。

功能包是 ROS 中軟件組織的基本形式,具有創建 ROS 程序的最小結構和最少內容,它包含 ROS 節點源碼、腳本、配置文件等。

i. CMakeLists.txt 是功能包配置文件,用于編譯 Cmake 功能包編譯時的編譯配置。

ii. package.xml 是功能包清單文件,用 xml 的標簽格式標記該功能包的各類相關信息,比如包的名稱、開發者信息、依賴關系等,主要是為了使功能包的安裝和分發更容易。

iii. include/ pkg_name 是功能包頭文件目錄,可以把功能包程序中包含的 *.h 頭文件放在這里。include 目錄之所以還要加一級路徑 pkg_name 是為了更好地區分自己定義的頭文件和系統標準頭文件,pkg_name 用實際功能包的名稱替代。不過這個文件夾不是必要項,比如有些程序沒有頭文件。

iv. msg、srv 和 action 這三個文件夾分別用于存放非標準話題消息、服務消息和動作消息的定義文件。ROS 支持用戶自定義消息通信過程中使用的消息類型。這些自定義消息不是必要的,比如程序只使用標準消息類型。

v. scripts 目錄存放 Bash、Python 等腳本文件,為非必要項。

vi. launch 目錄存放節點的啟動文件,*.launch 文件用于啟動一個或多個節點,在含有多個節點的大型項目中很有用,為非必要項。

vii. src 目錄存放功能包節點所對應的源代碼,一個功能包中可以有多個節點程序來完成不同的功能,每個節點程序都可以單獨運行。這里 src 目錄存放的是這些節點程序的源代碼,你可以按需創建文件夾和文件來組織源代碼,源代碼可以用 C ++、Python 等編寫。

3. 從開源社區視角理解 ROS 架構

ROS 是開源軟件,各個獨立的網絡社區分享和貢獻軟件及教程,形成了強大的 ROS 開源社區,如圖 1 - 5 所示。

圖 1 -5 ROS 的開源社區結構

ROS 的發展依賴于開源和共享的軟件,這些代碼由不同的機構共享和發布,比如 GitHub 源碼共享、Ubuntu 軟件倉庫發布、第三方庫等。ROS 的官方 wiki 是重要的文檔討論社區,在里面可以很方便地發布與修改相應的文檔頁面。ROS 的 answer 主頁里有大量 ROS 開發者的提問和回答,對 ROS 開發中遇到的各種問題的討論很活躍。

讀到這里,這篇“ros 是 linux 發行版本嗎”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-12發表,共計4716字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 西藏| 奈曼旗| 临潭县| 虞城县| 黎川县| 济宁市| 贵港市| 奉节县| 平利县| 惠东县| 齐河县| 清徐县| 汉沽区| 凌云县| 冀州市| 永川市| 涞水县| 武冈市| 泊头市| 舞阳县| 星座| 永泰县| 仁布县| 满城县| 和林格尔县| 隆回县| 达州市| 西吉县| 宿迁市| 霍州市| 莱州市| 永德县| 海南省| 北海市| 巴彦县| 虹口区| 泊头市| 神农架林区| 周宁县| 安化县| 武强县|