话题名称分类

话题名称大致可以分为三种类型:

全局(话题参考ROS系统,与节点命名空间平级)

相对(话题参考的是节点的命名空间,与节点名称平级)

私有(话题参考节点名称,是节点名称的子级)

全局话题

以/开头的名称,和节点名称无关

相对名称

非/开头的名称,参考命名空间(与节点名称平级)来确定话题名称

私有名称

以~开头的名称

#include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char *argv[]) { setlocale(LC_ALL,""); //执行节点初始化 ros::init(argc,argv,"hello"); ros::NodeHandle nh; //核心 //1.全局 //全局话题名称需要以“/”开头(也可以设置自己的命名空间) //这种情况下和节点(节点名称以及名称)没有任何关系 //ros::Publisher pub=nh.advertise<std_msgs::String>("/rename",1000); //ros::Publisher pub=nh.advertise<std_msgs::String>("/yyyy/rename",1000); //2.相对 //相对话题名称不要以“/”开头 //可以在前面添加前缀 //ros::Publisher pub=nh.advertise<std_msgs::String>("rename",1000); //ros::Publisher pub=nh.advertise<std_msgs::String>("zzz/rename",1000); //3.私有 //私有话题名称需要结合特定的Nodehandle //ros::NodeHandle NH("~"); //ros::Publisher pub =NH.advertise<std_msgs::String>("rename",1000); //ros::Publisher pub =NH.advertise<std_msgs::String>("zzz/rename",1000); //4.注意 //既调用特定的Nodehandle,又调用“/”,为全局话题 //ros::Publisher pub =NH.advertise<std_msgs::String>("/zzz/rename",1000); //循环函数防止退出 while (ros::ok()) { } return 0; }

全局话题

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

相对话题

请输入图片描述

请输入图片描述
请输入图片描述
请输入图片描述

私有话题

请输入图片描述

请输入图片描述
请输入图片描述
请输入图片描述

最后修改:2023 年 11 月 10 日
如果觉得我的文章对你有用,请随意赞赏