ROS學(xué)習(xí)筆記(七)- 理解ROS Nodes

這一篇介紹ROS graph的概念执隧,并且討論roscore,rosnode和rosrun命令行工具的用法

1 預(yù)備知識

又來一遍,以前的教程都有過了灯变。
$ sudo apt-get install ros-<distro>-ros-tutorials
<distro>換成ROS版本號,我的是kinetic.

2 快速了解概Graph的概念

  • Nodes:一個Node第一個可執(zhí)行程序捅膘,通過ROS與其他Nodes連接添祸。
  • Messages:是一種ROS數(shù)據(jù)類型,向topic訂閱和發(fā)布時使用刃泌。
  • Topics:Node可以向Topic發(fā)送Message或者向Topic訂閱Message署尤。
  • Master:ROS名稱服務(wù),也就是幫助Node找到彼此俗扇。
  • rosout:ROS等價于stdout/stderr(我也不明白什么意思)箕别。
  • roscore:Master + rosout + parameter server(參數(shù)服務(wù)后面再說)

3 Nodes

Node差不多就是包里的一個可執(zhí)行程序串稀,Node之間可以通過一些服務(wù)通信,可以向Topic推送或者訂閱消息到忽,也可以提供或者使用服務(wù)喘漏。

4 客戶庫

ROS客戶庫允許Node用不同的編程語言寫入交流华烟。

  • rospy = python client library
  • roscpp = c++ client library

5 roscore

roscore是使用ROS之前需要第一個運(yùn)行的東西
運(yùn)行一下:
roscore
就會看到下面這個:

... logging to /home/qkingros/.ros/log/2f9f1242-fe5f-11e6-a174-000c29724ec8/roslaunch-ubuntu-4747.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

>started roslaunch server http://ubuntu:46865/
ros_comm version 1.12.6


SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.6

NODES

auto-starting new master
process[master]: started with pid [4759]
ROS_MASTER_URI=http://ubuntu:11311/

setting /run_id to 2f9f1242-fe5f-11e6-a174-000c29724ec8
process[rosout-1]: started with pid [4772]
started core service [/rosout]

6 使用rosnode

新打開一個Terminal帽馋,用rosnode看一下roscore到底在做什么。
rosnode顯示當(dāng)前正在運(yùn)行的ROS nodes的信息姨涡。rosnode list命令列舉出了這些活動的node:
rosnode list
你可以看到:

/rosout

顯示只有一個node在運(yùn)行吧慢,rosout總是在運(yùn)行检诗,因?yàn)樗怯脕硎占陀涗沶ode調(diào)試輸出的。
rosnode info指令返回指定node的信息:
$ rosnode info /rosout
這個指令會返回更多關(guān)于rosout的信息悠轩,可以看到它發(fā)布了/rosout_agg火架,訂閱了忙菠。。骡男。額洞翩,訂閱了自己焰望,還有兩個服務(wù)。

--------------------------------------------------------------------------------
Node [/rosout]
Publications: 
 * /rosout_agg [rosgraph_msgs/Log]

Subscriptions: 
 * /rosout [unknown type]

Services: 
 * /rosout/set_logger_level
 * /rosout/get_loggers


contacting node http://ubuntu:33983/ ...
Pid: 4772

下面要看更多node来屠,我們要先使用rosrun再打開一個node俱笛。

7 使用rosrun

rosrun允許直接通過node的名稱運(yùn)行一個包內(nèi)的node迎膜。
用法:
$ rosrun [package_name] [node_name]
再打開一個Terminal浆兰,運(yùn)行:
$ rosrun turtlesim turtlesim_node
就會顯示一只小烏龜珊豹,可能是海龜?shù)目ㄍ▓D片店茶。
打開一個新窗口輸入:
rosnode list
這個時候會顯示:

/rosout
/turtlesim

ROS一個比較特色的功能就是可以使用命令行更改名字贩幻。
關(guān)掉海龜?shù)拇翱诨蛘咴谶\(yùn)行海龜?shù)拿钚写翱贑trl+C丛楚,現(xiàn)在重新運(yùn)行憔辫,并且順便給這個node改名:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
你會發(fā)現(xiàn),誒……海龜變了一個喧务。然鵝枉圃,這并不是改名起的作用孽亲,海龜樣式本來就是隨機(jī)出現(xiàn)的返劲。真正改變的是這里:
$ rosnode list
然后顯示的就類似于下面這個:

