当前位置: 首页 > news >正文

公司企业网站制作教程网站建设西安哪里好

公司企业网站制作教程,网站建设西安哪里好,自己做签名网站,办办网官网话题 节点之间的通信。 叫话题很形象。发布者发布一定数据类型的话题#xff0c;订阅者订阅发布者。 订阅者发布者不唯一。 异步通信#xff0c;适用于周期发布的数据而不是逻辑性强的数据。 .msg 格式的消息结构#xff0c;一种通信接口。 每个话题 topic 有话题名订阅者订阅发布者。 订阅者发布者不唯一。 异步通信适用于周期发布的数据而不是逻辑性强的数据。 .msg 格式的消息结构一种通信接口。 每个话题 topic 有话题名数据类型和数据三个属性。 Hello world pub 按一定周期发布 helloworld 信息sub 接收。 pub #!/usr/bin/env python3 # -*- coding: utf-8 -*- 作者: 古月居(www.guyuehome.com) 说明: ROS2话题示例-发布“Hello World”话题 import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 from std_msgs.msg import String # 字符串消息类型 创建一个发布者节点class PublisherNode(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self.pub self.create_publisher(String, chatter, 10) # 创建发布者对象消息类型、话题名、队列长度self.timer self.create_timer(0.5, self.timer_callback) # 创建一个定时器单位为秒的周期定时执行的回调函数def timer_callback(self): # 创建定时器周期执行的回调函数msg String() # 创建一个String类型的消息对象msg.data Hello World # 填充消息对象中的消息数据self.pub.publish(msg) # 发布话题消息self.get_logger().info(Publishing: %s % msg.data) # 输出日志信息提示已经完成话题发布def main(argsNone): # ROS2节点主入口main函数rclpy.init(argsargs) # ROS2 Python接口初始化node PublisherNode(topic_helloworld_pub) # 创建ROS2节点对象并进行初始化rclpy.spin(node) # 循环等待ROS2退出node.destroy_node() # 销毁节点对象rclpy.shutdown() # 关闭ROS2 Python接口 sub #!/usr/bin/env python3 # -*- coding: utf-8 -*- 作者: 古月居(www.guyuehome.com) 说明: ROS2话题示例-订阅“Hello World”话题消息 import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 from std_msgs.msg import String # ROS2标准定义的String消息 创建一个订阅者节点class SubscriberNode(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self.sub self.create_subscription(\String, chatter, self.listener_callback, 10) # 创建订阅者对象消息类型、话题名、订阅者回调函数、队列长度def listener_callback(self, msg): # 创建回调函数执行收到话题消息后对数据的处理self.get_logger().info(I heard: %s % msg.data) # 输出日志信息提示订阅收到的话题消息def main(argsNone): # ROS2节点主入口main函数rclpy.init(argsargs) # ROS2 Python接口初始化node SubscriberNode(topic_helloworld_sub) # 创建ROS2节点对象并进行初始化rclpy.spin(node) # 循环等待ROS2退出node.destroy_node() # 销毁节点对象rclpy.shutdown() # 关闭ROS2 Python接口 物品识别 之前 webcam 最好是分开写为两个节点之间的通信一个是摄像头一个是呈现的视频。 主要是拿到识别的图像数据之后不是第一时间就调用 opencv 算法处理而是发给 subsub 进行处理。 这个发送的过程中的消息数据类型应当是 imgmsg 类型所以需要一个 opencv - imgmsg 类型的转换方法。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- 作者: 古月居(www.guyuehome.com) 说明: ROS2话题示例-发布图像话题 import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 from sensor_msgs.msg import Image # 图像消息类型 from cv_bridge import CvBridge # ROS与OpenCV图像转换类 import cv2 # Opencv图像处理库 创建一个发布者节点class ImagePublisher(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self.publisher_ self.create_publisher(Image, image_raw, 10) # 创建发布者对象消息类型、话题名、队列长度self.timer self.create_timer(0.1, self.timer_callback) # 创建一个定时器单位为秒的周期定时执行的回调函数self.cap cv2.VideoCapture(0) # 创建一个视频采集对象驱动相机采集图像相机设备号self.cv_bridge CvBridge() # 创建一个图像转换对象用于稍后将OpenCV的图像转换成ROS的图像消息def timer_callback(self):ret, frame self.cap.read() # 一帧一帧读取图像if ret True: # 如果图像读取成功self.publisher_.publish(self.cv_bridge.cv2_to_imgmsg(frame, bgr8)) # 发布图像消息self.get_logger().info(Publishing video frame) # 输出日志信息提示已经完成图像话题发布def main(argsNone): # ROS2节点主入口main函数rclpy.init(argsargs) # ROS2 Python接口初始化node ImagePublisher(topic_webcam_pub) # 创建ROS2节点对象并进行初始化rclpy.spin(node) # 循环等待ROS2退出node.destroy_node() # 销毁节点对象rclpy.shutdown() # 关闭ROS2 Python接口 sub 代码 class ImageSubscriber(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self.sub self.create_subscription(Image, image_raw, self.listener_callback, 10) # 创建订阅者对象消息类型、话题名、订阅者回调函数、队列长度self.cv_bridge CvBridge() # 创建一个图像转换对象用于OpenCV图像与ROS的图像消息的互相转换def object_detect(self, image):hsv_img cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 图像从BGR颜色模型转换为HSV模型mask_red cv2.inRange(hsv_img, lower_red, upper_red) # 图像二值化contours, hierarchy cv2.findContours(mask_red, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) # 图像中轮廓检测for cnt in contours: # 去除一些轮廓面积太小的噪声if cnt.shape[0] 150:continue(x, y, w, h) cv2.boundingRect(cnt) # 得到苹果所在轮廓的左上角xy像素坐标及轮廓范围的宽和高cv2.drawContours(image, [cnt], -1, (0, 255, 0), 2) # 将苹果的轮廓勾勒出来cv2.circle(image, (int(xw/2), int(yh/2)), 5,(0, 255, 0), -1) # 将苹果的图像中心点画出来cv2.imshow(object, image) # 使用OpenCV显示处理后的图像效果cv2.waitKey(10)def listener_callback(self, data):self.get_logger().info(Receiving video frame) # 输出日志信息提示已进入回调函数image self.cv_bridge.imgmsg_to_cv2(data, bgr8) # 将ROS的图像消息转化成OpenCV图像self.object_detect(image) # 苹果检测流程是 opencv 图像数据转换成 ros2 可以传输的图像数据传输给 subsub 再转回来再调用 opencv 库。 其实常用 usb 相机驱动基本都是一致的所以 pub 节点我们不需要自己手动写。可以用下面的命令替代 pub有一行 ERR 不影响。 $ sudo apt install ros-humble-usb-cam $ ros2 run usb_cam usb_cam_node_exe ros2 topic bw 可以看带宽数据量。 可以通过 /rqt_graph 查看节点关系图。
http://www.zqtcl.cn/news/497217/

