一、 开发环境
ubuntu20.04
 ros版本noetic
 参考视频
 https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?p=52&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=4cd1b6f268e2a29a11bea5d2568836ee
二、 创建两个功能包
//创建工作空间
工作空间目录中执行catkin_make
//创建两个功能包
工作空间中的src目录中执行catkin_create_pkg publisher roscpp std_msgs
工作空间中的src目录中执行catkin_create_pkg subscriber roscpp std_msgs
三、 编写发布者
main.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
//发布者
int main(int argc,char *argv[])
{
    //中文支持
    setlocale(LC_ALL,"");
    //初始化ros节点
    //指定节点名称
    ros::init(argc,argv,"publisher");
    //创建ros节点句柄
    ros::NodeHandle n;
    //创建发布者对象
    ros::Publisher pub = n.advertise<std_msgs::String>("fang",10);
    //编写发布逻辑
    std_msgs::String msg;
    //发布频率
    ros::Rate rate(1);
    int count = 0;
    //如果节点活着循环发布
    while(ros::ok)
    {
        count++;
        std::stringstream ss;
        ss << "hello:" << count;
        msg.data = ss.str();
        pub.publish(msg);
        ROS_INFO("发布数据:%s",msg.data.c_str());
        
        rate.sleep();
        ros::spinOnce();
    }
    return 0;
}
//通过ros工具打印话题消息
//rostopic echo fang
四、 编写订阅者
main.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
//回调函数
void doMessage(const std_msgs::String::ConstPtr &msg)
{
    ROS_INFO("订阅数据:%s",msg->data.c_str());
}
//订阅者
int main(int argc,char *argv[])
{
    //中文支持
    setlocale(LC_ALL,"");
    //初始化ros节点
    //指定节点名称
    ros::init(argc,argv,"subscriber");
    //创建ros节点句柄
    ros::NodeHandle n;
    //创建订阅者对象
    ros::Subscriber pub = n.subscribe("fang",10,doMessage);
    //回头处理回调函数
    ros::spin();
    return 0;
}
//通过ros工具打印话题消息
//rostopic echo fang
四、 运行截图




















