南昌网站建设制作与维护/2021最火营销方案
2021电赛国一智能送药小车(F题)设计报告
【写在前面的话】
电赛是一个很奇妙的过程,可能有些人觉得电赛的门槛太高,那便意味着,当你决定要参加电赛的那一刻起,这一段路、这些日子就注定不会太轻松;
我现在回头看真的很感谢电赛,从前期备赛面对自己未曾涉猎的技术不知如何下手的迷茫与怀疑,再到后来四天三夜紧张到不忍睡觉的未知与紧迫,和那挑战着自己脑力与体力的极限的执着,到比赛结束封箱那一刻全部都释然了;
你会学到很多很多,你会看见自己的进步,从一个小白,到打开了一扇大门,慢慢的成长;随之而来的不仅是能力,是一份底气,带来更多的是对自己的相信,那种已经不惧怕一切挑战的信心与勇气。
它就像一个跳板,让你跳到更高。
·【电赛宝藏链接】参加电赛的宝们必看
【电赛宝藏链接】
四天三夜,那布满着未知与紧迫感的气息让荷尔蒙无比兴奋,挑战着脑力与体力的极限!
2021全国大学生电子设计竞赛F题参赛简记
2021年小车题完整代码及教程!
2021电赛F题视觉教程+代码免费开源
参加电赛必看的经验贴!
全国电子设计竞赛指导 (老学长挥泪经验之谈)
【电赛最全备赛资源】电赛历年赛题源码+老学长挥泪经验之谈(文章较长全网最全)+电赛论文写作模板及评分标准
电赛最全备赛资源
文章目录
- 2021电赛国一智能送药小车(F题)设计报告
- `【写在前面的话】`
- ·【电赛宝藏链接】参加电赛的宝们必看
- `【电赛宝藏链接】`
- 摘要
- 一. 系统方案设计
- 1 预期实现目标定位
- 1.1 在视觉识别方面通过合理的模型实现以下目标:
- 1.2 在主控与机械结构方面主要通过调整结构实现以下目标:
- 2 方案论证与选择
- 2.1 图像处理系统设计方案论证与选择
- 2.2 机械机构系统设计方案论证与选择
- 二. 设计实现
- 1 视觉模块
- 1.1 基于 OpenMV 的多模板匹配
- 1.2 基于树莓派的 YOLOv5 移植模型图像检测
- 1.3 基于 K210 的模型移植图像检测
- 2 电控模块
- 2.1 电机控制
- 2,2 药物检测
- 2.3 视觉识别
- 2.4 红外循迹
- 三. 测试
- 四. 结论
- 五. 参考资料及文献
摘要
本智能送药小车系统采用 STM32F103ZET6 作为主控,勘智 K210 作为视觉系统主要元件来实现对摄像头中出现的多组数字进行识别,通过 5 路灰度传感器来实现循迹。STM32 通过串口通信获取 K210 的识别信息,来获取目的地与两侧地址信息。通过 5 路灰度模块识别灰度变化来实现小车的正常运行与转弯,以实现小车的自动寻径。通过数量丰富的训练集来训练模型,使得数字分辨精度与分辨速度达到最佳的平衡。
提示:以下是本篇文章正文内容
一. 系统方案设计
1 预期实现目标定位
1.1 在视觉识别方面通过合理的模型实现以下目标:
- 识别过程在视觉模块完成,并对主控进行通信发送转向信息。
- 采集具有丰富特征的数据集,并进行数据增强来增加数据量,从而实现准确有效的图像检测。
- 快速识别数字,在小车不停止的情况下完成数字的识别。
1.2 在主控与机械结构方面主要通过调整结构实现以下目标:
- 通过调整灰阶模块与电机实现小车的直线行走、拐弯、回转。
- 实现小车在 20 秒内完成送药任务。
- 小车运行过程稳定,不触碰边缘线。
2 方案论证与选择
2.1 图像处理系统设计方案论证与选择
方案一:基于 OpenMV 的多模板匹配方式。
方案二:基于树莓派 4B 的 YOLOv5 图像检测移植。
方案三:基于 K210 的硬件加速神经网络的图像识别方案。
应用 OpenMV 方法的优点是参数易于调整,模板易于获得与初步处理。缺点是模板易受复杂环境与倾角干扰,其基础镜头视角窄,神经网络处理能力差。
树莓派 4B 有较高的处理器主频以及较大的内存,YOLOv5 图像检测方案成熟,速度快且精度高。但是要将两者结合的话,模型部署难度相对较大,需要配置环境较为复杂,且模型从 PC 端移植到树莓派系统的需要考虑两系统间存在较大的性能损失。
K210 能在较高帧率下进行图像识别。该方案应用深度学习方法需要一定数量的数据集来对模型进行反复训练与测试。然而,网上现存的数据集很难实现,因此需要人为的制造一些富有特征的数据并对其进行数据增强与打标签。此外,该方案需要对模型具有较高的内存空间要求,因此需求注意模型的压缩问题。
综上,考虑到环境情况、图像识别精度与帧率的平衡,我们选择使用第三种方案。
2.2 机械机构系统设计方案论证与选择
方案一:四电机双驱动、镜头平置方案。
方案二:双电机单驱动两万向轮、镜头平置方案。
方案三:双电机单驱动两万向轮、镜头倾斜方案。
方案一可以为电机提供充足的动力与畸变较小的画面,但是其同样会造成较大的供电压力与轮组之间存在空程差导致的误差增大。此外,镜头平置虽然可以增加数字识别精度,但同样会减少视野范围。方案二的供电压力较小,但同样存在上述问题。方案三可以改变倾斜角度来获取更大视野范围,但数字会发生不同程度的畸变。根据上述分析,我们选择方案三。
2.3 循迹方式论证与选择
方案一:应用视觉模块识别中心红线与赛道以实现循迹
方案二:应用前后 5 路灰度识别模块识别中心红线来实现循迹
方案一的集成度更高,可以减少系统的复杂性,提高系统的结构稳定性。但是其需求对红线进行识别,需求更多数据集,且需要做更多数据增强。同时,由于机器学习对形状的敏感程度更高。因此容易把边框识别成中心线。
方案二应用额外模块——五路灰度传感器来实现红线位置的检测,通过灰度变化来进行循迹,前后均放置一个 5 路灰度识别模块以保障有效直线运行,该方案复杂性低且更易于实现。
根据上述分析,我们选择方案二。
2.4 主控系统设计方案论证与选择
方案一:采用传统的 STC89C51 系列单片机;
方案二:采用 STM32F103C8T6 单片机;
方案三:采用 STM32F103ZET6 单片机;
传统 STC89C51 主频较低,且中断较少。STM32F103C8T6 主频高,具有更加结构化的,端口较多但是端口复用较为复杂。STM32F103ZET6 则在此基础上简化了复用且端口更多。
因此,选用方案三。
3 系统结构分析
该系统的简化原理框图如图 1 所示,系统的控制部分基本可以由:
光电模块、视觉模块、主控、循迹模块构成。其运行原理可以描述如下:
当光电模块获取输入,表示当前有药物放入,视觉模块 K210 获取初始化数字信息,通过串口与 STM32 进行通信,STM 在中断中调用 OLED 显示,在OLED 上显示当前初始化数字信息(需要前往的病房)。
随后,前后循迹模块获取 5 位输入信息,该信息用于识别当前红线位于车体的相对位置,并通过端口直接输入 STM32 进行判断,若非 5 位灰度传感器的中心有信号,则可以判断当前车体非正向,若处于直行路段则左右轮差速控制车体偏向,使得红线位于中心位置。
此外,当车体需要转向时,则在由视觉模块识别获得转向方向的基础上,当识别到 5 位全有输入时(横向红线),则控制小车转向,并将转向方向入栈。当视觉模块识别到虚线时,则停止运行,等待光电传感器失去信号,则判断药物被取出,因此开始返航操作。返航时遇到十字与丁字路口时,出栈转向方向,则可以实现原路返航。
二. 设计实现
1 视觉模块
我们测试了三个可行的视觉方案,并进行了对应的电脑模拟环境测试与实际环境测试。
1.1 基于 OpenMV 的多模板匹配
该方案主要应用了 NCC 算法,其表达式如(2-1)所示
此外,当我们增大各角度模板数量时,虽然单数字识别精度发生一定程度上的提升,但是可以显而易见地观察到识别帧率发生大幅下降。因此该方案弃用。
1.2 基于树莓派的 YOLOv5 移植模型图像检测
Yolo 算法采用一个单独的 CNN 模型实现 end-to-end 的目标检测,比 R-CNN算法,其是一个统一的框架,速度更快。
Yolo 的 CNN 网络将输入的图片分割成 s*s 网格,每个单元格会预测 B 个边界框以及边界框的置信度,以及给出预测出的 C 个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。Yolo 采用卷积网络来提取特征,然后使用全连接层来得到预测值,采用的均方差作为损失函数,adam方法进行梯度下降,此外为防止一个目标被多次检测的问题,采用 NMS 算法输出多预测框中其中最好的预测框。
我们模拟赛道环境,进行数据采集:小车移动时,车头摄像头进行录像,将各数字可能出现的位置进行多次多角度捕捉,将录有完整数字的视频片段逐帧提取获取数据源,进行人工标记,并且对获得数据集进行数据增强。采用 10 折 10次交叉验证拆分测试集和验证集,基于 SDK 开发,部署 yolo 模型,并使用 nncase进行模型转换。现场测试,识别准确率大致为 75%。但实际模型部署于树莓派时,其算力有限,出现严重降帧的情况,难以满足题目的限时要求。
1.3 基于 K210 的模型移植图像检测
该方案仍采用 YOLO 算法进行图像检测,但使用了具有特殊图像处理加速硬件的 K210。我们通过 MixHub 进行模型的训练,相较于前一次训练,本次训练的原始数据集扩充至每个数字 1000 张,我们对其进行了数据增强以及标记后进行模型训练。将其移植到 K210 后进行现场测试,发现其准确率可以达到 85%以上。因此我们应用该视觉方案。
2 电控模块
2.1 电机控制
通过设置定时器来使端口产生 PWM 控制电机驱动,并通过控制差速来控制转向以及方位修正。通过不断调整参数以及测试使得系统可以快速而直接完成上述操作。测速方面使用霍尔解码器,通过读取单位时间脉冲信号的数量,可以达到测速的效果,通过对脉冲信号的累加和编码器的码盘的周长(转一圈对应距离)便可以达到计算行走距离的效果。
2,2 药物检测
设定一个固定的区域,在区域的两边放置两个红外对管,通过中断函数来定时检测返回值来实现检测指定区域是否有物品放置。
2.3 视觉识别
通过与 K210 视觉模块进行串口通信,获取出现在镜头视野里的数字、是否要转向以及向哪个方向转向。
2.4 红外循迹
通过获取前后 5 路红外循迹模块的输出值,计算两路信号与中心偏差值,从而产生差分信号来对两电机进行驱动。当红外循迹模块遇到十字路口且视觉模块返回需要转向时,能出现多个输出(并不一定全部输出),因此判断需要转向。
三. 测试
测试方法:
3. 初步测试时在 PC 端运行模型,对摆放在桌面上以及赛道上的数字进行稳定定高测试。
4. 测量小车的长宽高。
5. 其后将 K210 装在等高空车上,并进行车载测试,慢速稳定直线运行,观察准确度。
6. 通过蓝牙模块向小车发送信号,测试小车运动的直线性以及转向角度
7. 模拟真实比赛场地,依次进行近端、中端、远端的测试。实验仪器:智能小车、计时器、200g 模拟药物、比赛用场地、打印体数字
四. 结论
经测试,小车完全满足竞赛要求,基本可以实现题目的主要要求。
五. 参考资料及文献
[1] 谭浩强. C 语言程序设计[M]. 北京:清华大学出版社,2012
[2] 算法竞赛入门经典. 清华大学出版社
[3] 数据结构. 清华大学出版社
[4] 单片机实用系统设计与仿真经典实例,电子工业出版社,周润景 刘晓霞著# 系列文章目录
相关文章:

