ROS教程(二十二) ROS在多機械人上的使用

2021-08-02 22:37:10 字數 1884 閱讀 9168

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 hal

roscore

接下來我們在機器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...