ROS:编写简单的发布、订阅

来源:互联网 发布:unity3d树叶是方形的 编辑:程序博客网 时间:2024/06/05 04:45

编写简单的发布和订阅

Talker.cpp

#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv){  ros::init(argc, argv, "talker");  ros::NodeHandle n;  //新建一个节点  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);  //新建一个发布者,发布的话题为chatter,消息的数据类型为std_msgs::String   ros::Rate loop_rate(10);  int count = 0;  while (ros::ok())  {    std_msgs::String msg;    std::stringstream ss;    ss << "hello world " << count;    msg.data = ss.str();     ROS_INFO("%s", msg.data.c_str());    chatter_pub.publish(msg); //发布消息    ros::spinOnce();    loop_rate.sleep();    ++count;  }  return 0;}

Listener.cpp

#include "ros/ros.h"#include "std_msgs/String.h"void chatterCallback(const std_msgs::String::ConstPtr& msg){  ROS_INFO("I heard: [%s]", msg->data.c_str());}int main(int argc, char **argv){  ros::init(argc, argv, "listener");  ros::NodeHandle n; //新建一个节点  ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);  //新建一个订阅者,订阅的话题为chatter,收到消息后执行的回调函数  ros::spin();  return 0;} 


CMakeLists.txt 文件末尾加入几条语句:

include_directories(include ${catkin_INCLUDE_DIRS})add_executable(talker src/talker.cpp)target_link_libraries(talker ${catkin_LIBRARIES})add_executable(listener src/listener.cpp)target_link_libraries(listener ${catkin_LIBRARIES})

重新编译

# In your catkin workspace

$ catkin_make  

 

运行

start a terminal and run   

$ roscore

start another terminal and run

$ cd ~/catkin_ws   $ source ./devel/setup.bash    $ rosrun beginner_tutorials talker  

start another terminal and run 

$ cd ~/catkin_ws   $ source ./devel/setup.bash    $ rosrun beginner_tutorials listener 

阅读全文
0 0
原创粉丝点击