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