2021电赛国一智能送药小车(F题)设计报告
2021电赛国一智能送药小车(F题)设计报告 【写在前面的话】 电赛是一个很奇妙的过程,可能有些人觉得电赛的门槛太高,那便意味着,当你决定要参加电赛的那一刻起,这一段路、这些日子就注定不会太轻松…...

刚工作3天就被裁了....
前言 还有谁?刚上三天班就被公司公司的工作不适合我,叫我先提升一下。 后面我也向公司那边讨要了一个说法,我只能说他们那边的说辞让我有些不服气。 现在之所以把这件事上记录一下,一是记录一下自己的成长轨迹,二是…...

docker安装elasticsearch与head教程完整版—.NET Core Web Api与elasticsearch打造全站全文搜索引擎
默认已经有docker环境 下载与安装 elasticsearch ,从hub.docker里面可以看到最新版本的镜像,选择你想要的版本 本教程是以 7.17.7 为案例,为啥不适用最新的,首先个人一般需用最新的版本,如果有亢很难填,其次…...

蓝桥冲刺31天之315
没有一个冬天不可逾越 也没有一个春天不会来临 所有美好的食物,都会有一个等待的过程 低谷时蛰伏,静默时沉淀 做三四月的事,在八九月自有答案 目录 A:0的个数 题目描述: 输入格式 输出格式 样例输入 样例输出 评测用例规模与…...

