《平衡小车控制系统》电子设计大赛校赛感悟

2024-06-19 01:28

本文主要是介绍《平衡小车控制系统》电子设计大赛校赛感悟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们学校举行了一次电子设计大赛选拔赛,虽然我们在测试的时候全部都可以完成,最后考核的时候因为方案选择问题以及各种设计逻辑等原因没能成功晋级,但我能从这次备赛中学到很多东西,遂分享一下,与广大网友交流经验。(只讲思路,代码太烂了就不提供了)

题目如下:

考察点:

基础部分:1.小车循迹 2.停车+蜂鸣器 3.控速停车

发挥部分:1.视觉云台,激光打靶 2.上下坡 3.字模识别+信息传输 4.考察小车上坡部分是否能够灵活,不写死。(虽然差不多也算是写死了)

根据题目要求,其实主要就分两部分:平衡小车循迹上坡+激光云台追靶子。

平衡小车部分:硬件清单:STM32F103C8T6 MPU6050 蜂鸣器模块 OLED显示屏 LM2596降压模块 正点原子ESP8266WiFi模块 TB6612MG 按键 波动开关 

激光云台:STM32F103C8T6 串口TTL模块 OLED显示屏 左右舵机线 还有些零件

基础部分:

小车循迹部分:模块采用的是八路灰度传感器,代码层面只需要移植商家给的资料,然后通过现场调试,通过自适应调试能够很好地适应赛道情况。处理逻辑也不难,就是当检测到左边出现黑线就给小车双轮赋值一个差速使它往右拐,检测到右边出现黑线就往左拐。然后用循迹函数封装起来。(在赛场上我还看到了拿OpenMV做循迹的,当时我们还没有这个财力,后续可能会考虑一下优化方案,这也是我们吃亏的地方TvT)

如下图所示:

小车平地停车部分:我们根据赛道规则,这里有挺多方案,可以选择通过检测黑线个数,达到第四个就让小车停下来,也可以通过时间计时,大概时间点停下来,也可以通过里程计,计算到差不多的时候停下来,我们采用的是比较保险的里程计+黑线检测方法。让小车停下来。(至于声光提醒只需要给个标志位然后在主函数执行即可)

时间要求:正常速度应该在20-30s内即可完成,速度要求可以忽略。

发挥部分:

发挥部分还是比较复杂的考虑的因素很多,我们整体方案采用的是工控机+OpenCV等方式进行执行视觉的全部功能(这里有个弊端,也是后面没晋级的原因)这里分几个点讲述一下大体思路,代码写的比较丑就不分享了。

视觉部分:

主要是OpenCV的处理算法,由于寒假期间配置过了环境以及YOLOv5,YOLOv8等环境,对OpenCV有了比较深刻的了解,所以我后面就主要负责这一部分。

识别靶子思路

                                                          

可以看到靶子是张这个样子的,我首先考虑的是,通过OpenCV识别圆形的算法实现靶子检测,但是当时没有考虑到一个点,如果单单是检测圆形的话,这要求比较严格,仅仅只有在小车运动的时候靶子始终正对着摄像头才有可能是一个标准的圆。所以只能另寻其路。

我们通过观察靶子实时运动情况,发现一个方案,就是通过椭圆拟合算法,恰好OpenCV里面也有类似的算法。然后通过灰度,高斯模糊,二值,边沿检测,轮廓提取等视觉处理方法,最后还要进行椭圆拟合(长短轴限定,面积限定等方法提高精确度)拟合成功后最重要的是得到靶子中心的坐标(这个是相对于摄像头图像640x480大小左上角来说的坐标),然后通过串口把中心坐标传输给单片机,再通过PID算法控制激光云台进行云台追踪。最后的效果如下:


                                (做了半个月的效果还算可以至少跑基础部分还不会跟丢)

识别字模思路:

                                              

                                                                         (字模库)                          

