@[TOC](ROS ros::NodeHandle nh("~"))
launch代码
<launch>
<!--全局参数num-->
<param name="num" value="5" />
<node name="demo" pkg="demo" type="demo"
output="screen">
<!--局部参数num-->
<param name="num" value="10" />
</node>
</launch>
ros源码
#include <ros/ros.h>
int main(int argc, char* argv[])
{
int number = -1;//number初始化
ros::init(argc, argv, "demo");//node初始化
/*创建命名空间*/
//n 是全局命名空间
ros::NodeHandle n;
//nh 是局部命名空间
ros::NodeHandle nh("~");
/*全局命名空间下的Param*/
ROS_INFO("global namespace");
//提取全局命名空间下的参数num
n.getParam("num", number);
ROS_INFO("global_num was %d", number);
//提取局部命名空间下的参数num
n.getParam("demo/num", number);//在全局命名空间下,要提取局部命名空间下的参数,需要添加node name
ROS_INFO("global_to_local_num was %d", number);
/*局部命名空间下的Param*/
ROS_INFO("local namespace");
//提取局部命名空间下的参数num
nh.getParam("num", number);
ROS_INFO("local_num was %d", number);
//提取全局命名空间下的参数num
nh.getParam("/num", number);//在局部命名空间下,要提取全局命名空间下的参数,需要添加“/”
ROS_INFO("local_to_global_num was %d", number);
ros::spin();
return 0;
}
输出结果
[ INFO] [1604560576.760508751]: global namespace
[ INFO] [1604560576.762715951]: global_num was 5
[ INFO] [1604560576.764537521]: global_to_local_num was 10
[ INFO] [1604560576.764597107]: local namespace
[ INFO] [1604560576.766529829]: local_num was 10
[ INFO] [1604560576.771342151]: local_to_global_num was 5