ROS 命名空間

2021-08-07 15:13:45 字數 1393 閱讀 7837

ros 計算圖級資源:

節點、引數、主題、服務,這些命名規範和解釋規則適應所有這些資源,在ros中配置引數,進行topic訂閱發布中很重要!!!
命名規範

第乙個字元必須是([a-z|a-z]),或者波浪號~或者斜槓/

後面的字元可以是([0-9|a-z|a-z]), 下劃線( _ ),斜槓(\)

名字的解釋規則

/ -> 全域性(global)命名空間

~ -> 區域性(private)空間

舉例:node

relative(default)

global

private

/node1

bar -> /bar

/bar -> /bar

~bar -> /node1/bar

/wg/node2

bar -> /wg/bar

/bar -> /bar

~bar -> /wg/node2/bar

/wg/node3

foo/bar -> /wg/foo/bar

/foo/bar -> /foo/bar

~foo/bar -> /wg/node3/foo/ba

relative : 相對於節點的命名空間

進行解釋的。/node1 的空間是global空間 所以 relative解釋為/(上表第一行 bar->/bar)

/node1 會形成乙個 私有空間 ~

2017/10/30

ros::nodehandle nh

ros::nodehandle nh(「~」)

// nh_,nh_private_ 定義在類中,下面兩個出現在初始化列表中

nh_(ros::nodehandle()), /* this is an initialization list */

nh_private_(ros::nodehandle(「~」)) /* if you don』t know what that means, go read about it */

類中的nh_ 和主函式中的nh關係:」可視範圍內」 在命名空間上存在關聯

在類建構函式後面的初始化列表中出現的ros::nodehandle(「~」)解釋為/node/的內部(私有)。

nh_private:一般用來引數配置。在launch檔案中param標籤會把引數解釋為/node/param_name,相當於(~param_name)

nh可以定義多個,相對之間的關係不清楚,但是在命名空間都與node名字相關,nh相關命名空間按照relative or global解釋

launch檔案中啟動node時:ns引數可以定義node所在的命名空間/ns/nodename

Ros中的命名空間

ros中的命名空間 在發布或者定閱時,有這麼一行 ros init argc,ar publish node a ros nodehandle nh ros publisher sub pub nh.advertise chattera 1000 第三行 chattera 就是一種命名空間名稱的方式...

ROS的命名空間與重對映

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

由淺到深理解ROS(3) 命名空間

rosout前面的反斜槓 表明該節點名稱屬於全域性命名空間。之所以叫做全域性名稱因為它們在任何地方 包括 命令列工具 圖形介面工具等的任何地方 都可以使用。無論這些名稱用作眾多命令列工具的引數還是用在節點內部,它們都有明確的含義。這些名稱從來不會產生二義性,也無需額外的上下文資訊來決定名稱指的哪個資...