基于OpenCV的运动控制与自动追踪系统设计与实现
Design and Implementation of Motion Control and Automatic Tracking System Based on OpenCV
DOI: 10.12677/CSA.2024.142023, PDF, HTML, XML, 下载: 72  浏览: 192  科研立项经费支持
作者: 冯 晔, 周瑾萱, 谭 鑫, 严 浪:武汉商学院信息工程学院,湖北 武汉
关键词: 机器视觉运动控制目标追踪PID算法Machine Vision Motion Control Target Tracking PID Algorithm
摘要: 为了实现位置控制与自动追踪的目的,本研究采用软硬结合的方法,设计了一套运动目标控制系统与自动追踪系统。该系统由嵌入式开发板树莓派4B、嵌入式计算机视觉平台OpenCV、摄像头模块、按键模块、二维舵机云台和激光笔构成,将嵌入式开发板、计算机视觉平台、传感器等硬件设备与相应的控制算法结合,形成一个完整的系统。系统通过摄像头模块采集图像信息,并对图像数据进行处理。将运动目标控制和自动追踪功能融合到一个系统中,利用PID算法精确控制舵机,实现激光笔的光点在屏幕上按照目标要求进行移动。本系统实现了激光笔光点的运动目标控制和自动追踪功能,其中包括一键复位功能、沿正方形移动、沿A4纸边缘移动以及自动追踪激光等功能。为了使自动追踪系统功能更加稳定,运动控制系统采取了较低速度的匀速运动,并且可以通过按键选择各个测试模式。
Abstract: In order to realize the purpose of position control and automatic tracking, a moving target control system and an automatic tracking system are designed by combining soft and hard methods. The system is composed of embedded development board Raspberry PI 4B, embedded computer vision platform OpenCV, camera module, key module, two-dimensional steering gear head and laser pointer. The embedded development board, computer vision platform, sensor and other hardware devices are combined with corresponding control algorithms to form a complete system. The sys-tem collects image information through the camera module and processes the image data. The moving target control and automatic tracking functions are integrated into one system, and PID algorithm is used to precisely control the steering gear, so that the laser pointer spot moves on the screen according to the target requirements. The system realizes the moving target control and au-tomatic tracking function of the laser pointer spot, including one-key reset function, moving along the square, moving along the edge of A4 paper and automatic tracking laser. In order to make the automatic tracking system function more stable, the motion control system adopts a lower speed of uniform motion, and each test mode can be selected by pressing a button.
文章引用:冯晔, 周瑾萱, 谭鑫, 严浪. 基于OpenCV的运动控制与自动追踪系统设计与实现[J]. 计算机科学与应用, 2024, 14(2): 224-232. https://doi.org/10.12677/CSA.2024.142023

1. 引言

随着现代科技的飞速发展,运动目标控制与自动追踪系统作为一种重要的技术手段,逐渐在各个领域中得到广泛应用 [1] 。现有的运动目标控制与自动追踪系统存在先攻速度较慢,导致在目标移动过程中丢失,影响实时性。本文致力于解决位置控制和自动追踪功能,确保激光笔按照目标要求进行移动,通过摄像头模块采集图像信息,并对图像数据进行处理,为运动目标控制和自动追踪提供必要的视觉输入。系统实现了一键复位、沿正方形移动、沿A4纸边缘移动以及自动追踪激光等功能,以提供多样化的应用场景。

2. 系统方案设计与论证

2.1. 方案分析与选择

2.1.1. 嵌入式视觉平台的方案分析与选择

嵌入式视觉平台能够对摄像头模块采集的图像信息进行高效处理。系统通过摄像头模块采集图像信息,嵌入式视觉平台可以对这些图像数据进行实时处理,提取有用的信息,为后续的运动目标控制和自动追踪提供必要的视觉输入。支持目标识别和跟踪算法,系统的自动追踪功能涉及对激光笔光点的追踪,嵌入式视觉平台可以帮助实现对目标的识别和持续跟踪,确保激光笔光点在屏幕上按照目标要求进行移动。对于运动目标控制和自动追踪系统来说,实时性是至关重要的,嵌入式视觉平台的快速图像处理能力有助于保持系统对目标的即时响应。

方案一:采用OpenMV嵌入式计算机视觉平台。OpenMV是一个基于MicroPython的嵌入式计算机视觉平台,使用ARM微控制器。开发者可以使用Python语言编写图像处理和计算机视觉应用,无需深入了解底层硬件编程。它专注于图像处理和计算机视觉任务,提供丰富的图像处理库和示例代码。OpenMV配备了图像传感器和其他传感器,可以直接连接摄像头、显示屏、Wi-Fi模块等设备。

