2021电赛国一智能送药小车(F题)设计报告

news2024/9/29 1:23:27

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. 采集具有丰富特征的数据集,并进行数据增强来增加数据量,从而实现准确有效的图像检测。
  3. 快速识别数字,在小车不停止的情况下完成数字的识别。

1.2 在主控与机械结构方面主要通过调整结构实现以下目标:

  1. 通过调整灰阶模块与电机实现小车的直线行走、拐弯、回转。
  2. 实现小车在 20 秒内完成送药任务。
  3. 小车运行过程稳定,不触碰边缘线。

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] 单片机实用系统设计与仿真经典实例,电子工业出版社,周润景 刘晓霞著# 系列文章目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPS中的表格错乱少行

用Office word编辑的文档里面包含表格是正常的,但用WPS打开里面的表格就是错乱的,比如表格位置不对,或者是表格的前几行无法显示、丢失了。 有一种可能的原因是: 表格属性里面的文字环绕选成了“环绕”而非“无”,改…

周易卦爻解读笔记——既济

第六十三卦既济 水火既济 坎上离下 既济卦由泰卦所变,泰卦六五与九二换位,象征已经完成。 地天泰 序卦传【有过物者必济,故受之以既济】 既,已经。《谷梁传》云:“既者,尽也。有继之辞也。”济者&#…

DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的应用

第一讲 DNDC模型介绍 ①碳循环模型简介 ②DNDC模型原理 ③DNDC下载与安装 ④DNDC注意事项 第二讲 DNDC初步操作 ①DNDC界面介绍 ②DNDC数据及格式 ③DNDC点尺度模拟 ④DNDC区域尺度模拟 ⑤DNDC结果查看 第三讲 遥感和GIS基础 ①DNDC中的遥感和GIS技术 ②ArcGIS软件界面 ③坐…

【开发笔记】ubuntu部署指定版本的前后端运行环境(npm nodejs mysql)

目录 1 背景2 环境要求3 部署流程3.1 npm的安装3.2 nodejs的安装3.3 MySQL的安装 4 可能的问题 1 背景 在远程服务器上的Ubuntu系统中,部署指定版本的前后端项目的运行环境 2 环境要求 npm 9.5.1Nodejs v18.16.1MySQL 8.0.33 3 部署流程 3.1 npm的安装 通过安…

docker导出、导入镜像、提交

导出镜像到本地,然后可以通过压缩包的方式传输。 导出:docker image save 镜像名:版本号 > /home/quxiao/javatest.tgz 导入:docker image load -i /home/quxiao/javatest.tgz 删除镜像就得先删除容器,当你每运行一次镜像&…

【三】关系模型 -- 基本概念

