Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.4 项目目录结构解析

项目目录结构

Phytium-Car-STM32-Arm-onPi/
│
├── car.service              # 系统服务配置文件(用于设置机器人作为系统服务启动)
├── car.sh                   # 启动脚本(用于启动机器人程序)
├── car_cv.py                # 机器人视觉控制主逻辑(处理视觉数据并生成控制指令)
├── car_cv.yaml              # Dora框架配置文件(定义节点和输入输出关系)
├── car_stop.py              # 停止机器人脚本(用于停止电机)
├── color_detect.py          # 颜色检测启动文件(主入口)
├── control.py               # 控制模块(提供Web控制界面和Socket.IO通信)
├── index.html               # Web控制界面HTML文件
├── move.py                  # 运动控制模块(封装运动指令发送)
├── README.md                # 项目说明文件
│
├── common/                  # 公共模块(数据结构和工具类)
│   ├── calculate.py         # 计算类(处理目标检测结果的数据结构)
│   ├── move_data.py         # 运动数据结构(用于节点间通信)
│   ├── test_move_data.py    # 运动数据结构测试
│   ├── view.py              # 视图数据类(用于Web显示)
│   └── __init__.py          # 包初始化文件
│
├── frame/                   # 存储摄像头捕获的原始帧图像
│
├── mask/                    # 存储掩膜图像
│
├── motor/                   # 电机控制模块
│   ├── main.py              # 电机控制主程序(接收运动指令并控制电机)
│   ├── Motor.py             # 电机控制基类和实现(PCA9685和Modbus)
│   ├── pyproject.toml       # 电机控制模块项目配置
│   └── test.py              # 电机控制测试脚本
│
├── mycv/                    # 计算机视觉模块
│   ├── color.py             # 颜色检测器类(识别网球)
│   ├── README.md            # 模块说明
│   └── __init__.py          # 包初始化文件
│
├── process/                 # 存储处理后的图像
│
├── templates/               # Web模板目录
│   └── index.html           # Web控制界面HTML模板
│
└── untils/                  # 工具模块
    ├── untils.py            # 工具函数(图像处理、方向转换等)
    └── __init__.py          # 包初始化文件

系统架构与原理

graph TD
    A[高清摄像头] --> B[图像采集模块]
    B --> C[图像预处理模块]
    C --> D[网球识别模块]
    D --> E[位置计算模块]
    E --> F[运动决策模块]
    F --> G[电机控制模块]
    G --> H[底盘运动执行]
    F --> I[机械臂控制模块]
    I --> J[机械臂执行]
    J --> K[网球收集]
    K --> L[状态反馈模块]
    L --> B
    L --> M[Web控制界面]

说明各模块功能:

  1. 图像采集模块
    • 使用OpenCV捕获视频流
    • 支持多种图像编码格式(BGR8, RGB8, JPEG, PNG)
    • 文件:color_detect.py, untils/untils.py
  2. 图像预处理模块
    • 高斯模糊降噪
    • 中值滤波
    • HSV颜色空间转换
    • 形态学操作(开闭运算)
    • 文件:mycv/color.py
  3. 网球识别模块
    • HSV颜色阈值分割
    • 轮廓检测与分析
    • 圆形度计算(过滤非网球物体)
    • 文件:mycv/color.py
  4. 位置计算模块
    • 计算网球中心坐标
    • 计算网球在图像中的比例
    • 计算与图像中心的偏移量
    • 文件:car_cv.py, common/calculate.py
  5. 运动决策模块
    • PID控制器实现平滑运动
    • 目标丢失处理策略
    • 速度平滑处理
    • 文件:car_cv.py
  6. 电机控制模块
    • 支持PCA9685和Modbus两种驱动方式
    • 运动指令封装
    • 文件:motor/Motor.py, move.py
  7. 底盘运动执行
    • 四轮底盘控制
    • 前进/后退/转向执行
    • 文件:motor/main.py
  8. 机械臂控制模块
    • 串口通信控制
    • 抓取动作序列控制
    • 文件:color_detect.py (机械臂控制部分)
  9. 机械臂执行
    • 网球抓取动作
    • 网球放置动作
    • 文件:color_detect.py
  10. 网球收集
    • 完成网球收集任务
    • 重置系统状态
  11. 状态反馈模块
    • 实时视频流传输
    • 运动数据显示
    • 系统状态反馈
    • 文件:control.py, templates/index.html
  12. Web控制界面
    • 摇杆控制
    • 视频显示
    • 状态监控
    • 控制开关
    • 文件:templates/index.html

数据流说明:

视觉处理流: 摄像头 → 图像采集 → 预处理 → 网球识别 → 位置计算 → 运动决策

控制执行流: 运动决策 → 电机控制 → 底盘运动 运动决策 → 机械臂控制 → 机械臂执行 → 网球收集

反馈流: 状态反馈 → Web控制界面(用户) 状态反馈 → 图像采集(系统循环)