因为我们用的是工控机所以我们也不能像K210,那样可以进行训练,因为工控机性能没达到那个Level,所以在这里我们用OpenCV自带的模版匹配功能。方案也挺简单。首先按顺序保存待匹配的模版到文件夹里面,因为这里的顺序就是对应的数字1-8的顺序不然没经过训练,他不知道图像对应的是什么顺序。然后再通过对读入的图像进行简单处理,灰度,二值,提取轮廓等,然后获取边框信息再裁剪成符合字模库大小进行一一对比。并且输出对比得分最高的即可实现。所需功能。

传输方式:

因为工控机和平衡小车是不能连一条线的,所以采取的方案是小车搭配ESP8266与主机进行SOCKET通信(TCP)把得到的数字进行取余2判断是奇还是偶。然后让小车指定冲坡。

云台部分:

坐标的作用:

首先我们要明白靶子的中心坐标是指什么?

解释:因为每个摄像头能捕获的视频帧图像大小是固定的,它只能看到这么大的范围。而我们把这么大的范围抽象成像素点,有(640,480)大小的图像,这里的坐标是指距离左上角(0,0)的相对位置。在这里我们可以从图中看出红点坐标是(188,156)。

那么我们得到坐标的目的是什么?

解释:因为我们需要用云台去通过摄像头实时去追靶子,这样我们就需要通过摄像头实时得到靶子的位置。在这里我们为了方便,我们把摄像头中点定为激光中点。

为什么可以把摄像头中点定为激光中点?

因为我们的云台长这个样子:

我们只需要保持在竖直方向上激光和摄像头中点是在同一水平线上的。然后通过双头夹子往摄像头方向偏一定的角度,因为两直线只要不平行就一定会相交(前提是竖直方向是一样高度)。当然,也可以横轴在同一水平,竖轴形成夹角  。                              

                                           

这样我们就可以认为摄像头中点就是激光打到的中点了。

激光云台部分:

得到坐标后,我们还需要控制云台通过转动横轴竖轴(这里我们称X,Y轴)来实现实时追踪运动的靶子。这里发现,我们可以实时得到靶子中心点和摄像头中心点的坐标差,有了这个,我们就可以仿照平衡小车,速度环,直立环,转向环等等使用PID算法实现实时追踪。大概就张这个样子。

有了这个函数,我们只需要调KP,KI,KD即可(都试试看看哪个效果比较好就用哪个)

调试方法:

由于我们用的是数字舵机   X轴365.5°(转弯一圈要复位) Y轴180°

所以因为脉冲范围是500-2500,所以对于我们来说,主要调的是KI,要求累加到2000左右。如果用的是步进电机的话,可能不需要KI,可能KP就差不多了(我同学说的)

调好之后,再进行一些算法处理比如过滤偏移量过大的点,动态调节PID(适应冲坡速度剧增)等等方法,可以增强稳定性。

平衡小车部分:

                                               

冲坡部分:

这一部分,主要是要做好循迹和选择合适的时候加大速度冲上坡,当然如果循迹模块用得不好,每次上坡都是不稳定因素,他只取决于在最后一刻冲坡的角度,如果偏的太多可能会冲歪,后续就会脱离轨道循不回去。我们就采取比较笨的方法,就是检测到黑线就嘎嘎加速,一直走直到冲完坡的时候才减速。这样是十分不稳定的,但是没有什么办法,因为判断坡放在哪,八路循迹是做不到的,如果用里程计也是有点误差的。除非我们用OpenMV实时监测路况。(如果网友有好的办法,请指教)

停坡部分:

这次比赛的精髓,对于我们来说就是不可控因素,因为我们停坡其实相对写死,我们采用的方案是上坡后通过检测黑线来让停止,当然由于坡上平地只有8cm,这很可能会来不及停就冲下去了,所以我们就使用一个刚好能冲上坡的速度,让它冲上去速度就减小到一个很小的速度,再给他赋值一个相对平衡的目标值即可实现停坡。因为只要两秒,可以用反复赋值硬控两秒。我们在比赛前两天,发现我们这种办法其实不稳定,换一个场地就会受到影响,所以我们只能在实地调整。)不知道网友是否有更好地方法交流交流)

下坡部分:

主要做的是减速+偏转一定角度,使其下坡能够及时循迹,防止脱离轨道,循不回去。这里也没做什么方案,就纯属硬调。

