ROS

ROS tutorials 系列(4) Understanding ROS Nodes

原文:http://www.ros.org/wiki/ROS/Tutorials/UnderstandingNodes

從Node開始, 我們會開始使用到ROS的核心機制, 並具體了解ROS的好用之處

另外,從這一篇開始我們會學習大量ROS指令,建議下載一份ROS cheat sheet來節省時間.

————————————————————————————

1.2 Quick Overview of Graph Concepts

基本上,學過演算法的人應該會有概念,Graph可以幫我們 model很多問題,然後用Graph相關演算法來處理問題

在ROS中,我們的程式被model成一個個的node,便於在process level debug.

我暫且不詳細說明Master, Topic, Message, rosout, roscore這些觀念,因為現在講沒有太大幫助,只要先有一個簡單的概念即可

Master就是ROS的核心,他會有一個list,上面紀錄著有哪些node正在運行,若沒有這個list,node間無法互相溝通,因為你根本不知道有哪些node,就像是我們用FB聊天室,但沒有顯示誰在線上.

Topic是node間溝通的重要機制,概念上像是一個桶子,某個node可以丟資料到某個桶子裡,需要的node就直接去這個筒子拿.好處是,一個topic(一個桶子)可以有多個node來拿資料而不衝突.

Message則是topic不可或缺的”指示”,因為如果只有topic,不會知道topic裡的資料格式如何,所以我們需要Message來表示這個格式.就像是我們去考試,助教把考卷這個資料丟到考場這個topic裡,我們去這個topic拿資料(考卷),我們預期是考卷這種格式, 如果我們拿到的是上課講義, 會覺得很不合理,因為考場這個topic的資料格式應該是考卷.

1.3 Nodes

Node基本上就只是一個執行中的程式,它跟我們一般寫的程式唯一不同之處在於Master”知道”這個程式的存在,而這件事要成立,我們寫的的程式得使用ROS client library.

然後關於topic,我們會說發布資料到topic的node是publisher,它publish資料到topic,而接收topic的node則是subscriber,它subscribe某個topic

1.5  Roscore

roscore是在啟動任何ROS程式前要先啟動的,因為沒有Master,我們一旦啟動node,會找不到管理這些node的人(which is Master).

不過如果用roslaunch啟動程式,就會自動啟動roscore,不過在還沒學習到roslaunch前,都要先在一個終端機輸入roscore啟動Master.

1.6 Using rosnode

rosnode是ROS提供的,幫助我們理解node,debug node的指令.

原文裡的範例很清楚,不贅述

不過我要補充另一個好用的工具, rqt_graph

在另一個終端機輸入rqt,就可以看到目前node的graph分佈,方便我們查看哪些node彼此有關係,基本上可說是process level的debugger.

1.7 Using rosrun

rosrun是一個很好用的指令,可以直接執行package裡面的執行檔,

原文中的指令

rosrun turtlesim turtlesim_node

就是執行turtlesim這個package裡面的turtlesim_node這個執行檔,

驗證方法是用roscd turtlesim切換到turtlesim這個package底下,然後就會看到turtlesim_node這個執行檔了

————————————————————————————

小tips

有時候會有所謂zombie node出現,這種node一旦出現,rxgraph上會顯示紅色的大圈圈,這時可以用一個隱藏的指令砍掉zombie node

rosnode cleanup

不過這個指令似乎有誤砍正常node的風險,所以請小心使用.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s