方案二:采用OpenCV嵌入式计算机视觉平台。OpenCV是一个开源的计算机视觉库。它提供了丰富的函数和工具,用于处理图像和视频数据,以及进行计算机视觉和机器学习任务。OpenCV支持多种编程语言,包括C++、Python和Java等,使开发者能够在不同的平台上进行开发和应用。基于轻量级的Open CV软件库,导入Python的依赖包cv2,加载并调整图像大小,并将其转换为灰度图像,以提高检测的准确性 [2] 。OpenCV包含了各种图像处理和计算机视觉算法,如图像滤波、边缘检测、特征提取、目标检测和跟踪等。它还提供了一系列用于几何变换、颜色空间转换和图像分割等功能。OpenCV还集成了机器学习算法,如支持向量机(SVM)、决策树和神经网络等,用于图像分类、目标识别和行为分析等任务。

方案三:采用K210嵌入式计算机视觉平台。K210是一种由中国公司寒武纪(Kendryte)开发的系统级芯片(SoC)。它采用RISC-V架构,是一种开源的指令集架构,支持低功耗和高性能。K210芯片主要用于机器学习和人工智能应用,如物体识别、语音识别等。它在物联网设备、智能摄像头、智能家居等边缘计算设备中广泛应用。

综上所述,OpenMV适合简单的图像处理和计算机视觉应用,OpenCV提供了丰富的图像处理和计算机视觉算法,支持多种任务,如图像滤波、特征提取、目标检测和跟踪等,而K210适合处理复杂的图像处理和计算任务。因此,本设计选择采用OpenCV作为运动目标控制系统的平台、采用OpenMV作为自动追踪系统的平台。

2.1.2. 自动控制算法的方案分析与选择

自动控制算法能够实现对运动目标的精确控制。通过使用算法,系统可以根据输入的图像信息和目标要求,动态地调整舵机的位置,确保激光笔光点按照预定的轨迹进行移动,帮助系统在运行时自动调整舵机位置,使激光笔光点能够持续实时追踪目标。

方案一:采用开环算法。开环控制是一种简单的控制方法,其中输出信号不受系统反馈信息的影响。在开环控制中,输入信号直接作为控制器的输出信号,用于云台电机控制。开环控制没有对输出信号进行监测和调整的机制,因此无法纠正外部干扰和内部误差,导致系统的稳定性和精确性较差。在开环控制中,系统的性能高度依赖于模型的准确性和环境条件的稳定性。对于复杂系统或存在不确定性的环境,开环控制的性能可能会受到较大影响。

方案二:采用闭环控制。闭环控制是一种基于反馈的控制方法,其中输出信号受系统反馈信息的影响。在闭环控制中,输出信号被反馈给控制器,并与期望信号进行比较,然后根据误差来调整控制器输出,以实现对输出信号的精确控制。闭环控制可以实时纠正外部干扰和内部误差,提高系统的稳定性和精确性,使系统能够更好地适应不确定性和变化的环境条件。在闭环控制中,采用合适的控制算法(如PID控制算法)可以优化系统的性能,使系统更快地响应控制信号,减少超调和稳态误差。PID控制算法按比例、积分、微分的函数关系,进行运算,将其运算结果用以输出控制。优点是控制精度高,是控制系统非常普遍的运算方法。对于本系统的控制已足够精确。

综上所述,设置运动目标复位以及启动运动目标控制选择开环控制,其余部分选择使用闭环控制,并采用PID算法控制激光笔是较为合理的选择。PID控制算法在工业领域应用得十分普遍,其主要是由比例、积分和差分三部分构成,测量时比较受控变量的真实值与期待值,以此修正系统的响应 [3] 。PID算法能够优化系统的性能,使激光笔具有快速响应和灵活性,适用于实现精确的运动控制。

2.2. 总体方案描述

本系统的目标运动控制系统采用树莓派4B作为主控芯片,结合摄像头模块、按键模块,通过目标运动控制PID算法精准控制舵机,舵机的任务是根据计算机指令信号,驱动舵机 [4] 。实现了激光一键复位、沿正方形移动、沿A4纸边缘移动的功能。目标运动控制系统结构框图如图1所示。

Figure 1. Block diagram of target motion control system

图1. 目标运动控制系统结构框图

本系统的自动追踪系统采用入式计算机视觉平台OpenMV,结合摄像头模块、按键模块、蜂鸣器,通过目标追踪PID算法精准控制舵机,实现了激光自动追踪红色激光的功能。自动追踪系统结构框图如图2所示。

Figure 2. Block diagram of automatic tracking system

