ROS學習筆記32(ROS在多機械人上的使用)

2021-09-25 04:26:27 字數 2975 閱讀 8371

ros設計的靈魂就在於其分布式計算。乙個優秀的節點不需要考慮在哪台機器上執行,它允許實時分配計算量以最大化的利用系統資源。(有乙個特例——驅動節點必須執行在跟硬體裝置有物理連線的機器上)。在多個機械人上使用ros是一件很簡單的事,你只需要記住一下幾點:

假如說我們希望在兩台機器上分別執行talker / listener, 主機名分別為marvinhal.登陸主機名為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重新配置你的網路。

筆記本:

$ ifconfig

192.168.1.10

$ hostname

junjun_master

配置檔案: sudo vim /etc/hosts,如下圖所示:

在127.0.1.1下面新增如下的語句:

192.168.1.10    junjun_master

192.168.1.11 junjun

重啟網絡卡:

sudo /etc/init.d/networking restart
工控機:

$ ifconfig

192.168.1.11

$ hostname

junjun

配置檔案: sudo vim /etc/hosts,同筆記本,同樣位置新增相同語句。

重啟網絡卡:

ssh junjun_master

ping junjun_master

ping junjun

安裝兩個軟體包:

sudo apt-get install chrony

sudo apt-get install opensh-server

筆記本通訊和修改.bashrc檔案:

工控機通訊和修改.bashrc檔案:

如此基本就ok。

ROS多機通訊

在所有的計算機上,我們使用命令將其他計算機的ip位址加入到hosts中 sudo gedit etc hosts新增後記得ping一下是否能聯通。對於從機,我們需要使用ros master uri對主機位置進行定位,具體命令如下 export ros master uri http host pc ...

ROS多機通訊

假設需要讓電腦biowin和電腦biowin g3實現連線,並以biowin g3為主機 1.讓所有計算機需要通訊處於同一網路 2.將區域網位址繫結到主機名上 如 192.168.1.56 biowin 192.168.1.69 biowin g3ifconfig如果是有線連線的網路檢視eth0下的...

ROS多機相連設定

機械人 ip 192.168.0.100 電腦 ip 192.168.0.101 機械人設定 server 電腦設定 client export ros master uri export ros hostname 192.168.0.101 測試 機械人下執行 roscore rosrun tur...