[大神勿擾]ROS菜鳥修行之ROS淺談

此文只給菜鳥修行用,大神請勿來亂!

ros-538x218

ROS的全名是Robot Operating System,意思即為機器人操作系統。當中容易讓人困擾的是,名字裡雖然有個Operating System(操作系統),但它並不是獨立的OS,而要依賴於Linux Ubuntu系統之上。ROS在Ubuntu有現成的軟件倉庫,但是事實上只要是Linux/Unix都可以從源代碼編譯安裝。

ROS其實是運行在PC上的一套便於機器人開發的機制,它通常用作上位機和裝置在機器人上作為主控(ex.Turtlebot使用了搭載ROS的筆記本電腦作為主控)。由於中文資料本來就少(特別是繁體),而且ROS一直在更新,因此,還是非常強烈建議菜鳥們通過ROS英文官方網站的來學習ROS。

kinetic-thumb-640x530-1441

ROS Core

ROS CORE是ROS運行的基礎,它裡面有parameter server(參數服務器)。一個運行中的ROS有且僅有一個ROS內核,ROS上的一切都依賴於這個內核。ROS底層的通信是通過HTTP完成的,因此ROS內核本質上是一個HTTP服務器,它的地址通常都設為http://localhost:11311/ ,即本機的11311端口。如果需要連接另一台電腦上運行的ROS時,只要連上該電腦的11311端口就可以了。

*建議菜鳥們都習慣用ROS的英文關鍵字,要理解英文這樣才會學的比較快

Node

Node是ROS運行的基本單位,每個Node執行一整個大系統的一小部分功能,比如發送機器人姿態訊息,傳送控制訊息和執行一定的計算任務等。 一個機器人的運行,依賴於Node彼此之間的協調和合作。 Node之間如何溝通,都是依靠Message和Service。

Message

ROS有好多個Topic。每個Node可以對Topic進行subscribe,也可以進行publish的操作。Node可以向某個topic發布message,然後subscribe了該topic的node就會自動收到message。這些Message是有data type的。一類message可以由一些基本數據結構組成。EX. 表示姿態的Pose類型消息,就由6個64bit float組成,分別代表3D裡姿態的六個參數。Message的data type的定義寫在.msg文件裡。

Service

Service是Node之間除了Message以外的另一種溝通方式。每個Node都可以建立Message。其它node可以向該service發出一個Request,負責這個service的node就要相應地返回一個Response。Message與Service的不同之處,在於service必須是一對一的,一問一答,可靠性很高。message則可以多對多。Service也和Message一樣,是有Data type的。Service類型的定義寫在.srv文件裡,格式與表示Message類型的.msg文件類似,但要分別描述Request的data type和Respond的data type。

Screenshot_4

Package

ROS的Package裡包含了ROS運行所需要的資源,比如cpp, message和service的類型定義等。 一個package裡會包含一個package.xml文件,文件裡有關於這個package的基本訊息。通常還有個CMakeLists.txt文件,這個文件提供編譯和安裝package時需要的訊息,比如有哪些文件需要編譯、程式要調用哪些library等。 Package編的時候,所有的Message和Service各自data type的C++和Python庫都會重新生成,C++代碼會重新編譯,其它一些在CMakeLists.txt規定的任務都會執行。 在package里新建一個C++文件時,請記得修改CMakeLists.txt;在package里新建一個msg文件時,請記得修改CMakeLists.txt;當你在package里新建一個.srv文件時,請記得修改CMakeLists.txt;在package里新建一個Python文件時,不必修改CMakeLists.txt。

launch

當需要有很多node同時啟動的時候,一個個啟動會很麻煩,寫一個.launch文件就可以把這些node都包括進去,只需啟動一個.launch文件,就等於把這些node都啟動了。

Bag

Bag是ROS用來記錄運行期間消息的格式。記錄完以後,隨時可以重放這些消息。我們可以用它來記錄機器人運行時sensor的數據,留待運行結束以進行分析。

raspberry-pi-ros-8-638

‪#‎ros‬ ‪#‎robot‬ ‪#‎operating‬ ‪#‎system‬ ‪#‎機器人‬ #ROS機器人開發

學習資料

ROS官網

http://wiki.ros.org/

ROS Wikipedia

https://zh.wikipedia.org/zh-tw/%E6%A9%9F%E5%99%A8%E4%BA%BA%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1

Author: kennedywai

Chinese Malaysian+Gaming+Robotics+Startup 馬來西亞華人+電動遊戲+機器人領域+初創

3 thoughts on “[大神勿擾]ROS菜鳥修行之ROS淺談”

Leave a comment