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

导览机器人产品讲解(摄像头 + YOLO 真实识别 + 语音讲解)

一、进阶要实现的效果

  1. 摄像头实时识别物体
  2. 自动语音讲解
  3. TTS语音播报
  4. 不卡顿、不重复播报(防抖动)

二、工程结构(标准 ROS2 包)

product_robot/ ├── launch/ │ └── product_detect.launch.py ├── scripts/ │ ├── camera_node.py │ ├── yolo_detect_node.py │ └── talker_node.py ├── config/ │ └── product_info.json # 讲解词库 └── package.xml

三、安装依赖(OpenCV + YOLO)

执行以下命令,一键装完:

sudo apt update pip install opencv-python pip install ultralytics # YOLOv8 pip install ultralytics opencv-python pyttsx3 cv-bridge

三、创建摄像头识别节点

文件路径:~/ros2_ws/src/product_robot/product_robot/camera_yolo_node.py

import rclpy from rclpy.node import Node from sensor_msgs.msg import Image from cv_bridge import CvBridge from ultralytics import YOLO import cv2 from std_msgs.msg import String class YoloDetectNode(Node): def __init__(self): super().__init__("yolo_detect_node") self.publisher = self.create_publisher(String, "/detection_result", 10) self.subscriber = self.create_subscription(Image, "/image_raw", self.callback, 10) self.bridge = CvBridge() self.model = YOLO("yolov8n.pt") # 通用模型,以后换客户模型 self.get_logger().info("✅ YOLO 目标检测启动") def callback(self, msg): frame = self.bridge.imgmsg_to_cv2(msg, "bgr8") results = self.model(frame, stream=True) for r in results: for box in r.boxes: cls = self.model.names[int(box.cls[0])] self.publisher.publish(String(data=cls)) def main(args=None): rclpy.init(args=args) node = YoloDetectNode() rclpy.spin(node) rclpy.shutdown()

四、更新讲解节点

import rclpy from rclpy.node import Node from std_msgs.msg import String import json import pyttsx3 class ProductTalkerNode(Node): def __init__(self): super().__init__("product_talker_node") self.sub = self.create_subscription(String, "/detection_result", self.callback, 10) self.engine = pyttsx3.init() self.last = "" self.count = 0 with open("config/product_info.json", "r", encoding="utf-8") as f: self.products = json.load(f) self.get_logger().info("✅ 讲解节点启动") def callback(self, msg): label = msg.data if label == self.last: self.count +=1 else: self.count =0 self.last = label # 防抖:连续识别2次才讲解 if self.count >=2 and label in self.products: script = self.products[label]["script"] self.get_logger().info(f"讲解:{script}") self.engine.say(script) self.engine.runAndWait() self.count = -10 # 冷却,避免重复讲 def main(args=None): rclpy.init(args=args) node = ProductTalkerNode() rclpy.spin(node) rclpy.shutdown()

四、把节点加入 setup.py

打开:~/ros2_ws/src/product_robot/setup.py

entry_points里加一行:

'camera_yolo_node = product_robot.camera_yolo_node:main',

最终变成:

entry_points={ 'console_scripts': [ 'yolo_detect_node = product_robot.yolo_detect_node:main', 'product_talker_node = product_robot.product_talker_node:main', 'camera_yolo_node = product_robot.camera_yolo_node:main', ], },

五、编译

bash运行

cd ~/ros2_ws colcon build source install/setup.bash

六、运行完整进阶系统

3个终端

终端 1:启动摄像头

ros2 run usb_cam usb_cam_node_exe

终端 2:启动YOLO 识别

ros2 run product_robot camera_yolo_node

终端 3:启动语音讲解

ros2 run product_robot product_talker_node

七、如果你想加更多物体讲解

直接打开你的 JSON 文件加内容就行:

"keyboard": { "script": "检测到键盘,用于输入文字。" }

八、对接客户自定义产品

  • 收集客户各类展品多角度实拍图
  • 使用标注工具标注数据集,训练专属xxx.pt模型
  • 仅修改检测节点内模型路径:self.model = YOLO("自定义展品模型.pt")
  • 同步更新product_speech.json内产品名与专属讲解话术即可

九、拓展点

1.增加识别置信度过滤,过滤低概率误识别
2. 新增界面可视化窗口,绘制识别框 + 产品名称
3. 接入机器人底盘逻辑,识别展品后自动靠近讲解
4. 切换离线 TTS / 云端语音合成,优化播报音色

http://www.jsqmd.com/news/873006/

相关文章:

  • 2026企业新媒体营销培训机构推荐:飞橙教育实战课程因何成为口碑之选
  • ACS770还能打吗?最近测试了一款国产霍尔电流传感器
  • 不会 CSS 也能做出惊艳 PPT!Frontend Slides这个开源 Claude Code 技能让 AI 帮你生成 12 种风格演示文稿,告别千篇一律的紫渐变
  • 3K档位的四盘位“六边形战士”?绿联DXP4800 GT深度体验
  • 香港6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 学习笔记·敏捷开发
  • 8051MX内存溢出问题解析与解决方案
  • macOS虚拟打印机:一键文档转PDF的高效解决方案
  • HS2-HF Patch终极指南:如何快速完成HoneySelect2汉化与MOD整合
  • 紧急!2024年Q2最新:Claude 3.5 Sonnet对LaTeX/Markdown混合文档的支持边界实测报告(附绕过限制的3种军工级方案)
  • 法律科技的发展脉络:从数字化管理到AI辅助办案的演进路径
  • EXCEL文件展示LSTM计算
  • ISACA发布《2026全球人工智能应用现状调研》:AI应用提速,治理滞后成全球共同挑战
  • 戴森球计划终极蓝图指南:从新手到专家的完整工厂建设方案
  • 硬核根基,智能载体:华清远见嵌入式“硬件+仿真+课程+师资”产教融合与实践教学方案
  • 2026 年国内 LIMS 真实排名!网星、三维、金现代谁才是真王者?
  • myssh
  • 5分钟掌握文本分析神器:KH Coder完整指南带你轻松挖掘海量文本价值
  • 为什么顶尖红圈所已部署Claude法律分析私有化集群?——揭秘3层脱敏架构、11项司法场景微调参数与审计留痕机制
  • GQA:多查少算的 Attention 头组合
  • 保山6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 期刊推荐论文荐读:GBSA-YOLOv8:面向复杂田间场景稻田害虫的多尺度实时检测模型
  • MQA:全部 Query 共享一套 Key-Value
  • 2026数字人平台十大推荐:按预算分级企业选型避坑攻略
  • 资产治理:QNAP 存算融合架构理顺工程机械装配车间异构图纸流转
  • 泸州6月雨季来临,房屋漏水怎么办?卫生间免砸砖防水、外墙、屋面+地下室渗漏。权威防水公司靠谱TOP5推荐(2026年6月本地最新深度调研) - 企业资讯
  • 5分钟掌握Illustrator批量替换终极技巧:ReplaceItems.jsx完整指南
  • 广西贵港CPPMSCMP官网报考入口,官方授权双证报考中心 - 众智商学院课程中心
  • 终极指南:如何用TrollInstallerX轻松解锁iOS越狱新世界
  • Taotoken 的 Token Plan 套餐如何帮助我们预测并锁定开发成本