发作品签到
专业版

【 2023电赛】E题运动目标控制与自动追踪系统-STI_K06队

工程标签

5.3k
0
0
2

简介

本系统是一套STM32F407VET6为主控制器的运动目标控制装置和自动追踪装置,使用Jetson Nano作为图像处理单元,利用误差值进行PID算法控制步进电机转角,实现运动目标控制与自动追踪的功能

简介:本系统是一套STM32F407VET6为主控制器的运动目标控制装置和自动追踪装置,使用Jetson Nano作为图像处理单元,利用误差值进行PID算法控制步进电机转角,实现运动目标控制与自动追踪的功能
助力2023全国电赛

开源协议

GPL 3.0

创建时间:2023-07-09 03:35:29更新时间:2023-09-13 01:36:41

描述

一、团队介绍

团队成员:曹松良,江毓致,李宇贤
我们团队来自华中科技大学人工智能与自动化学院,作品获得2023全国大学生电子设计竞赛全国一等奖

二、题目要求

设计制作一个运动目标控制与自动追踪系统。系统包括模拟目标运动的红色光斑位置控制系统和指示自动追踪的绿色光斑位置控制系统。系统结构示意及摆放位置见图1(a)。图中两个激光笔固定在各自独立的二维电控云台上。

<img src="//image.lceda.cn/pullimage/tsQtkqFbBCzLvUIpjNcFMgZ9TJrDmkMfbRLv04WC.png" alt="tsQtkqFbBCzLvUIpjNcFMgZ9TJrDmkMfbRLv04WC.png" />
<br />

红色激光笔发射的光斑用来模拟运动目标,光斑落在正前方距离1m处的白色屏幕上,光斑直径≤1cm。红色光斑位置控制系统控制光斑能在屏幕范围内任意移动。
绿色激光笔发射的光斑由绿色光斑位置系统控制,用于自动追踪屏幕上的红色光斑, 指示目标的自动追踪效果,光斑直径≤1cm。绿色激光笔放置线段如图1(b)所示,该线段与屏幕平行,位于红色激光笔两侧,距红色激光笔距离大于0.4m、小于1m。绿色激光笔在两个放置线段上任意放置。
屏幕为白色,有效面积大于0.6╳0.6m2。用铅笔在屏幕中心画出一个边长0.5m的正方形,标识屏幕的边线; 所画的正方形的中心为原点,用铅笔画出原点位置,所用铅笔痕迹宽≤1mm。
1.基本要求
(1)设置运动目标位置复位功能。执行此功能,红色光斑能从屏幕任意位置回到原点。光斑中心距原点误差≤2cm。
(2)启动运动目标控制系统。红色光斑能在 30 秒内沿屏幕四周边线顺时针移动一周,移动时光斑中心距边线距离≤2cm。
(3) 用约1.8cm宽的黑色电工胶带沿A4纸四边贴一个长方形,构成A4靶纸。将此A4 靶纸贴在屏幕自定的位置。启动运动目标控制系统,红色光斑能在30秒内沿胶带顺时针移动一周。超时不得分,光斑完全脱离胶带一次扣2分, 连续脱离胶带移动5cm以上记为0分。
(4)将上述A4靶纸以任意旋转角度贴在屏幕任意位置。启动运动目标控制系统,要求同(3)。
2.发挥部分
(1)运动目标位置复位,一键启动自动追踪系统,控制绿色光斑能在2秒内追踪红色光斑,追踪成功发出连续声光提示。此时两个光斑中心距离应≤3cm。
(2)运动目标重复基本要求(3)~(4)的动作。绿色激光笔发射端可以放置在其放置线段的任意位置,同时启动运动目标及自动追踪系统,绿色光斑能自动追踪红色光斑。启动系统2秒后,应追踪成功,发出连续声光提示。此后,追踪过程中两个光斑中心距离大于3cm时,定义为追踪失败,一次扣2分。连续追踪失败3秒以上记为0分。
运动目标控制系统和自动追踪系统均需设置暂停键。同时按下暂停键,红色和绿色光斑应立即制动,以便测量两个光斑中心距离。
(3)其他。

三、设计摘要

本系统是一套STM32F407VET6为主控制器的运动目标控制装置和自动追踪装置,两个装置分别可以实现红色激光运动控制和绿色激光自动追踪红色激光的功能。控制系统与追踪系统均使用Jetson Nano作为图像处理单元,寻找光斑位置,并将仿射变换后的坐标误差值实时反馈给主控制器。主控制器利用误差值进行PID算法控制步进电机转角,进而控制二维云台运动。通过视觉实时反馈误差闭环控制,实现运动目标控制与自动追踪的功能。

四、题目分析