图2. 自动追踪系统结构框图

3. 理论分析与计算

3.1. 测量原理分析与计算

3.1.1. 矩形位置检测

OpenCV对采集到的图像进行预处理,例如灰度化、二值化等。这些预处理步骤有助于减少图像中的噪声并简化后续的图像处理。在预处理后的图像上执行边缘检测算法,以识别矩形的边缘。使用C++语言的OpenCV进行图像分析具有分析速度快、实时性强、视频处理效果好等优点 [5] 。基于边缘检测的结果,进行轮廓检测,找出图像中的所有轮廓。对检测到的轮廓进行筛选,通过设置阈值和条件来排除不符合矩形特征的轮廓。对经过筛选的轮廓进行拟合,找出最接近的矩形。

3.1.2. 二轴云台控制分析

二轴云台通常由两个电机驱动,一个用于控制水平运动,另一个用于控制垂直运动。通过控制电机的转速和方向,可以实现云台在水平和垂直方向上的旋转和倾斜。为了实现云台的精确控制,需要设计合适的控制算法。常见的控制算法包括PID控制、模糊控制和自适应控制等。这些算法可以根据传感器反馈的位置信息和预设的目标位置,计算出合适的控制信号来驱动电机,使云台运动到目标位置。

3.1.3. 斜线运动控制

斜线运动采用插值算法控制,设 a ( X 1 , Y 1 ) 为起点, b ( X 2 , Y 2 ) 为终点。设点 c ( X 3 , Y 3 ) 为目标点。对AB两点之间进行插值,插值数量为N。

d x = X 2 X 1 N (1)

d y = Y 2 Y 1 N (2)

那么c的轨迹就是: { X 1 + 1 d x , X 1 + 2 d x , ... , X 1 + N d x } 。设识别光斑到的点为 P ( X 4 , Y 4 ) ,那么计算设置PC的欧氏距离为 D = P C 2 2 。然后进行PID控制。当PC足够近,D小于设定阈值,就认为是重合了,目标点切换到下一个点。

3.2. 误差分析

在本系统中,产生误差的原因主要有三个:

① 由于镜头位置与采集屏幕之间的偏差,导致图像采集对应的矩形四角坐标,与实际舵机转动角度的映射存在误差。

② 对应相同坐标位置的目标点,舵机转动角度时会出现误差。

③ 环境光照强度会影响图片识别结果,导致得到目标点坐标产生一定的偏差,甚至无法识别到指定内容。

针对以上的误差,改进的方法如下:

① 尽量保证屏幕,镜头之间的对位精准程度,更换控制精度更高的设备。

② 由于误差的存在,在编写程序时,将应当考虑误差,使整个系统容错性更高。

③ 环境光照影响,可通过在一定范围内调整延时阈值或者添加偏振片达到滤光效果。

4. 电路与程序设计

4.1. 电路设计

Figure 3. OpenCv circuit diagram

图3. OpenCv电路图

本系统由红色激光笔运动目标控制系统、绿色激光笔自动追踪系统组成。红色激光笔控制系统由二轴舵机云台、树莓派4B、摄像头、电源、按键组成,绿色激光笔控制系统由二轴舵机云台、OpenCV、摄像头、蜂鸣器、LED、电源组成。OpenMV电路如图3所示。

4.2. 程序设计

1) 初始化,控制二轴云台控制激光笔在屏幕上精准移动时,在程序开始进行系统初始化,包括初始化OpenCV、舵机、传感器、树莓派4B等。设计流程如图4所示。

Figure 4. Flow chart of the rectangle recognition program

图4. 矩形识别程序流程图

2) 设定目标位置,在程序中设定激光笔在屏幕上的目标位置。目标位置通过树莓派OpenCV识别到矩形后,通过插值法计算获得。

3) 主循环,进入主循环,程序会不断执行以下步骤:

① 获取传感器反馈:读取舵机的位置信息,获取当前云台的姿态。

② 计算误差:将目标位置与当前位置进行比较,计算出误差。即目标位置与实际位置之间的差距。

③ PID控制器计算:将误差输入PID控制器,根据PID算法计算出控制信号。PID控制器会根据比例系数Kp、积分系数Ki和导数系数Kd对误差进行加权计算,得到控制信号。

④ 控制信号输出:将PID计算得到的控制信号转换为PWM信号,并发送给舵机,控制云台的转动。

⑤ 限制和安全检查:对于舵机或电机的控制信号,进行范围限制,确保云台不超出安全转动范围,并避免碰撞。

⑥ 重复运行:以上步骤会在循环中不断运行,直到激光笔移动到设定的目标位置。在运动到目标位置后,控制器可以进入静止状态或继续接收新的目标位置。

