ROS 如何在同一节点node中实现订阅和发布?python
文章目录ROS 如何在同一个节点 node 中实现 订阅 和 发布 ?python 代码配合其他节点运行结果如下:ROS 如何在同一个节点 node 中实现 订阅 和 发布 ?python 代码#!/usr/bin/env python#!coding=utf-8#right code !# 时间:20191118#function:# 定义一个节点,接受一张图片旋转之后再发...
·
文章目录
ROS 如何在同一个节点 node 中实现 订阅 和 发布 ?
官网的例子都是在一个节点中实现订阅,或者发布的。
1. python 代码
#!/usr/bin/env python
#!coding=utf-8
# 时间:20191118
# 功能:创建一个节点,订阅一个话题A,在回调函数中 对接收到的数据进行处理(旋转)之后发布到另一个话题B。
import rospy
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import cv2
# from PIL import Image as PIL
def callback(data):
global bridge
img_pub = rospy.Publisher('image_raw', Image, queue_size=1) # 发布的话题:'image_raw'
cv_img = bridge.imgmsg_to_cv2(data, desired_encoding="passthrough")
cv_img = cv_img - 1
cv_img90 = np.rot90(cv_img, -1) # 处理图片
data90 = bridge.cv2_to_imgmsg(cv_img90, encoding="bgr8")
img_pub.publish(data90) # 发布图片
rospy.loginfo(cv_img90[0][0])
def displayWebcam():
rospy.init_node('webcam_display', anonymous=True) # 创建节点的名称:'webcam_display'
global bridge
bridge = CvBridge()
rospy.Subscriber('image_raw0', Image, callback) # 订阅的话题: 'image_raw0'
rospy.spin()
if __name__ == '__main__':
displayWebcam()
2. 启动其他节点之后,再运行这个节点
python2 thiscode.py
rqt_graph
3. 结果如下:
4. 有用请点赞,谢谢!
1. 点赞,积分+1
2. 评论,积分+1
更多推荐
已为社区贡献1条内容
所有评论(0)