ROS Nodehandle(句柄总结)

 1简介

ros::init(argc, argv, "my_node_name");

上面这句确定了node_namespace为my_node_name

句柄可以让你通过构造函数指定命名空间:

ros::NodeHandle nh;

这句话是句柄的相对名字是相对于node_namespace

ros::NodeHandle nh("my_namespace");

这句话使得使用该句柄的任何相对名字都是相对/my_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()

查看官方解释:

ROS Nodehandle(句柄总结)_第1张图片

第一个输入参数:param_name: 从服务器中查找名为这个的参数;并将数值赋值给第二个参数param_val;若在服务器中没有找到这个参数,则将第三个默认参数(default_val)赋值给第二个参数.核心是第二个参数

关于 NodeHandle具体用法详见官网:roscpp: ros::NodeHandle Class Reference


 

你可能感兴趣的:(ROS,经验分享)