本题目是一个运动目标控制与自动追踪系统,考虑到系统的精度要求很高,我们使用步进电机而不是舵机来控制云台。控制方案上面我们没有选择相对比较直观的方案:视觉识别出黑框4个角点,将坐标传给主控而主控解算运动路径的方案,而是使用了完全视觉闭环的方案:视觉识别先识别出黑框,然后进行路径规划算法制定好一系列的目标点并不断更新,同时视觉识别出红色、绿色激光点的位置,经过运算实时地给主控传输当前的坐标偏差值。我们认为这种控制方案可以胜任从基础到发挥的全部任务,且从原理上保证了激光点运动的精度。

主控涉及到的任务包括控制步进电机的转动、声光信号的控制、暂停功能的实现,相对来说是比较简单的。难点在于视觉任务,包括识别整个屏幕的位置、识别黑框的位置、识别激光点的位置等等。

我们制作了一个大小为60cm*60cm的屏幕,其中有效面积是题目中要求的50cm*50cm,考虑到题目中明确写到铅笔画的痕迹小于1mm,难以作为视觉识别的识别条件,我们计划在测评的恢复阶段,使用四个绿色的标定块供视觉程序进行标定(仅在恢复阶段,在正式测评阶段开始之前需要取下来),在这之后不再移动屏幕和红色激光云台的位置,这样就在红色激光云台程序中得到了完全准确的屏幕位置。

对于基础一的红色激光点复位功能,在标定后已经知道了屏幕的准确位置,经过计算后取其几何中心作为目标点,视觉识别出红色激光点的位置,利用其中的坐标误差进行PI控制,保证了控制完成后没有静差。

对于基础二的红色激光点绕框运动功能,在标定后已经知道了屏幕的准确位置,经过路径规划一系列目标点并不断更新,视觉识别出红色激光点的位置,利用其中的坐标误差进行PI控制。

对于基础三、四的红色激光点绕黑胶框运动功能,视觉识别出黑框位置,经过路径规划一系列目标点并不断更新,视觉识别出红色激光点的位置,利用其中的坐标误差进行PI控制。

对于提高一、二的绿色激光点跟踪红色激光点运动功能,绿色激光云台的状态机没有做出区分,和红色激光云台的区别在于视觉模块需要识别分辨出红色激光点和绿色激光点,将这两个点之间的坐标误差投入运算即可。

五、总体设计框图

<img src="//image.lceda.cn/pullimage/518LoaE2QC1dyHiPgEGQU7tSu6UGLBx0tQkyZGiB.png" alt="518LoaE2QC1dyHiPgEGQU7tSu6UGLBx0tQkyZGiB.png" />
<br />
图2 系统框图

系统框图如图2所示,本系统由视觉模块、主控模块、动力驱动模块和人机交互模块构成。使用Jetson Nano作为视觉模块,使用OpenCV图像处理获得红色光斑和绿色光斑的位置,并将仿射变换后的坐标误差通过UART反馈给主控制器;使用STM32F407VET6作为主控制器,接收到误差后,根据当前选题状态分别输出两个步进电机的控制信号,并且实时输出人机交互信号;使用TMC2209步进电机驱动和步进电机作为动力驱动模块,云台根据输入信号控制两个步进电机的转动角度,实现运动目标和自动跟踪系统的二维移动;使用按键、OLED屏、串口屏和TFT屏作为人机交互模块,实现模式选择、阈值调整、视觉图像监视等等功能。

六、硬件电路组成

总体电路框图

<img src="//image.lceda.cn/pullimage/gbuALivZWzcHZSPP9Ydrr6U5tpAOj0cyP55XChr9.png" alt="gbuALivZWzcHZSPP9Ydrr6U5tpAOj0cyP55XChr9.png" />
<br />
图3 总体电路图

系统总体电路图如图3所示,电源12V锂电池通过LM2596S和AMS1119稳压分别输出5V和3.3V,作为STM32、Jetson Nano等模块的VCC;驱动TMC2209利用12V作为VM,根据MCU输出的控制信号DIR和STEP,驱动步进电机转动指定角度;主控和视觉模块通过UART、SPI、IIC等协议和串口屏、TFT屏、OLED屏通讯,实现了人机交互功能。

其中电源12V锂电池通过LM2596S和AMS1119稳压分别输出5V和3.3V,对应立创EDA“电源底板”板子,LM2596S使用成品模块,参考链接:https://detail.tmall.com/item.htm?_u=3201hci8mncc53&id=41307963557&skuId=4281117730147&spm=a1z09.2.0.0.67002e8d4lgUkC~~~~

