基于视觉的目标跟踪与双PID控制

发布: (2026年2月21日 GMT+8 23:01)
6 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供您希望翻译的文章正文内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及代码块和 URL。)

介绍

在机器人技术中,反馈是使系统具备智能的关键。与开环系统不同,闭环系统会持续测量其输出并实时进行自我校正。

在本项目中,我使用网络摄像头构建了一个基于视觉的闭环控制系统,采用 dual PID controllers。该系统能够检测彩色物体,在水平上对齐自身,并仅凭摄像头输入保持安全距离。这一设置模拟了自动驾驶汽车、无人机和移动机器人中使用的核心逻辑。

问题陈述

目标是设计一个仅使用摄像头输入即可实时跟踪目标物体并作出响应的系统。系统应当:

  • 从实时视频流中检测彩色物体。
  • 在水平方向上与物体对齐。
  • 保持安全且稳定的距离。
  • 使用反馈持续调整运动。

主要挑战在于将用于感知的计算机视觉与用于决策的 PID 控制相结合,形成一个闭环系统。

视觉管线

感知层从摄像头视频流中提取有意义的信息。

  1. 颜色空间转换 – 将每帧图像从 RGB 转换为 HSV。HSV(色相、饱和度、明度)将颜色信息(色相)与亮度分离,使分割对光照变化更具鲁棒性。
  2. 颜色阈值化 – 通过阈值将蓝色物体隔离出来,生成二值掩码(物体 = 白色,背景 = 黑色)。
  3. 轮廓检测 – 在二值掩码上寻找轮廓;最大的轮廓被视为目标。
  4. 特征提取 – 从选中的轮廓中获取:
    • 物体的 水平中心x_object
    • 边界框高度h_object

这些测量值用于计算控制误差:

[ \text{Error}{\text{steer}} = x{\text{object}} - x_{\text{frame_center}} ]

边界框高度可作为距离的近似度量:高度越大,物体越近。

控制系统设计

两个 PID 控制器并行工作:

控制器测量变量误差定义目标
转向水平位置 (x_object)$\displaystyle \text{Error}{\text{steer}} = x{\text{object}} - x_{\text{frame_center}}$保持目标在水平居中
距离目标高度 (h_object)$\displaystyle \text{Error}{\text{dist}} = h{\text{desired}} - h_{\text{object}}$保持安全距离(期望高度)

每个 PID 控制器由三个项组成:

  • Proportional (P) – 对当前误差作出响应。
  • Integral (I) – 修正累计的过去误差。
  • Derivative (D) – 抑制快速变化,减少超调。

通过组合转向和距离控制器,机器人可以同时对准目标并保持恒定的间距。

闭环架构

系统作为连续反馈回路运行:

  1. 从摄像头捕获一帧图像。
  2. 处理该帧(颜色转换 → 阈值 → 轮廓 → 特征提取)。
  3. 计算转向误差和距离误差。
  4. 将误差输入相应的 PID 控制器。
  5. 将 PID 输出应用于调节 转向前进速度
  6. 对下一帧重复上述过程。

因为输出直接影响下一次测量,回路保持闭合,实现实时校正和稳定性。

System Architecture

实验观察

During PID tuning I noted the following effects:

参数观察
高 $K_p$响应激进,导致围绕目标的振荡。
低 $K_p$响应缓慢、迟钝。
无微分项可观察到明显的超调,尤其在目标突然运动时。
加入微分项过渡更平滑,超调减少。
高积分增益误差累积导致长期不稳定。
适当调节 I消除稳态误差且不致系统失稳。

这些见解强化了每个 PID 组件如何塑造实际行为的认识。

实际应用

基于视觉的闭环控制在许多机器人领域中很常见,包括:

  • 跟线机器人
  • 自动驾驶车辆
  • 无人机跟踪系统
  • 仓库自动化机器人
  • 工业机器人中的视觉伺服

虽然本项目是一个简化的原型,但它捕捉了生产级自主平台使用的基本原理。

结论

该项目展示了 计算机视觉经典控制理论 可以无缝结合,以创建一个智能的、基于反馈的系统。通过将目标检测与双 PID 控制相耦合,机器人能够仅凭摄像头输入既对准目标,又保持安全距离。

通过此实现,我获得了以下实践经验:

  • 构建感知到控制的流水线
  • 在实时循环中调优 PID 控制器
  • 为机器人设计稳定的闭环架构
System design — all of which are fundamental concepts in robotics and autonomous systems.
0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……