Ros_Topic通信方式
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通信方式相关推荐
- 进程、线程、协程、通信方式
文章目录 进程 线程 协程 进程.线程.协程的区别 概念 进程.线程共同点 进程.线程不同点 线程.协程比较 通信方式之间的差异 进程通信 管道(pipe) 有名管道 (namedpipe) 信号量( ...
- angularjs1访问子组件_vue 组件通信看这篇就够了(12种通信方式)
vue 组件间的通信是 vue 开发中很基础也十分重要的部分,作为使用 vue 的开发者每天都在使用.同时,vue 通信也是面试中非常高频的问题,有很多面试题,都是围绕通信展开. 本文会介绍常见的通信 ...
- html 如何实现一条竖线边上有 刻度_记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背||CSDN博文精选...
作者:帅地 有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好.想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着"背"来记忆的,所 ...
- 进程间基于消息队列的通信_Linux 进程间的通信方式
(一)进程的概念 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就是创建一个进程,在这个 过程中伴随着资源的分配和释放,可以认为进程是一个程序的一次执行过程. (二)进程间通信的概念 ...
- windows 驱动和应用层的三种通信方式 r3到r0 DeviceIoControl 4种ioctl请求
驱动程序和客户应用程序经常需要进行数据交换,但我们知道驱动程序和客户应用程序可能不在同一个地址空间,因此操作系统必须解决两者之间的数据交换. 驱动层和应用层通信,主要是靠DeviceIoControl ...
- linux共享内存通信方式,linux下进程通信方式--共享内存
1.概念 不同进程看到共同区域 2.特点 (1)是进程间通信最快的方式,对不同内存的映射(少了两次拷贝) (2)不提供任何同步互斥机制,也不自己维护 (3)接口简单 3.通信方式 由文件系统提供--管 ...
- python stm32-实现Python与STM32通信方式
断断续续学了几周Stm32后,突然想实现上位机和下位机的通信,恰好自己学过一点python,便想通过python实现通信. 首先在windows的CMD命令管理器中安装pyserial,直接在CMD中 ...
- hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍
<ignore_js_op> 1)NameNode.DataNode和Client NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间.集 ...
- ROStopic 通信方式
操作演示,对 topic 通信方式的理解请看:点击打开链接 开启终端,运行 roscore 新开一个终端(已经安装好(ros-<distro>-ros-tutorials 包,否则运行 ...
最新文章
- 制作rhel的yum仓库
- 判断、转载-【Cocos2D-X 】初窥门径(8)判断精灵点击-by小雨
- JVM学习笔记(四)
- 在maven项目中如何引入另外一个项目
- php开启错误日志,PHP开启error_log 错误日志
- android资产目录,android – 从非目录设备中的资产文件夹复制数据库
- 【英语学习】【加州教材】【G3】【科学】Science目录及术语表
- Node接口也定义了一些所有节点类型都包含的特性和方法
- KNN(六)--LSH算法
- 职业学校计算机教学,职业学校计算机专业教学初探
- C专家编程第二章,c语言特性的不足
- 基于Linux的录像机:Neuros OSD
- 常见设计模式之(五):观察者模式
- CALayer和Retina显示屏的高分辨率的支持
- 7-2 哥尼斯堡的“七桥问题” (25分)
- 三种嵌入式操作系统比较和分析
- hp惠普笔记本安装原版XP蓝屏完美解决方法
- Matlab进行t检验
- 课题:修改ssh的访问端口
- centos7安装WGCLOUD说明
热门文章
- 写一篇Hook Driver.
- 第8章 数据库实例与操作模式
- Docker容器服务发现方案
- 调整手机titlebar与app的titlebar相衔接
- Ubuntu中如何打开终端terminal
- Apache常见报错问题
- Windows下MySQL的详细安装教程
- Ubuntu 18.04下搭建单机Hadoop和Spark集群环境
- 如何用Canarytokens搭建蜜罐并检测可疑入侵
- failed to accept an incoming connection: connection from 192.168.1.114 rejected, allowed hosts: 1