其中驱动TMC2209利用12V作为VM,根据MCU输出的控制信号DIR和STEP,驱动步进电机转动指定角度,对应立创EDA“驱动中板”板子,驱动TMC2209使用成品模块,参考链接:https://detail.tmall.com/item.htm?abbucket=14&id=630177698191&ns=1&spm=a21n57.1.0.0.24da523cw02Flv

其中STM32主控转接板,对应立创EDA“F407”板子,STM32F407VET6使用成品模块,参考链接:https://item.taobao.com/item.htm?spm=a21n57.1.0.0.24da523cw02Flv&id=732731122296&ns=1&abbucket=14#detail

三层板的板间连接和固定

为了应付所有可能出现的外设,我们在STM32F407VET6核心板的基础上设计出了这个3层的“控制塔”,塔由电源层,驱动层和控制层组成,3层板通过长排针传递信号和电源,可以做到板间无任何电线,在比较小的空间内实现较高的集成度。该控制塔由12V电池供电,可以给视觉模块输出5V供电,可以驱动4个有刷直流电机,2个步进电机、4个舵机等功率器件,此外还留有12864OLED、蓝牙模块、蜂鸣器模块、3个LED灯、一个JY901陀螺仪、3个串口等接口,几乎可以应对所有电赛控制类题目。

在立创EDA的工程文件中,一共有三块板子:电源下板,驱动中板和F407,按照从下到上的顺序叠在一起。

电源下板的12V,6.3V,5V,3.3V和GND向上传输给驱动中板,电源下板对应口焊上排母,驱动中板对应口方向朝下焊上长脚排针;

驱动中板的5V,3.3V和GND向上传输给F407,F407的各个控制信号向下传输给驱动中板。驱动中板对应口焊上排母,F407对应口方向朝下焊上长脚排针;

三块板子的四个角上分别留有四个M3的螺丝孔,在三块板子通过长脚排针和排母连接好并且检查确定电气连接无误后,可以使用M3的铜柱/尼龙柱进行加固。

小提示:buck模块通过排针直接焊在电源底板上,步进电机驱动的散热片最好更换为比较矮的散热片,这些都是为了防止板间上下距离不够的措施;铜柱/尼龙柱高度不合适可以通过套M3的螺母进行微调。

三层板组装好后是这样的:

<img src="//image.lceda.cn/pullimage/Z84YUPL0LKQQN6FRL0C60nmmBFS2Is3nNdtu18Ps.jpeg" alt="Z84YUPL0LKQQN6FRL0C60nmmBFS2Is3nNdtu18Ps.jpeg" />
<br />



<img src="//image.lceda.cn/pullimage/vJoUYbFJnwB71Ta4nGElqAOzKQaeVF7SgV9xJOuK.jpeg" alt="vJoUYbFJnwB71Ta4nGElqAOzKQaeVF7SgV9xJOuK.jpeg" />
<br />

七、程序流程图

运动目标控制和自动跟踪装置程序设计流程图分别如图4和图5所示。

运动目标控制装置:视觉模块Jetson Nano通过UART和主控STM32F407VET6通讯,实时地传输经过坐标变换后的屏幕上的目标点和当前红色光斑点的误差;主控上电开始后,根据按键选题的模式进行PID算法输出PWM控制信号,进而精确控制步进电机的转动角度,实现运动目标始终跟随视觉模块解算出的目标点运动的功能。

自动跟踪装置:视觉模块Jetson Nano通过UART和主控STM32F407VET6通讯,实时地传输经过坐标变换后的红色光斑点和当前绿色光斑点的误差;主控上电开始后直接进行PID算法输出PWM控制信号,同样实现自动跟踪装置始终跟随运动目标运动的功能。并且当收到的误差值小于设定的阈值时可以认为已经跟踪成功,此时发出声光提示。

<img src="//image.lceda.cn/pullimage/QdpedL6JsSddhSofhBL0poWdDo88LQMvKHnrugEM.png" alt="QdpedL6JsSddhSofhBL0poWdDo88LQMvKHnrugEM.png" />
<br />
图4 运动目标控制装置流程图                                                                                     图5 自动跟踪装置流程图

      

程序的具体结构和思路详见Gitee仓库中的Readme部分。

八、继电器和声光提示

继电器使用成品模块,参考链接:https://detail.tmall.com/item.htm?abbucket=14&id=682203466764&ns=1&spm=a21n57.1.0.0.24da523cw02Flv

<img src="//image.lceda.cn/pullimage/zUW7NNUuM3x0eoEwdgzvyeInSZ0rzx6qngLW4x6E.png" alt="zUW7NNUuM3x0eoEwdgzvyeInSZ0rzx6qngLW4x6E.png" />
<br />

以下是红色激光云台的激光继电器接线:

