ROS_DOMAIN_ID

定義

ROS_DOMAIN_ID 是一個環境變數,決定 DDS 底層節點探索的網路層級隔離範圍——設定了不同 ROS_DOMAIN_ID 的節點,即使在同一個實體網路裡,也完全無法探索到彼此的存在,是比命名空間更徹底的隔離手段。

關鍵特性

  • 跟命名空間解決不同層級的問題:命名空間隔離的是「同一個網路裡名稱不要衝突」,機器人之間仍能互相通訊;ROS_DOMAIN_ID 則是完全隔離,適合彼此不需要知道對方存在的獨立系統。
  • 同一終端機的所有節點需一致:如果同一組系統裡不同終端機啟動的節點,ROS_DOMAIN_ID 設定不一致,會出現「明明程式碼跑起來了,但彼此完全看不到」的困惑現象。
  • 有效範圍有限ROS_DOMAIN_ID 是整數,實務上要避免多組系統剛好選到相同數值造成非預期的互相干擾。

使用情境

  • 同一棟大樓裡多組獨立的機器人示範站,剛好共用同一個區域網路時,用不同 ROS_DOMAIN_ID 避免互相干擾。
  • 排查「明明兩邊都啟動了,卻完全連不上」的問題時,第一個該檢查的環境變數。

延伸閱讀