使用sunrise_camera软件测试新的模型问题

:bullseye: YOLO + 摄像头实物判断实现方案

基于你的需求,我整理了3 种主流实现路径,从简单到复杂:


:pushpin: 方案一:Model Zoo 官方示例(推荐新手)

参考帖子:RDK X5 目标检测入门 | USB 摄像头 + 实时 Web 预览

步骤 1:克隆 Model Zoo

cd ~
git clone -b rdk_x5 https://github.com/D-Robotics/rdk_model_zoo.git
cd rdk_model_zoo/samples/vision/ultralytics_yolo

步骤 2:连接摄像头并测试

# 查看摄像头设备
ls /dev/video*

# 运行官方示例(USB 摄像头)
python3 demo_usb_camera.py \
  --model_path /path/to/your/yolov10.bin \
  --device_id 0 \
  --conf_threshold 0.5

步骤 3:修改为实物判断逻辑

在 demo_usb_camera.py 中添加判断逻辑:

# 在检测结果处理部分添加
def judge_object(detections):
    """实物判断逻辑"""
    target_objects = ["cup", "bottle", "phone"]  # 你要检测的实物
    
    for det in detections:
        if det['class_name'] in target_objects and det['confidence'] > 0.6:
            print(f"✅ 检测到目标:{det['class_name']}, 置信度:{det['confidence']:.2f}")
            # 在这里添加你的后续动作
            # 如:控制机械臂、发送信号、记录日志等
            return True
    return False

# 在主循环中调用
if judge_object(results):
    # 执行实物判断后的操作
    pass

:pushpin: 方案二:Sunrise Camera Web 界面(快速验证)

参考:你当前正在使用的 Sunrise Camera

步骤 1:配置自定义模型

# SSH 登录 X5
ssh root@<X5_IP>

# 找到配置文件
find /userdata/sunrise_camera -name "*.json"

# 编辑配置文件(添加你的 YOLOv10 模型)
vi /userdata/sunrise_camera/config/model_config.json

步骤 2:添加判断逻辑

在 Web 界面的基础上,你可以通过以下方式获取检测结果:

# 查看实时日志
tail -f /userdata/sunrise_camera/log/sunrise.log

# 或者通过 HTTP API 获取检测结果(如果支持)
curl http://<X5_IP>:8080/api/detection

步骤 3:编写外部判断脚本

# judge.py - 监听日志或 API 进行实物判断
import requests
import time

def check_object():
    response = requests.get('http://<X5_IP>:8080/api/detection')
    data = response.json()
    
    # 判断逻辑
    for obj in data.get('detections', []):
        if obj['label'] == 'your_target' and obj['confidence'] > 0.6:
            print("✅ 发现目标实物!")
            # 触发动作
            return True
    return False

while True:
    check_object()
    time.sleep(0.1)  # 10 FPS 检测频率

:pushpin: 方案三:ROS2 节点集成(适合机器人系统)

参考帖子:TROS 部署 YOLOv10

步骤 1:启动摄像头和检测节点

source /opt/tros/humble/setup.bash

# 启动摄像头节点
ros2 launch hobot_camera usb_camera.launch.py

# 启动 YOLO 检测节点
ros2 launch rdk_model_zoo yolov10_detection.launch.py \
  model_path:=/path/to/yolov10.bin

步骤 2:编写判断节点

# object_judge_node.py
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image
from vision_msgs.msg import Detection2DArray

class ObjectJudgeNode(Node):
    def __init__(self):
        super().__init__('object_judge_node')
        self.subscription = self.create_subscription(
            Detection2DArray,
            '/detection_results',
            self.detection_callback,
            10
        )
    
    def detection_callback(self, msg):
        """检测回调函数"""
        for detection in msg.detections:
            class_name = detection.results[0].hypothesis.class_id
            confidence = detection.results[0].hypothesis.score
            
            # 实物判断逻辑
            if class_name == 'your_target' and confidence > 0.6:
                self.get_logger().info(f'✅ 检测到目标:{class_name}')
                # 发布控制指令或触发其他节点
                self.take_action()
    
    def take_action(self):
        # 执行实物判断后的动作
        # 如:发布速度指令、控制 GPIO 等
        pass

def main():
    rclpy.init()
    node = ObjectJudgeNode()
    rclpy.spin(node)
    node.destroy_node()

if __name__ == '__main__':
    main()

步骤 3:运行判断节点

ros2 run object_judge object_judge_node.py

:books: 推荐参考资料

资源 链接 说明
Model Zoo 官方文档 GitHub 完整示例代码
USB 摄像头实时检测 帖子 3 分钟跑通教程
YOLOv11 性能优化 帖子 7 FPS → 47 FPS 实战
目标检测入门 帖子 3 条路径详解

:warning: 关键注意事项

  1. 摄像头选择:

    • USB 摄像头:即插即用,适合快速验证
    • MIPI 摄像头:性能更好,需要配置
    • 推荐:USB 摄像头(如罗技 C270/C920)
  2. 模型输入尺寸:

    • 确保量化时的输入尺寸与摄像头分辨率匹配
    • 常见:640x640, 672x672
  3. 置信度阈值:

    • 初始建议:conf_threshold=0.5
    • 根据实际效果调整(0.3-0.7)
  4. 性能优化:

    • 如果帧率低,检查 BPU 占用率
    • 使用 hrt_model_exec perf 测试模型性能

:bullseye: 下一步建议

告诉我你的具体场景,我可以给出更针对性的代码:

  • 要检测什么实物?(杯子、手机、特定物体?)
  • 检测到后需要做什么动作?(机械臂抓取、报警、记录?)
  • 使用什么摄像头?(USB 还是 MIPI?)
  • 需要集成到 ROS2 系统吗?

需要我帮你写完整的判断逻辑代码吗?:rocket: