創建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<std_msgs::String>("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);

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章