话题名称分类
话题名称大致可以分为三种类型:
全局(话题参考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;
}
全局话题
相对话题
私有话题