基本概念关系模型概述关系模型的提出关系模型研究什么关系模型的三要素 什么是关系概念引入1. 域2. 笛卡尔积3. 关系 关系模式 VS 关系关系的特性1. 列是同质2. R(A:D) 中,A 不可相同,D 可相同3. 行、列位置互换性4. 属性不可再分(关系第一范…

用yolov4-tiny检测在电力输电线20种鸟类,灵活运用训练trick,实验较为完备,数据处理丰富度值得参考

Detection of bird species related to transmission line faults based on lightweight convolutional neural network Abstract 输电线路高效防鸟害是电网运行维护面临的长期挑战。本文提出了一种将轻量级卷积神经网络(CNN)、图像处理和目标检测相结合的方法来检测与输电线路…

基于GPT-4和LangChain构建云端定制化PDF知识库AI聊天机器人

参考: GitHub - mayooear/gpt4-pdf-chatbot-langchain: GPT4 & LangChain Chatbot for large PDF docs 1.摘要: 使用新的GPT-4 api为多个大型PDF文件构建chatGPT聊天机器人。 使用的技术栈包括LangChain, Pinecone, Typescript, Openai和Next.js…

Day12-2-面向对象编程

Day12-面向对象编程 一 回顾 变量,数组,对象都是容器,都可以用来存储数据 let n = 10 let arr = [3,5,7] let stu = {name:"张恒",age:18,sex:"女"}二 面向对象思想 面向过程:将开发的步骤按照顺序一步一步往下执行,直到程序结束 面向对象:将项目中…

第2步---MySQL卸载和图形化工具展示

第2步---MySQL卸载和图形化工具展示 1.MySQL的卸载 2.MySQL的图形化工具 2.1常见的图形化工具 SQLyog:简单。SQLyog首页、文档和下载 - MySQL 客户端工具 - OSCHINA - 中文开源技术交流社区 Mysql Workbench :MySQL :: MySQL Workbench DataGrip&…

百度吴甜重磅发布文心一言面向开发者的三大举措,激活生态创新

近日,第九届WAVE SUMMIT深度学习开发者大会在京举办。百度集团副总裁、深度学习技术及应用国家工程研究中心副主任吴甜分享了百度自研大语言模型“文心一言”的最新进展,重磅发布5个原生插件,面向开发者正式推出AI Studio星河大模型社区、插件…

如何限制PDF打印?限制清晰度?

想要限制PDF文件的打印功能,想要限制PDF文件打印清晰度,都可以通过设置限制编辑来达到目的。 打开PDF编辑器,找到设置限制编辑的界面,切换到加密状态,然后我们就看到 有印刷许可。勾选【权限密码】输入一个PDF密码&am…

【Python从入门到进阶】32、bs4的基本使用

接上篇《31、使用JsonPath解析淘票票网站地区接口数据》 上一篇我们介绍了如何使用JSONPath来解析淘票票网站的地区接口数据,本篇我们来学习BeautifulSoup的基本概念,以及bs4的基本使用。 一、BeautifulSoup简介 1、bs4基本概念 BeautifulSoup是一个P…

ssm网络游戏公司官方平台源码和文档

ssm网络游戏公司官方平台源码和文档029 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它…

git协议实现管理(三个步骤)

GitHub官网访问: https://github.com/dashboard 初次使用git的用户要使用git协议大概需要三个步骤: 一、生成密钥对 二、设置远程仓库(本文以github为例)上的公钥 三、把git的remote url远程仓库URL可访问路径修改为git协议(以上两个步骤初次设置过以后&#xff0c…

react 11之 router6路由 (两种路由模式、两种路由跳转、两种传参与接收参数、嵌套路由,layout组件、路由懒加载)

目录 react路由1:安装和两种模式react路由2:两种路由跳转 ( 命令式与编程式)2-1 路由跳转-命令式2-2 路由跳转-编程式 - 函数组件2-2-1 app.jsx2-2-2 page / Home.jsx2-2-3 page / About.jsx2-2-4 效果 react路由3:函数…

OpenCL实现SobelFilter(行列分解)

1.行列分解数学原理 row_filter[1 0 -1], col_filter[1 2 1] row_filter[1 2 1], col_filter[1 0 -1] 2.非局部内存实现 __kernel void sobel_filter_separable(__global uchar* padSrc, __global uchar* dst, int height, int width, int pad_width) {__local short local_ou…

【机器学习 | 分类指标大全】全面解析分类评估指标:从准确率到AUC,多分类问题也不在话下, 确定不来看看?

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

上传镜像到阿里云的ACR

1、开通阿里云ACR 2、在ACR 中创建命名空间 3、本地安装docker 4、登录到 开通ACR,需要配置访问凭证 [rootmaster ~]# docker login --username***lb registry.cn-beijing.aliyuncs.com Password: 5、给镜像打标签 [rootmaster ~]# docker images REPOSITORY …

❤ Vue工作常用的一些动态数据和方法处理

❤ Vue工作常用的一些动态数据和方法处理 &#xff08;1&#xff09;动态拼接相对路径结尾的svg 错误写法一 ❌ 正确写法 &#x1f646; <img :src"require(/assets//amazon/svg/homemenu${index}.svg)" style"height: 20px;display: block;margin: 0 au…