相关文章:

  • 合众商道网站开发可以投稿的写作网站
  • 北京贸易公司网站制作免费的查企业的网站
  • 网站建设报价表模板下载小程序怎么找出来
  • 网站制作简单协议wordpress快速建站教程视频教程
  • 杭州做网站价格北京企业响应式网站建设
  • 30个成功的电子商务网站设计中企动力 网站报价
  • php 网站开发 视频百度seo排名查询
  • 网站开发代码wordpress提示安装
  • 网站推广的策略高端网球拍
  • 广东知名网站建设wordpress 用户量
  • asp源代码网站网络架构图是什么
  • 专业做淘宝网站公司吗苏州网站制作开发
  • 电商网站模板html安阳历史
  • seo快速排名多少钱安阳网站怎么优化
  • 如何在网站后台删除栏目阿里巴巴上做网站要多少钱
  • 网站建设意识形态工作河北省两学一做网站
  • 綦江建站哪家正规php做不了大型网站吗
  • 优秀的设计网站青岛网站设计企业
  • 谁有做爰网站号wordpress 4.8 中文
  • 毕业设计做网站用什么广州中智软件开发有限公司
  • 哪个网站不花钱可以做招聘wordpress没有页脚
  • 免费视频网站素材网络系统管理技能大赛
  • 聊天网站建设网站建设毕业设计评价
  • 网站建设 内容缺乏域名备案要多久
  • 产品展示型网站建设全国新冠疫苗接种率
  • 网站建设商如何自建商城和电商平台
  • 深圳做二类学分的网站开发一平方米多少钱
  • 如何做原创小说网站建一个o2o网站
  • 东莞市住房建设网站互动科技 网站建设
  • 淄博网站建设高端网络seo线上培训多少钱