Ros中的命名空間

2021-10-10 15:37:24 字數 1708 閱讀 9387

ros中的命名空間

在發布或者定閱時,有這麼一行**

ros::init(argc, ar**, "publish_node_a");

ros::nodehandle nh;

ros::publisher sub_pub = nh.advertise("chattera",1000);

第三行"chattera"就是一種命名空間名稱的方式。

計算圖源的名稱分為:

1)基礎名稱,例如chattera

2)全域性名稱,例如/a/chattera

3)相對名稱,例如a/chattera

4)私有名稱,例如~chattera

通過這段**對這四種命名方式做乙個解釋。

1. 基礎名稱

ros::init(argc, ar**, "publish_node_a");

ros::nodehandle nh;

ros::publisher sub_pub = nh.advertise("chattera",1000);

當你以「chattera」對話題進行命名,此時rostopic list列印得到全域性名稱的結果為 /chattera

2. 全域性名稱

ros::init(argc, ar**, "publish_node_a");

ros::nodehandle nh;

ros::publisher sub_pub = nh.advertise("/a/chattera",1000);

當你以「/a/chattera」對話題進行命名,此時rostopic list列印得到全域性名稱的結果為 /a/chattera

3. 相對名稱

ros::init(argc, ar**, "publish_node_a");

ros::nodehandle nh;

ros::publisher sub_pub = nh.advertise("a/chattera",1000);

當你以「a/chattera」對話題進行命名,此時rostopic list列印得到全域性名稱的結果為 /a/chattera

使用相對名稱時,預設的命名空間十分重要,這裡只介紹以launc**件修改預設命名空間的方式。

在launc**件中,通過設定ns引數來確定預設命名空間

以啟動launc**件的方式啟動該節點,此時rostopic list列印得到全域性名稱的結果為 /ab/a/chattera

4. 私有名稱

ros::init(argc, ar**, "publish_node_a");

ros::nodehandle nh("~");

ros::publisher sub_pub = nh.advertise("chattera",1000);

當你以「chattera」對話題進行命名,此時rostopic list列印得到全域性名稱的結果為 /publish_node_a/chattera

這時話題在你的節點名字後面。

如果我以launc**件啟動,節點引數設定如下:

此時rostopic list列印得到全域性名稱的結果為 /lidar_radar_fusiona/chattera 

節點名稱因為launc**件啟動被替換成了lidar_radar_fusiona。

ROS 命名空間

ros 計算圖級資源 節點 引數 主題 服務,這些命名規範和解釋規則適應所有這些資源,在ros中配置引數,進行topic訂閱發布中很重要!命名規範 第乙個字元必須是 a z a z 或者波浪號 或者斜槓 後面的字元可以是 0 9 a z a z 下劃線 斜槓 名字的解釋規則 全域性 global 命...

ROS的命名空間與重對映

ros的命名空間有全域性命名空間 相對命名空間 私有命名空間 對應著全域性名稱 相對名稱 私有名稱 用於區分topic等 以 開頭的節點名 話題名表示其屬於全域性命名空間,被稱為全域性名稱,在整個程式中是獨一無二的,具有絕對的意味 例如 turtlesim turtle1 cmd vel a b c...

c 中regex的命名空間 c 命名空間

system.transactions 命名空間 注意 此命名空間在 net framework 2.0 版中是新增的。使用 system.transactions 命名空間包含的類可以編寫自己的事務應用程式和資源管理器。具體地說,可以建立和參與 與乙個或多個參與者 本地或分布式事務。system....