1简介
ros::init(argc, argv, "my_node_name");
上面这句确定了node_namespace为my_node_name
句柄可以让你通过构造函数指定命名空间:
ros::NodeHandle nh;
这句话是句柄的相对名字是相对于node_namespace
ros::NodeHandle nh("my_namespace");
这句话使得使用该句柄的任何相对名字都是相对<node_namespace>/my_namespace,而不是只相对<node_namespace>
总结:
// 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
详细连接:ROS Nodehandle句柄的理解
2ros::NodeHandle::param()
查看官方解释:
第一个输入参数:param_name: 从服务器中查找名为这个的参数;并将数值赋值给第二个参数param_val;若在服务器中没有找到这个参数,则将第三个默认参数(default_val)赋值给第二个参数.核心是第二个参数
关于 NodeHandle具体用法详见官网:roscpp: ros::NodeHandle Class Reference