反思与总结:这次没能成功晋级校赛原因其实有很多,但大部分都是自己的原因,因为我们选择的是工控机OpenCV做视觉处理 STM32F103C8T6作为主控。没考虑周到。

1.工控机没有写自启动程序,而采用电脑远程终端控制并且写了两个代码需要切换代码,这样做会被误认为在数字识别部分动手脚,违反规矩。

2.STM32F103C8T6作为主控,缺点是引脚太少了!!!我们本来想加上按键来执行每个部分,但是无奈的是管脚都拉满了,根本不够用,其实也是因为自己没学好其他单片机的原因造成的,这是后续需要加强的。

3.代码逻辑,不应该把全部部分融合到一起,依次执行,仅仅通过计时器来控制每一部分执行时间。导致我们在附加部分,老师没放好坡我的小车就已经开始走了,最后直接喜提0分(满分30)应该要通过关机开机然后按按键的方法,不要再写一堆了。

总结下来还是因为自己水平没达到像其他实验室同学,师兄的Level。后续需要加强学习,不断提高自己的能力!

这篇关于《平衡小车控制系统》电子设计大赛校赛感悟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073619

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

基于人工智能的智能家居语音控制系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着物联网(IoT)和人工智能技术的发展,智能家居语音控制系统已经成为现代家庭的一部分。通过语音控制设备,用户可以轻松实现对灯光、空调、门锁等家电的控制,提升生活的便捷性和舒适性。本文将介绍如何构建一个基于人工智能的智能家居语音控制系统,包括环境准备

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

写给大数据开发:你真的“慢“了吗?揭秘技术与职场的平衡艺术

你是否曾经在深夜里,面对着一个棘手的数据处理问题,感到无比沮丧?或者在一次重要的项目汇报中,突然语塞,无法清晰地表达你的技术方案?作为一名大数据开发者,这些场景可能再熟悉不过。但别担心,因为你并不孤单。让我们一起探讨如何在这个瞬息万变的行业中,既磨练技术利刃,又培养职场软实力。 目录 技术与时间的赛跑1. 长远视角的重要性2. 复利效应在技能学习中的应用 跨界思维:数据结构教我们的职场智

2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点: 1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

ACM东北地区程序设计大赛

不得不说随着参赛级别的提高,题目真的是越来越难啊,不过队长真是给力啊,在我们三个共同努力之下拿下了地区赛三等奖,哈哈我们可是大一唯一一只获奖队,终于在这次比赛打败了田大神。。。大神是失手了,俺和他差距还是挺大的。。。队友陈彤马上要去服兵役了,他说这是我们送给他最好的离别礼物,希望那家伙在部队好好干,以后谁干揍我!!!东北地区赛结束后,今年已经估计没机会参加亚洲区比赛了,赶紧补高数和线数啊!!别挂了

代码随想录 -- 二叉树 -- 平衡二叉树

110. 平衡二叉树 - 力扣(LeetCode) 思路:仍然是递归调用 1. 定义一个递归函数 count 用来计算二叉树的层数 2. isBalanced 函数:如果传入根节点为空返回真;如果根节点 | 左子树的层数 - 右子树的层数 | 大于1,返回假;最后返回根节点左子树、右子树是否是平衡二叉树。 class Solution(object):def count(self,root

基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述        基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真。PI控制器是一种经典的线性控制器,它通过将控制量的比例部分和积分部分相结合来实现对系统输出的调节。比例部分用于快速响应偏差,而积分部分则用于消除稳态误差。 2.系统仿真结果 (完整程

什么是网络准入控制系统?网络准入控制系统七大品牌介绍!

在当今信息化时代,企业网络安全面临着前所未有的挑战。网络准入控制系统(NAC, Network Access Control)作为一种重要的网络安全技术,扮演着守护企业网络安全大门的关键角色。网络准入控制系统通过对接入网络的设备进行身份验证、安全状态评估和权限控制,以确保只有符合安全策略的设备才能访问网络资源。 1.Cisco ISE Cisco ISE是一款全面的NAC解决方案,旨在确保