ros是乙個分布式計算環境。乙個執行中的ros系統可以包含分布在多台計算機上多個節點。根據系統的配置方式,任何節點可能隨時需要與任何其他節點進行通訊。
因此,ros對網路配置有某些要求:
實現
1.準備
先要保證不同計算機處於同一網路中,最好分別設定固定ip,如果為虛擬機器,需要將網路介面卡改為橋接模式;
2.配置檔案修改
分別修改不同計算機的 /etc/hosts 檔案,在該檔案中加入對方的ip位址和計算機名:
主機端:
從機的ip 從機計算機名
從機端:
主機的ip 主機計算機名
設定完畢,可以通過 ping 命令測試網路通訊是否正常。
ip位址檢視名: ifconfig3.配置主機ip計算機名稱檢視: hostname
配置主機的 ip 位址
~/.bashrc 追加
export ros_master_uri=http://主機ip:11311
export ros_hostname=主機ip
4.配置從機ip
配置從機的 ip 位址,從機可以有多台,每台都做如下設定:
~/.bashrc 追加
export ros_master_uri=http://主機ip:11311
export ros_hostname=從機ip
測試
1.主機啟動 roscore(必須)
2.主機啟動訂閱節點,從機啟動發布節點,測試通訊是否正常
3.反向測試,主機啟動發布節點,從機啟動訂閱節點,測試通訊是否正常
分布式通訊方式 分布式訊息傳遞
談到系統間的協作,目前常用兩種方式 1 基於http協議 通過客戶端發起的get post請求,服務端接收request請求,處理請求,得到響應內容,通過網路傳送到客戶端,由瀏覽器解析出乙個視覺化的頁面。這種互動最大的優勢是實時性,通過http請求連線各個子系統,從而跨伺服器來完成乙個完整的業務流程...
ROS分布式多機通訊(主從網路的設定)
在構建機械人的過程中,為了方便除錯和後期擴充套件,採用 pc 英偉達jetson nano 分布式的方式來處理資料。pc作為主機,跑網路,進行處理資料等主要工作 安裝在機械人上的英偉達jetson nano作為從機,主要用來採集各種感測器採集來的環境資料。據我了解,有些slam套件為了實現離線工作 ...
分布式 分布式鎖
本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...