概述
将命名空间相关知识梳理一下,最近在命名空间上吃了大亏,浪费了很多时间,特别是涉及到后面的参数读取以及订阅发布Topic。
命名空间
全局
全局命名空间,就是默认路jin为全局的命名空间,和绝对路jin的概念相仿。定义时需要注意下面的几点。
1.node不带任何命名空间
ros::NodeHandle node;
2.此时参数路jin均为"imu_mti/imu_mti_sequence"
node.param<int>("imu_mti/imu_mti_sequence", sequence, 100);
ros::param::param<int>("imu_mti/imu_mti_sequence", sequence, 100);
3.此时订阅的topic为"imu"
sub =new message_filters::Subscriber<sensor_msgs::Imu>(node, “imu”, 100);
局部
局部命名空间,就是默认路jin为局部的命名空间,和相对路jin的概念相仿。定义时需要注意下面的几点。
1.node带有命名空间
ros::NodeHandle node("/myname");
2.此时参数路jin为"/myname"+"imu_mti/imu_mti_sequence"-> "/myname/imu_mti/imu_mti_sequence"
node.param<int>("imu_mti/imu_mti_sequence", sequence, 100);
3.此时参数路jin为"imu_mti/imu_mti_sequence",不受node影响
ros::param::param<int>("imu_mti/imu_mti_sequence", sequence, 100);
3.此时订阅的topic为"/myname"+"imu"->"/myname/imu"
sub =new message_filters::Subscriber<sensor_msgs::Imu>(node, “imu”, 100);
特别地
特别地,下面的 ~ 表示当前节点的命名空间
1.node带有命名空间"~"

本文介绍了ROS中的命名空间概念,包括全局和局部命名空间的使用,特别强调了`~`符号代表当前节点的命名空间。文章详细讲解了参数读取的方法,如`ros::param::param`和`nh_.param`,并提醒读者在操作时注意路径匹配。最后,作者总结了在使用参数和订阅Topic时应注意命名空间的问题。
最低0.47元/天 解锁文章
1231

被折叠的 条评论
为什么被折叠?



