Ros_Topic通信方式

C++:

Publisher

publisher.cpp

#include <iostream>
#include <ros/ros.h>
#include <std_msgs/String.h>
using namespace std;int main(int argc,char *argv[]){//节点名string nodeName = "cpp_publisher";//初始化节点 定义匿名节点加参数 ,ros::init_options::AnonymousNameros::init(argc,argv,nodeName,ros::init_options::AnonymousName);//创建节点ros::NodeHandle node;//节点名string topicName = "cpp_topic";//创建topic发送者//参数1:节点名//参数2:消息队列容量const ros::Publisher &publisher = node.advertise<std_msgs::String>(topicName, 5);//每隔一秒钟发送一条消息ros::Rate rate(1);int i = 0;while (ros::ok()){std_msgs::String data;data.data = "hello "+to_string(i);//发送一条消息publisher.publish(data);//增加ii+=1;//睡眠rate.sleep();}return 0;
}

Subscriber

subscriber.cpp

#include <iostream>
#include <std_msgs/String.h>
#include <ros/ros.h>using namespace std;void callBack(std_msgs::String::ConstPtr data){cout<<"收到消息:"<<data->data<<endl;
}int main(int argc, char *argv[]) {//节点名
//    string nodeName = "cpp_subscriber";string nodeName = "cpp_publisher";//初始化节点//ros::init(argc, argv, nodeName);//初始化节点 定义匿名节点加参数 ,ros::init_options::AnonymousNameros::init(argc,argv,nodeName,ros::init_options::AnonymousName);//创建节点ros::NodeHandle node;//topic名字string topicName = "cpp_topic";//订阅者//参数1:topic名字//参数2:队列长度//参数3:回调函数//注意:返回的Subscriber必须要接收,如果不接受 可能收不到消息const ros::Subscriber &subscriber = node.subscribe<std_msgs::String>(topicName, 5, callBack);//ros::spin 处理事件ros::spin();return 0;
}

python :

Publisher

publisher.py

#!/usr/bin/env python
# coding:utf-8import rospy
# 导入数据
from std_msgs.msg import String
if __name__ == '__main__':# 节点名nodeName = 'py_publisher'# 初始化节点 定义匿名节点加参数 anonymous=Truerospy.init_node(nodeName,anonymous=True)# 话题名topicName = 'py_topic'# 创建发布者publisher = rospy.Publisher(topicName, String, queue_size=5)# 每一秒钟发送一条消息rate = rospy.Rate(1)i = 0# 循环while not rospy.is_shutdown():# 消息内容data = String()data.data = 'hello {}'.format(i)# 发送消息publisher.publish(data)# 增加数据i += 1rate.sleep()

Subscriber

subscriber.py

#!/usr/bin/env python
# coding:utf-8import rospy
# from std_msgs.msg import String
from geometry_msgs.msg import Twist
import threading
# python订阅者回调在子线程中
def callBack(data):print '接收的线程id:{}'.format(threading.current_thread().name)print '收到数据:{}'.format(data.linear.x)if __name__ == '__main__':print '主线程线程id:{}'.format(threading.current_thread().name)# 节点名nodeName = 'py_subscriber'# 初始化节点 定义匿名节点加参数 anonymous=Truerospy.init_node(nodeName,anonymous=True)# topic名字topicName = 'py_topic'# 创建订阅者# 参数1:topic名字# 参数2:topic数据类型# 参数3:回调函数subscriber = rospy.Subscriber(topicName, Twist, callBack)# 事件处理rospy.spin()