继电器端口连接到的端口
DC++5V
DC-GND
IN可以接主控的I/O口,给高电平使得激光亮,我们直接接3V3常亮
COM+5V
NO接激光笔的正极
NC悬空

激光笔的负极接GND,绿色激光云台的激光继电器接线同上。

以下是绿色激光云台的声光提示继电器接线:

继电器端口连接到的端口
DC++5V
DC-GND
IN接主控的I/O口,给高电平使得蜂鸣器响和LED亮,我们接的B8口
COM+5V
NO接蜂鸣器的信号脚,和LED的正极
NC悬空

蜂鸣器和LED的负极接GND,蜂鸣器的正极接+5V,记得LED要接限流电阻,注意蜂鸣器的型号要是高电平响。

九、机械结构

我们使用环氧板和铝型材完成了机械结构的制作,单个云台的结构如下图所示

<img src="//image.lceda.cn/pullimage/qKXUScbfA4bXbfWbDEJV0tIwD94D7DwrtIP7tZld.png" alt="qKXUScbfA4bXbfWbDEJV0tIwD94D7DwrtIP7tZld.png" />
<br />

这是实物图

<img src="//image.lceda.cn/pullimage/HTTJYGP1wcauzjHUqa6KQ7jENhibUNJrlCPtAfvn.jpeg" alt="HTTJYGP1wcauzjHUqa6KQ7jENhibUNJrlCPtAfvn.jpeg" />
<br />

下面从下往上介绍机械结构。云台的最底部是一块用环氧板制作的底板,用来承托电路,底板通过螺丝与铝型材固定

<img src="//image.lceda.cn/pullimage/3rr5t0yLNWVLPlsr2BuHoSVTWeYIPKmBoIlguzJe.png" alt="3rr5t0yLNWVLPlsr2BuHoSVTWeYIPKmBoIlguzJe.png" />
<br />

在底板上方使用铝型材搭出一个坚固的长方体架子,竖着的四根铝型材中,有两根长一点,两根短一点,这在上面的总图中可以清晰地看出来。

我们将电路放置在中间底部的空间中,电路一共是4层,下面3层是本工程的F407三层模块,最上面的一层是Jetson Nano模块,Jetson Nano需要用环氧板额外制作一个底板,用以固定Jetson Nano和连接下方电路。

接下来就是二维云台的部分了,我们在与两根短铝型材相同高度的位置固定云台支撑板,支撑板的下方固定一个42步进电机,支撑板的上方固定一个滚珠转盘,加入这个滚珠转盘可以分担云台上半部分的重力,让下方电机只负责旋转,提高旋转的稳定性。滚珠转盘是下面这种,我用的是3寸的,但是4寸会更好一点,想复刻的话可以自己改成四寸的。

<img src="//image.lceda.cn/pullimage/NV88ctV4RXxnr8r9WanzEPxRGRNmQLO8dSemOik8.png" alt="NV88ctV4RXxnr8r9WanzEPxRGRNmQLO8dSemOik8.png" />
<br />

在滚珠转盘上固定第二个步进电机和激光笔,具体结构不太好描述,可以看图理解或者打开工程。上面这个步进电机最好选薄一点的轻一点的,在固定激光笔的时候最好让激光笔处于云台的中心位置,这样利于控制。

<img src="//image.lceda.cn/pullimage/G4VFnTH6oPzK74RPaipuh2OEnGSKrn592A3LWaWD.png" alt="G4VFnTH6oPzK74RPaipuh2OEnGSKrn592A3LWaWD.png" />
<br />

最后,我们需要在两根长铝型材上再固定一块环氧板以固定摄像头,具体可以看上面的实物图。

十、演示视频

由于作品已经拆除,所以这里只给出人机交互界面、视觉与STM32通信的演示视频

附件中的视频是压制分割过的,点击下方的链接可以到B站看高清完整的视频

https://www.bilibili.com/video/BV1bm4y1K7rw/

十一、附件内容

附件一:STM32F407代码

工程中有使用说明,请将分支切换为23E

工程连接:2023电赛E题STM32F407部分代码: 在CubeMax+CLion环境下用C++为2023电赛编写的电控代码 (gitee.com)

附件二:Jetson Nano视觉代码

工程连接:https://github.com/hubhub086/23E

附件三:Solidworks工程文件

工程连接:https://wwme.lanzouq.com/iH9zB17coqja

附件中的视频是压制、分割过的,最好点击上方“十、演示视频”中的链接到B站观看高清完整的演示视频

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
STM32F407代码.zip
123
2
视觉代码.zip
166
3
介绍视频1~1.mp4
60
4
介绍视频2.mp4
61
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航