ROS:编写简单的发布、订阅
2017-08-26 17:50
411 查看
编写简单的发布和订阅
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
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
相关文章推荐
- ROS的初步学习(五)--自己写一个简单的发布(Publisher)、订阅(Subscriber)程序
- ROS入门_1.14 编写及测试简单的消息发布器和订阅器 (C++)
- ROS笔记——创建简单的主题发布节点和主题订阅节点
- ROS(二)自己动手写一个简单的发布(Publisher)、订阅(Subscriber)程序
- ROS笔记——创建简单的主题发布节点和主题订阅节点
- 用Python编写ROS中的订阅和发布,导入消息类型问题
- ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)
- ROS学习第七弹--写简单的发布订阅(C++)
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 11 编写简单的消息发布器和订阅器 (C++)
- ROS教程(十一):编写简单的消息发布器和订阅器
- ROS学习笔记九:用C++编写ROS发布与订阅
- 9、ROS使用C++编写一个简单的Service和Client
- 发布一个简单界面框架源码,教你一步一步编写通用界面框架
- 利用Thrift和zk简单实现服务治理框架中的订阅发布机制
- MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
- C++17 标准正式发布,以后开发者可更简单地编写和维护代码
- MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
- ROS学习笔记十:用C++编写一个简单的服务和客户端
- MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
- ROS教程(十三):编写简单的服务器和客户端