Ros_Topic通信方式相关推荐

  1. 进程、线程、协程、通信方式

    文章目录 进程 线程 协程 进程.线程.协程的区别 概念 进程.线程共同点 进程.线程不同点 线程.协程比较 通信方式之间的差异 进程通信 管道(pipe) 有名管道 (namedpipe) 信号量( ...

  2. angularjs1访问子组件_vue 组件通信看这篇就够了(12种通信方式)

    vue 组件间的通信是 vue 开发中很基础也十分重要的部分,作为使用 vue 的开发者每天都在使用.同时,vue 通信也是面试中非常高频的问题,有很多面试题,都是围绕通信展开. 本文会介绍常见的通信 ...

  3. html 如何实现一条竖线边上有 刻度_记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背||CSDN博文精选...

    作者:帅地 有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好.想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着"背"来记忆的,所 ...

  4. 进程间基于消息队列的通信_Linux 进程间的通信方式

    (一)进程的概念 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就是创建一个进程,在这个 过程中伴随着资源的分配和释放,可以认为进程是一个程序的一次执行过程. (二)进程间通信的概念 ...

  5. windows 驱动和应用层的三种通信方式 r3到r0 DeviceIoControl 4种ioctl请求

    驱动程序和客户应用程序经常需要进行数据交换,但我们知道驱动程序和客户应用程序可能不在同一个地址空间,因此操作系统必须解决两者之间的数据交换. 驱动层和应用层通信,主要是靠DeviceIoControl ...

  6. linux共享内存通信方式,linux下进程通信方式--共享内存

    1.概念 不同进程看到共同区域 2.特点 (1)是进程间通信最快的方式,对不同内存的映射(少了两次拷贝) (2)不提供任何同步互斥机制,也不自己维护 (3)接口简单 3.通信方式 由文件系统提供--管 ...

  7. python stm32-实现Python与STM32通信方式

    断断续续学了几周Stm32后,突然想实现上位机和下位机的通信,恰好自己学过一点python,便想通过python实现通信. 首先在windows的CMD命令管理器中安装pyserial,直接在CMD中 ...

  8. hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍

    <ignore_js_op> 1)NameNode.DataNode和Client          NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间.集 ...

  9. ROStopic 通信方式

    操作演示,对 topic 通信方式的理解请看:点击打开链接 开启终端,运行 roscore 新开一个终端(已经安装好(ros-<distro>-ros-tutorials 包,否则运行  ...

最新文章

  1. 制作rhel的yum仓库
  2. 判断、转载-【Cocos2D-X 】初窥门径(8)判断精灵点击-by小雨
  3. JVM学习笔记(四)
  4. 在maven项目中如何引入另外一个项目
  5. php开启错误日志,PHP开启error_log 错误日志
  6. android资产目录,android – 从非目录设备中的资产文件夹复制数据库
  7. 【英语学习】【加州教材】【G3】【科学】Science目录及术语表
  8. Node接口也定义了一些所有节点类型都包含的特性和方法
  9. KNN(六)--LSH算法
  10. 职业学校计算机教学,职业学校计算机专业教学初探
  11. C专家编程第二章,c语言特性的不足
  12. 基于Linux的录像机:Neuros OSD
  13. 常见设计模式之(五):观察者模式
  14. CALayer和Retina显示屏的高分辨率的支持
  15. 7-2 哥尼斯堡的“七桥问题” (25分)
  16. 三种嵌入式操作系统比较和分析
  17. hp惠普笔记本安装原版XP蓝屏完美解决方法
  18. Matlab进行t检验
  19. 课题:修改ssh的访问端口
  20. centos7安装WGCLOUD说明

热门文章

  1. 写一篇Hook Driver.
  2. 第8章 数据库实例与操作模式
  3. Docker容器服务发现方案
  4. 调整手机titlebar与app的titlebar相衔接
  5. Ubuntu中如何打开终端terminal
  6. Apache常见报错问题
  7. Windows下MySQL的详细安装教程
  8. Ubuntu 18.04下搭建单机Hadoop和Spark集群环境
  9. 如何用Canarytokens搭建蜜罐并检测可疑入侵
  10. failed to accept an incoming connection: connection from 192.168.1.114 rejected, allowed hosts: 1