⑦ 优化和调试:进行系统调试和优化,根据实际情况调整PID参数(Kp、Ki、Kd)以及采样频率等参数,使云台运动更加稳定和精确。

⑧ 中断程序:当按下中断按钮时,程序会进行中断,舵机停止运动。

5. 测试方案与测试结果

5.1. 测试方案

1) 硬件测试:检测机械部分能否在范围内正常工作,并且检查电路焊接是否无误,各模块接线是否正确。

2) 软件测试:检测程序是否能正常运行,是否会发生卡死、报错等现象。

3) 软硬结合测试:将实现好的编程算法烧录进硬件中,脱机运行检测运动目标控制与自动追踪系统两部分运行结果是否满足各项要求。

5.2. 测试结果与分析

5.2.1. 测试结果

1) 设置运动目标位置复位功能。执行此功能,红色光斑能从屏幕任意位置回到原点。光斑中心距原点误差 ≤ 2 cm。测试结果如表1所示。

Table 1. Test result data of reset function

表1. 复位功能测试结果数据

2) 启动运动目标控制系统。红色光斑能在30秒内沿屏幕四周边线顺时针移动一周,移动时光斑中心距边线距离 ≤ 2 cm。测试结果如表2所示。

Table 2. Test result data of system startup

表2. 系统启动测试结果数据

3) 用约1.8 cm宽的黑色电工胶带沿A4纸四边贴一个长方形,构成A4靶纸。将此A4靶纸贴在屏幕自定的位置。启动运动目标控制系统,红色光斑能在30秒内沿胶带顺时针移动一周。测试结果如表3所示。

Table 3. Test result data of system startup

表3. 系统启动测试结果数据

4) 将上述A4靶纸以任意旋转角度贴在屏幕任意位置。启动运动目标控制系统。测试结果如表4所示。

Table 4. Test result data of system startup

表4. 系统启动测试结果数据

5) 运动目标位置复位,一键启动自动追踪系统,控制绿色光斑能在2秒内追踪红色光斑,追踪成功发出连续声光提示。此时两个光斑中心距离应 ≤ 3 cm。测试结果如表5所示。

Table 5. Test result data of system startup

表5. 系统启动测试结果数据

6) 运动目标重复基本要求(3)~(4)的动作。绿色激光笔发射端可以放置在其放置线段的任意位置,同时启动运动目标及自动追踪系统,绿色光斑能自动追踪红色光斑。启动系统2秒后,应追踪成功,发出连续声光提示。测试结果如表6所示。

Table 6. Test result data of system startup

表6. 系统启动测试结果数据

5.2.2. 测试结果分析

根据上述测试数据分析,本系统能够较好的完成运动目标复位的功能,红色光斑能从任意位置回到原点并且距原点误差小于2 cm,以及启动运动目标控制系统及自动追踪系统的功能,红色光斑能在30秒内沿屏幕四周边线顺时针移动一周,移动时光斑中心距边线距离小于2 cm。

6. 结论

本系统通过理论分析得到合理的方案,以树莓派4B开发板为控制核心,结合硬件电路,设计并实现了运动目标控制系统与自动追踪系统,能够实现红色光斑的高精度运动目标控制,使其从任意位置迅速并准确地回到原点,展现了系统在精准度方面的优势,成功实现了自动追踪功能,红色光斑在规定的时间内完成了沿屏幕四周边线的移动,并且保持了良好的稳定性,表明系统在自动追踪方面具有较高的性能,完成了对目标追踪的测量与显示,且各项指标均优于预期值。

基金项目

武汉商学院大学生创新创业训练计划项目“基于图像识别的智能机械手臂设计”(202311654016)。

参考文献

[1] 张园, 许卓然, 刘育成. 运动目标控制与自动追踪系统设计[J]. 中国集成电路, 2023, 32(12): 76-80.
[2] 刘加聪, 钟桂凤, 盛儒妤. 基于OpenCV和MTCNN算法的遮蔽物影响下的人脸识别研究[J]. 电脑编程技巧与维护, 2023(11): 120-124.
[3] 苏清源. 基于神经网络PID的多轮轮毂电机协调控制研究[J]. 计算机测量与控制, 2023, 31(8): 135-141.
[4] 崇阳, 李言俊, 张科, 等. 基于DSP的模糊PID舵机控制算法设计与实现[J]. 飞行力学, 2011, 29(2): 86-88.
[5] 王艺璇. 基于项目式教学法的OpenCV机器视觉实践教学[J]. 电脑知识与技术, 2023, 19(29): 169-171.