/my_turtle
/rosout
/turtlesim

仍然存在/turtlesim的原因是栖茉,剛剛用Ctrl-C而不是直接關(guān)掉窗口關(guān)掉了第一只海龜,可以使用$ rosnode cleanup清理一下列表亲配。
根本原因是沒有把 $ROS_HOSTNAME 環(huán)境變量設(shè)置成單機(jī)運(yùn)行惶凝,可以進(jìn)行如下設(shè)置之后再清理一下苍鲜。

$ export ROS_HOSTNAME=localhost
$ export ROS_MASTER_URI=http://localhost:11311

還可以ping它一下:
$ rosnode ping my_turtle
結(jié)果如下:

rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of 3.0s
xmlrpc reply from http://ubuntu:44591/  time=1.052856ms
xmlrpc reply from http://ubuntu:44591/  time=1.233101ms
xmlrpc reply from http://ubuntu:44591/  time=1.811028ms
xmlrpc reply from http://ubuntu:44591/  time=3.592014ms
xmlrpc reply from http://ubuntu:44591/  time=1.348972ms
xmlrpc reply from http://ubuntu:44591/  time=1.852036ms
xmlrpc reply from http://ubuntu:44591/  time=1.216173ms
xmlrpc reply from http://ubuntu:44591/  time=0.966072ms
xmlrpc reply from http://ubuntu:44591/  time=0.771046ms
xmlrpc reply from http://ubuntu:44591/  time=0.880003ms
xmlrpc reply from http://ubuntu:44591/  time=0.697851ms
xmlrpc reply from http://ubuntu:44591/  time=0.758171ms
xmlrpc reply from http://ubuntu:44591/  time=0.686169ms
xmlrpc reply from http://ubuntu:44591/  time=1.352072ms
xmlrpc reply from http://ubuntu:44591/  time=0.720024ms
xmlrpc reply from http://ubuntu:44591/  time=1.090050ms

8 復(fù)習(xí)

這個教程講了:

  • roscore=ros+core:master(提供ROS名稱服務(wù))+rosout(stdout/stderr)+parameter server
  • rosnode=ros+node:ROS 獲取node信息的工具
  • rosrun=ros+run:從一個指定的包中運(yùn)行一個node
    現(xiàn)在我們已經(jīng)了解了node是怎么工作的混滔,下面介紹Topic是怎么工作的歹颓。
    而且接下來你可以放肆的使用Ctrl+C了晴股。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末电湘,一起剝皮案震驚了整個濱河市鹅经,隨后出現(xiàn)的幾起案子瘾晃,更是在濱河造成了極大的恐慌,老刑警劉巖蹦误,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件强胰,死亡現(xiàn)場離奇詭異偶洋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)玄窝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門帽氓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俩块,“玉大人典阵,你說我怎么就攤上這事∽嘲。” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵座菠,是天一觀的道長藤树。 經(jīng)常有香客問我,道長升略,這世上最難降的妖魔是什么屡限? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任钧大,我火速辦了婚禮啊央,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓜饥。我一直安慰自己压固,他們只是感情好靠闭,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拦键,像睡著了一般芬为。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媚朦,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天询张,我揣著相機(jī)與錄音浙炼,去河邊找鬼唯袄。 笑死恋拷,一個胖子當(dāng)著我的面吹牛厅缺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阎抒,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼且叁,長吁一口氣:“原來是場噩夢啊……” “哼逞带!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起展氓,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎簿废,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歪赢,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埋凯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年白对,在試婚紗的時候發(fā)現(xiàn)自己被綠了甩恼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屈溉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帆赢,我是刑警寧澤线梗,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站仪搔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏偏陪。R本人自食惡果不足惜笛谦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一饥脑、第九天 我趴在偏房一處隱蔽的房頂上張望懦冰。 院中可真熱鬧儿奶,春花似錦鳄抒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祭犯。三九已至,卻和暖如春沃粗,著一層夾襖步出監(jiān)牢的瞬間粥惧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工最盅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留突雪,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓涡贱,卻偏偏與公主長得像咏删,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子问词,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容