命名空间的三级参数如何设置
参数 /robot_pose
的设置
1 | ros::NodeHandle nh; |
/move_base/controller_frequency
的设置1
2
3
4// 在 move_base 节点内
ros::NodeHandle n("~/");
double control_frequency;
n.param("controller_frequency", control_frequency, 15.0);
参数 /move_base/Planner/linear_vel
的设置1
2
3// 在 move_base 节点内
ros::NodeHandle nh("~/" + string("Planner") );
nh.param("linear_vel", linear_vel_, 0.3);
1 | ros::init(argc, argv, "my_node_name"); |
平时对nh
,是用无参的构造函数,此时对应的话题是topic1
。 加上~
后,sub1订阅的话题是my_node_name/topic1
。如果不是~
,而是word
,话题是/word/topic1
对于sub2,命名空间是~foo
,相当于上面两种的组合,订阅的话题是my_node_name/foo/topic2
当然可以在launch文件修改命名空间的第一级,也就是 <node pkg="package", name="my_node", type="my_bin" />