description:
本教程將展示如何在兩台機器上使用ros系統,詳述了使用
ros_master_uri
來配置多台機器使用同乙個master。
tutorial level:
intermediate
next tutorial:
自定義訊息型別 目錄
概述跨機器執行的 talker / listener
啟動 master
啟動 listener
啟動 talker
反向測試
執行出錯
譯者注
ros設計的靈魂就在於其分布式計算。乙個優秀的節點不需要考慮在哪台機器上執行,它允許實時分配計算量以最大化的利用系統資源。(有乙個特例——驅動節點必須執行在跟硬體裝置有物理連線的機器上)。在多個機械人上使用ros是一件很簡單的事,你只需要記住一下幾點:
假如說我們希望在兩台機器上分別執行talker / listener, 主機名分別為
marvin 和 hal.登陸主機名為marvin的機器,你只要:
ssh marvin
同樣的方法可以登陸hal.
我們需要選擇一台機器執行master,這裡我們選hal. 啟動master的第一步是:
ssh halroscore
接下來我們在機器hal上啟動listener, 並配置ros_master_uri,這樣就可以使用剛剛啟動的master了:
現在我們要在marvin 機器上啟動talker,同樣通過配置ros_master_uri來使用hal機器上的master:
小驚喜: 現在你可以看到機器hal上的listener正在接收來自marvin機器上talker發布的訊息。
請注意,talker / listener啟動的順序是沒有要求的, 唯一的要求就是master必須先於節點啟動。
現在我們來嘗試一下反向測試。終止talker和listener的執行,但仍然保留master在機器
hal上,然後讓talker和listerner交換機器執行。
首先,在機器marvin啟動listerner:
然後在機器hal上啟動talker:
如果沒有取得如上預期的效果,那麼很有可能是你的網路配置出錯了。參考ros/networksetup重新配置你的網路。
根據譯者的嘗試,如果你想取得如上預期效果,你還需配置ros_ip為當前的區域網ip位址。(利用ifconfig指令可以檢視你當前的ip位址)。其次,很有可能你的主機名不能夠被其他機器解析,所以保險的方法是利用 ssh hostname@local_ip的方式進行登陸(如ssh [email protected]
)。再者,ros_master_uri最好也用執行master的那台機器的ip位址來替換主機名(如:export ros_master_uri=
)
Lua教程(二十二) userdata
在lua中可以通過自定義型別的方式與c語言 更高效 更靈活的互動。這裡我們通過乙個簡單完整的示例來學習一下lua中userdata的使用方式。需要說明的是,該示例完全來自於programming in lua。其功能是用c程式實現乙個lua的布林陣列,以提供程式的執行效率。見下面的 和關鍵性注釋。複...
ROS多機械人通訊
ros設計的靈魂就在於其分布式計算。乙個優秀的節點不需要考慮在哪台機器上執行,它允許實時分配計算量以最大化的利用系統資源。有乙個特例 驅動節點必須執行在跟硬體裝置有物理連線的機器上 在多個機械人上使用ros是一件很簡單的事,你只需要記住一下幾點 1.你只需要乙個master,只要在乙個機器上執行它就...
ROS學習筆記32(ROS在多機械人上的使用)
ros設計的靈魂就在於其分布式計算。乙個優秀的節點不需要考慮在哪台機器上執行,它允許實時分配計算量以最大化的利用系統資源。有乙個特例 驅動節點必須執行在跟硬體裝置有物理連線的機器上 在多個機械人上使用ros是一件很簡單的事,你只需要記住一下幾點 假如說我們希望在兩台機器上分別執行talker lis...