创建ROS消息发布器(publisher)、订阅器(subscriber)

发布器和订阅器都是可执行文件。对C++语言,我们在.cpp文件中创建,并编译生成可执行文件,

一、发布器:
1、cd到包目录下,然后在src文件夹下创建.cpp文件;
2、.cpp文件包括以下部分:
     ①包含(include)依赖库,如ros/ros.h、std_msgs/String.h、sstream等
     ②主函数部分:  ros::init(argc,argv,"talker");                                           // 向ROS系统注册当前节点
                                   ros::NodeHandle n;                                                        // 为当前节点定义一个节点句柄

            // 向ROS节点网络广播:当前节点要向chatter话题发布消息std_msgs/String,
           // 消息缓冲区大小为1000,需要这个消息的可以来和当前节点连接  
                                   ros::Publisher chatter_pub = n.advertise("chatter",1000);    

                                   ros::Rate loop_rate(10);                                            // 定义消息发布频率
                                   while(ros::ok())
                                        {
                                               std_msgs::String msg;
                                               std::stringstream ss;
                                               ss << "Hello word" ;
                                               msg.data = ss.str();
                                               chatter_pub.publish(msg);                            //发布消息
                                               ros::spinOnce();
                                               loop_rate.sleep();                                 //休眠响应时间
                                         }
                      

二、订阅器:
1、cd到包目录下,然后在src文件夹下创建.cpp文件;
2、.cpp文件包括以下部分:
     ①包含(include)依赖库,如ros/ros.h、std_msgs/String.h等
     ②回调函数部分:void chatterCallback(const std_msgs::String::ConstPtr& msg)
                                          { 
                                                 消息以指针传递,在此函数体内完成对消息的处理
                                             }
     ③主函数部分:  ros::init(argc,argv,"listener");
                                   ros::NodeHandle n;
                                   ros::Subscriber sub = n.subscribe("chatter",1000,chatterCallback);
                                   ros::spin();



三、CMakeLists.txt文件的设置:
1、添加可执行文件,即add_executable(talker src/talker.cpp);
                                          add_executable(listener src/talker.cpp);
                                     
2、添加目标连接库,即target_link_libraries(talker ${catkin_LIBRARIES});
                                          target_link_libraries(listener ${catkin_LIBRARIES});

3、添加对生成的消息文件的依赖项,即add_dependencies(talker beginner_tutorials_generate_messages_cpp);
                                                                      add_dependencies(listener beginner_tutorials_generate_messages_cpp);

 

推荐博文:

二叉树相关练习题(C++)
经典排序算法的C++实现
与字符串有关的一些典型问题的C++解法
一些可以用动态规划(DP)算法解决的问题(C++)
排列组合相关笔试面试题(C++)
与概率相关的算法题C++解法(附证明过程)
二分查找的巧妙运用(C++)
位运算在算法题中的使用(C++)
链表相关练习题(C++)
用实例讲解栈和队列(C++)
一些智力题的C++解法

你可能感兴趣的:(ROS)