2.2 订阅话题
进入src创建包
cd catkin_ws/src/
catkin_create_pkg atr_pkg rospy roscpp std_msgs
键入代码
#include<ros/ros.h>
#include<std_msgs/String.h>
void chao_callback(std_msgs::String msg)
{printf(msg.data.c_str());printf("\n");
}int main(int argc, char *argv[])
{ros::init(argc,argv,"ma_node");ros::NodeHandle nh;//注意,最后的参数是回调函数ros::Subscriber sub = nh.subscribe("cluster",10,chao_callback);while(ros::ok()){//执行多任务的时候时不时瞅一眼ros::spinOnce();}return 0;
}
最后的参数chao_callback是回调函数
ros::Subscriber sub = nh.subscribe("cluster",10,chao_callback);
CMakelists.txt末尾加入代码
add_executable(ma_node src/ma_node.cpp)target_link_libraries(ma_node${catkin_LIBRARIES}
)
依次启动ros,chao_node,ma_node
程序优化,增加时间戳
#include<ros/ros.h>
#include<std_msgs/String.h>
void chao_callback(std_msgs::String msg)
{ROS_INFO(msg.data.c_str());
}int main(int argc, char *argv[])
{setlocale(LC_ALL,"");//zh_CN.UTF-8ros::init(argc,argv,"ma_node");ros::NodeHandle nh;//注意,最后的参数是回调函数ros::Subscriber sub = nh.subscribe("cluster",10,chao_callback);while(ros::ok()){//执行多任务的时候时不时瞅一眼ros::spinOnce();}return 0;
}
订阅两个话题
#include<ros/ros.h>
#include<std_msgs/String.h>
void chao_callback(std_msgs::String msg)
{ROS_INFO(msg.data.c_str());
}void yao_callback(std_msgs::String msg)
{ROS_WARN(msg.data.c_str());
}int main(int argc, char *argv[])
{setlocale(LC_ALL,"");//zh_CN.UTF-8ros::init(argc,argv,"ma_node");ros::NodeHandle nh;//注意,最后的参数是回调函数ros::Subscriber sub = nh.subscribe("chao",10,chao_callback);ros::Subscriber sub_2 = nh.subscribe("gie_gie",10,yao_callback);while(ros::ok()){//执行多任务的时候时不时瞅一眼ros::spinOnce();}return 0;
}
再开一个重端,进行通讯可视化
rqt_graph
PS:发布与接收的话题 得一致,在本博客中改了几次