在 c++ 操作参数的时候,我们经常会看到
ros::NodeHandle nh; 和 ros::NodeHandle nh(“~”); 两种用法。
主要是全局命名空间和局部命名空间的不同。
ros::NodeHandle nh; 是 全局命名空间,
ros::NodeHandle nh("~"); 是 局部命名空间。
那么对应到cpp中,对于这两种param的获取方式有所不同:
#includeint main(int argc, char **argv){ ros::init(argc, argv, "param_demo"); ros::NodeHandle nh_global; ros::NodeHandle nh_local("~"); int parameter1, parameter2, parameter3, parameter4; parameter1 = nh_global.param("param1", 1111); parameter3 = nh_global.param("param_demo/param3", 1111); //获取局部参数,需要增加包名 parameter2 = nh_local.param("/param2", 2222); //获取全局参数,需要增加 "/"" parameter4 = nh_local.param("param4", 2222); ROS_INFO("parameter param1 = %d", parameter1); ROS_INFO("parameter param2 = %d", parameter2); ROS_INFO("parameter param3 = %d", parameter3); ROS_INFO("parameter param4 = %d", parameter4); ros::spin(); return 0; }



