ROS 中Nodehandle及命名空间问题

// launch 文件中 ns=="node_namespace"
ros::init(argc, argv, "node_name"); // node name

ros::NodeHandle n; //n 命名空间为/node_namespace
ros::NodeHandle n1("sub"); //  n1命名空间为/node_namespace/sub
ros::NodeHandle n2(n1,"sub2");// n2命名空间为/node_namespace/sub/sub2

ros::NodeHandle pn1("~"); //pn1 命名空间为/node_namespace/node_name
ros::NodeHandle pn2("~sub"); //pn2 命名空间为/node_namespace/node_name/sub
ros::NodeHandle pn3("~/sub"); //pn3 命名空间为/node_namespace/node_name/sub

ros::NodeHandle gn("/global"); // gn 命名空间为/global

以上代码概括了节点及其相关话题、参数的命名空间问题,若ns在launch文件中未给,则命名空间为(通过ros::NodeHandle::getNamesapce()可自己试验):

n:/
n1:/sub
n2:/sub/sub2
pn1:/node_name
pn2:/node_name/sub
pn3:/node_name/sub
gn:/global
 

你可能感兴趣的:(ROS)