Pi视觉追踪(一):项目概述与实现路径

背景

这个系列记录的是用树莓派5、罗技C270摄像头、双轴舵机和激光笔,从零搭建视觉追踪激光瞄准系统的完整过程。最终目标是追踪蚊子并用激光笔瞄准,但实际推进中先从气球起步,逐步逼近蚊子场景。

硬件清单

部件 型号 说明
主控 树莓派5 8GB版更佳
摄像头 罗技C270 720P UVC免驱,USB直连
舵机 SG90 ×2 起步可用,蚊子场景建议升级MG90S金属齿
激光笔 KY-008 650nm 5mW Class 2,有眨眼反射安全
外部电源 5V 3A 舵机专用,与Pi5共地
云台机械件 亚克力pan-tilt套件 含SG90安装座

四条技术路径

最初检索了四种实现途径,按蚊子的适用性排序:

路径 方案 蚊子适用性 关键短板
A OpenCV+GPIO直驱舵机 可行但次优 舵机PWM和图像处理抢同一颗CPU
B OpenCV+串口控制舵机板 最佳(原计划) 控制板协议未知,卡壳
C 视觉伺服闭环 不推荐 需同时检测蚊子+激光点,亚像素级小目标几乎不可能
D 坐标变换 不推荐 蚊子轨迹跳跃无规律,开环映射无意义

核心逻辑:蚊子的难点不在”控制舵机去哪”,而在”看见蚊子在哪”。把控制甩给下位机,把算力全留给眼睛。

路径决策与转向

原定路径B(OpenCV检测 + 串口控制舵机板),因双路舵机控制板主控芯片N76E003AT20的固件协议无法获取,转向Pi5直驱方案:

阶段 控制方式 说明
原计划路径B 树莓派→UART→控制板→舵机 协议卡壳
当前方案 树莓派→pigpio硬件PWM→舵机直驱 本系列核心
备选方案B’ 树莓派→I2C→PCA9685→舵机 代码已备好,随时可切换

模块依赖关系


[01 舵机控制] ←─硬件驱动─→ [04 完整集成]
                              ↑
[02 视觉检测] ─输出质心─→ [03 控制算法] ─输出舵机角度─→ [04]
                              ↓
                         [05 激光控制]

整个系统分五个模块:舵机控制负责驱动硬件,视觉检测负责发现目标,控制算法负责把目标位置转化为舵机运动,完整集成把前三者组合成可运行系统,激光控制是独立的安全开关模块。

推荐推进顺序

Step 0 — 环境准备


sudo apt update && sudo apt install pigpio python3-pigpio i2c-tools
pip install opencv-python opencv-contrib-python numpy pigpio RPi.GPIO gpiozero
sudo pigpiod
sudo raspi-config -> Interface Options -> I2C -> Enable

Step 1 — 舵机动起来


python 01_舵机控制/示例代码/servo_pigpio.py

确认双轴都能平滑扫描,限位正常。若抖动严重,检查供电、共地、是否真用了硬件PWM。

Step 2 — 摄像头看见目标


python 02_OpenCV运动检测/示例代码/motion_mog2.py

VAR_THRESHOLDMIN_AREA/MAX_AREA 让目标稳定出现在画面中心红点。

Step 3 — 控制算法单独验证


python 03_跟踪控制算法/示例代码/pid_controller.py
python 03_跟踪控制算法/示例代码/kalman_tracker.py

Step 4 — 端到端集成


python 04_完整集成示例/示例代码/autoturret_complete.py
python 04_完整集成示例/示例代码/mosquito_tracker_template.py

Step 5 — 激光开关集成

在主循环中加入激光开关,当跟踪误差小于阈值时才点亮激光。

关键风险与已知短板

  1. 舵机速度:SG90约0.1s/60度,蚊子近距离角速度可能超出。建议准备MG90S金属齿备用。
  2. 有效距离:C270在1米外蚊子已近亚像素,实际有效范围0.5~1.5米。
  3. 多进程复杂度:完整集成示例的多进程架构延迟低但调试复杂,起步可先用单进程版本。
  4. 供电:双舵机同时转动瞬态电流可达1A,务必外部5V供电且与Pi5共地。
  5. 激光安全:低功率也禁直射人眼,建议加”对准后才点亮”硬保护。

蚊子与气球的本质差异

这是整个项目最关键的一张表——它决定了检测算法必须换范式:

维度 气球 蚊子
大小 占画面几十~几百像素 几像素到十几像素
颜色 单一鲜艳,HSV阈值秒杀 暗色杂色,HSV无效
速度 慢、可预测 快(1~2 m/s)、轨迹zigzag
检测方法 HSV+轮廓/霍夫圆 帧差/MOG2 + 轮廓面积过滤

简单说:协议照旧去破,检测算法另起炉灶,控制器加预测。后续文章按模块逐一展开。


已发布

分类

,

来自