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重新配置你的網路。
筆記本:
$ 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...