ROS_DOMAIN_ID
定義
ROS_DOMAIN_ID 是一個環境變數,決定 DDS 底層節點探索的網路層級隔離範圍——設定了不同 ROS_DOMAIN_ID 的節點,即使在同一個實體網路裡,也完全無法探索到彼此的存在,是比命名空間更徹底的隔離手段。
關鍵特性
- 跟命名空間解決不同層級的問題:命名空間隔離的是「同一個網路裡名稱不要衝突」,機器人之間仍能互相通訊;
ROS_DOMAIN_ID則是完全隔離,適合彼此不需要知道對方存在的獨立系統。 - 同一終端機的所有節點需一致:如果同一組系統裡不同終端機啟動的節點,
ROS_DOMAIN_ID設定不一致,會出現「明明程式碼跑起來了,但彼此完全看不到」的困惑現象。 - 有效範圍有限:
ROS_DOMAIN_ID是整數,實務上要避免多組系統剛好選到相同數值造成非預期的互相干擾。
使用情境
- 同一棟大樓裡多組獨立的機器人示範站,剛好共用同一個區域網路時,用不同
ROS_DOMAIN_ID避免互相干擾。 - 排查「明明兩邊都啟動了,卻完全連不上」的問題時,第一個該檢查的環境變數。