常见排序算法
/懂了和写出来是两码事啊啊......orz./ Talk is cheap, show me the code 一、快速排序 直接背模板就能过: 当xq[lr>>1]的边界情况 此时x取的是序列中间靠左的位置(如果序列个数为奇,则取正中间,如果为偶,则取中间靠左),此时如果元素个数为2, 则中间靠左就…...

C语言实现学生成绩管理系统思考
学生成绩管理系统思考 作业要求: 目录 思路 基本函数 学习理解大佬的代码: 完成作业: 思路 学生成绩管理系统,首先要初始化系统, 用C语言做学生实验管理系统要求实现对某班学生3门课程(包括语文、数…...

C++11中Lambda新特性
1.定义 lambda匿名函数的语法格式: [外部变量访问方式说明符](参数)mutablenoexcept/throw()->返回值类型 {函数体; };其中各部分的含义分别为: a.[外部变量方位方式说明符] []方括号用于向编译器表明当前是一个lambda表达式,其不能被省略…...

【jvm系列-01】初识虚拟机与java虚拟机
初识虚拟机与java虚拟机一,虚拟机与java虚拟机1,虚拟机2,java虚拟机3,jvm整体结构图4,jvm的架构模型5,jvm的生命周期6,jvm的种类划分6.1,Sun Classic Vm6.2,Exact VM6.3&…...

「Python 基础」数据库应用编程
Python 定义了一套 DB-API,任何数据库要连接到 Python,只需要提供符合 Python 标准的数据库驱动即可; 文章目录1. 连接 SQLite1. 建表、插入数据2. 查询数据2. 连接 MySQL1. 安装驱动2. 演示连接3. SQLAlchemy1. 安装2. DBSession3. add4. qu…...

一个nginx的小项目,不写代码,实现在局域网内访问其他电脑的网页
准备工作 下载nginx //官网 https://nginx.org/en/download.html //直接下载 https://nginx.org/download/nginx-1.23.3.zip解压 下载一个html项目,或者自己随便写一个 我是直接下载的,然后使用的是第一个01 https://gitee.com/StarPort/HTML_CSSTe…...

23.3.14打卡 2022年江西省大学生程序设计竞赛(正式赛)ABL
就写了签到, 其他题没写, 这场好像3题就银了 纪念一下3.14原粥率日 比赛链接:https://ac.nowcoder.com/acm/contest/43898 A题 Special Adjustment Method 题意 给出非负整数x, y, z 你可以让其中两个数字-1, 另外一个2, 使得x2y2z2x^2y^{2}z^{2}x2y2z2最大 题解 这题很容…...

用idea操作hbase数据库,并映射到hive
依赖条件:需要有Hadoop,hive,zookeeper,hbase环境映射:每一个在 Hive 表中的域都存在于 HBase 中,而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对…...

手机解锁方法:8个顶级的 Android 手机解锁软件
一般来说,太简单的密码是不安全的,所以我们设置一个安全的密码,可能会稍微复杂一点。然而,我们可能经常会忘记复杂的密码并锁定我们的 Android 智能手机。 8个顶级的 Android 手机解锁软件 如果您遇到过这种情况并且正在寻找一种…...

JVS快速开发平台2.1.7版本,列表页配置新增特性介绍
JVS 在3月份更新了2.1.7版本,本次更新涉及到很多方面,其中包括逻辑引擎、流程引擎、列表引擎、数据处理引擎、图表配置加工等。这里我们先介绍下列表页配置引擎扩展的相关内容,我们先来看看最后配置的列表页配置的效果1、列表页展示方面&…...

【华为机试真题详解 Python实现】去除多余空格【2023 Q1 | 100分】
文章目录 前言题目描述输入描述输出描述示例 1解题思路参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能…...

【SpringBoot项目实战+思维导图】瑞吉外卖⑤(新增套餐、套餐分页查询、删除套餐、短信发送、手机验证码登录)
文章目录新增套餐需求分析数据模型准备工作前端页面分析代码开发根据分类查询菜品功能实现功能测试保存套餐功能实现功能测试思维导图总结套餐分页查询需求分析前端页面分析代码开发基本信息查询问题分析功能完善功能测试思维导图总结删除套餐需求分析前端页面分析代码开发功能…...

OpenAI 发布GPT-4——全网抢先体验
OpenAI 发布GPT-4 最近 OpenAI 犹如开挂一般,上周才刚刚推出GPT-3.5-Turbo API,今天凌晨再次祭出GPT-4这个目前最先进的多模态预训练大模型。与上一代GPT3.5相比,GPT-4最大的飞跃是增加了识图能力,并且回答准确性也得到显著提高。…...

C++——多态
多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别:静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确…...

javaSE系列之类与对象
javaSE系列之类与方法什么是类类的定义书写事项什么是实例化this引用this的注意事项对象的初始化构造方法封装的概念访问限定符封装扩展之包static成员static的特性static的初始化代码块注意事项内部类1.实例内部类💗 💗 博客:小怡同学💗 &am…...

远程构建(命令、脚本构建)jenkins
在对应项目,开启远程构建开关添加API token系统设置调整用户权限获取crumbcurl调用构建 1、进入对应项目的设置页面:开启远程构建开关 2、 添加 API token:进入对应用户的设置页面 3、系统设置调整权限,如图 4、由于jenkins的安全…...

2023-03-15 ElasticSearch
ElasticSearch 1.Docker安装ElasticSearch 1.1. es及kibana下载 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2创建映射文件: mkdir -p /elasticsearch/configmkdir -p /elasticsearch/datamkdir -p /elasticsearch/plugins在config下执行 vim elasticsearch…...

指针和数组笔试题解析【下篇】
文章目录👁️6.指针笔试题👀6.1.试题(1)👀6.2.试题(2)👀6.3.试题(3)👀6.4.试题(4)👀6.5.试题(5&am…...

DHCP原理简析及交互实践
环境: os:centos7 dnsmasq:version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念: 1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用…...

用二极管、三极管和MOS管搭建逻辑门电路
文章目录1. 二极管(1)二极管与门(2)二极管或门2. 三极管(1)三极管非门(2)三极管与门(3)三极管或门(4)三极管与非门(5&…...

SpringBoot:手写一个 SpringBoot Starter
声明:原文作者:yuan_404 文章目录1. 说明2 . 编写启动器3 . 新建项目测试自己写的启动器1. 说明 启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库 命名归约: 官方命名&…...

【23】Verilog进阶 - 数位转换【实时处理 + 标志信号】
【初次尝试】VL32 非整数倍数据位宽转换24to128 1 理解题目含义 根据【模块端口】和【题目描述】本题的真实意思是比较清楚啦。但不可大意轻敌! (1)问题1:输出一直为0 猛然间发现计数值也为0,没有增加 去排查cnt的代码,很容易找到到问题,是cnt上电复位的逻辑写错了 …...

常见的HTTP状态码
一.2开头 200:响应成功; 204:响应成功,但是响应头没有数据; 206:部分响应成功,比如分片上传,断点续传; 二.3开头 301:永久重定向; 302&…...

D. Peculiar Movie Preferences(思维 + 一个坑)
Problem - D - Codeforces 米海打算去看电影。他只喜欢回文电影,所以他想跳过一些(可能是零)场景,让电影的其余部分变成回文。给你一个包含n个长度不超过3的非空字符串的列表,代表Mihai的电影场景。如果s的子序列非空,并且子序列中…...

真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...

蓝桥刷题总结1
数组三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个…...