ROS的(de)分布式架構主(zhǔ)要通(tōng)過以下幾(jǐ)個方(fāng)麵實現:
節(jiē)點與節點管理器
節點(diǎn)(Node):ROS係統由多個節點組成,每(měi)個節(jiē)點是一個執行特定功能的進程,可通過發布和訂閱消息與其他節點通信。節點可以用C++、Python等多種編程語言編寫,運行在不同的計(jì)算機上。
節點管理器(Node Master):在ROS中,節點管理器負(fù)責管理節點的注冊和通信。節點在啟動時向節點管理器注冊(cè)自己的信息,包括節點名稱、話題和服務等。節點管理器維護著節點的注冊表,使得節點之間能夠相互發現和通信。
通信機製
話(huà)題(tí)(Topic)通(tōng)信:話題是ROS中最常見的通信方式(shì),用於節點之間的異步通信。節點可以發(fā)布消息到特定話題,也可以訂閱特定話題以接收消息。話題通信模式基於發布-訂閱模型,發布者和訂閱者(zhě)之間解耦,適合(hé)不需要即時響應的(de)場景。
服務(Service)通信(xìn):服務提供了一(yī)種請求-響應的同步通信機製。客戶端發送請求到(dào)服務端,服務端(duān)處理請求並返回響應,適用於需要即時反饋的場景。
操作(Action)通信:操作是一種用於執行長時間運(yùn)行任務的通信(xìn)機製,結(jié)合了話題和服務的特點(diǎn)。客戶端發送目標請求給操作服務器,接(jiē)收任(rèn)務進(jìn)度反饋以(yǐ)及最終結果。
分布(bù)式網絡搭建
IP地址設置:確保不同計算機(jī)的底層鏈路聯通,設置對方的IP地址和計算機名,通(tōng)過Ping命令測試網絡(luò)是否聯通(tōng)。
ROS_MASTER_URI設置:在從機端設置ROS_MASTER_URI環境變量,指定ROS Master的位置,以便從機能夠找到ROS Master並進行通(tōng)信。
參數服務器
ROS的參數服務(wù)器允許節點在全局範圍內存儲和檢索參數,節點可以通過rospy庫中(zhōng)的API來設置和(hé)獲取參數。參數服(fú)務器(qì)使得節點可以共享配置信息、初(chū)始化數據以及其他需要在多個節點(diǎn)間(jiān)共享(xiǎng)的數據(jù)。