# 2021电赛F题视觉分析+代码免费开源
> 最近好多小宝宝们要电赛题的源码,其他csdn营销号下载都需要会员或者钱,哥们先把视觉分析+代码开源,饿死营销号
视觉的一个任务是视觉上位机模块识别数字并进行滤波和判断处理,传指令给下位机;另一个任务是红线循迹。
不多bb,先上效果图:
K210数字识别效果:
![k210结果2](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/k210%E7%BB%93%E6%9E%9C2.png)
(我媛哥的手真好看)
openmv红线循迹效果:
![openmv结果1](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/openmv%E7%BB%93%E6%9E%9C1.png)
硬件工具:K210、openmv
软件工具:Maixpy IDE、OpenMV IDE
IDE可到官网下载:
https://www.sipeed.com/index.html
https://singtown.com/openmv/
![IDE](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/IDE.png)
## 1、K210数字识别、滤噪、判断
正常操作是上位机是识别,给下位机传数据,处理放到下位机;假如你有个坑比队友,处理还是放上位机干吧;
经过算法优化,现在几乎不存在掉帧。
### 1.1 功能难点及对应函数实现分析
1、在小车行驶过程中,会存在数字不能完全进入视野中情况等存在有很多帧误识情况,要进行滤波处理
2、每一帧要做处理的同时每个目标值的矩形框进行处理,每个目标值的矩形框还要进行滤波
3、在上位机上不断的优化算法,减少掉帧
4、在Maixpy IDE中python 的numpy、pandas巴拉巴拉包都调不了
5、图中最多出现四个,但这里设了读六个矩形框,留两个容错,不然有误识别的直接死机
6、给下位机传送指令:
一开始初始化识别传送对应的数字
若为12,则后面不在传送指令
若为34,则后面路口处传"l"or"r"
若为5678,则后面两个路口传送两次"l"or“r”
7、设计思路
通过初始化函数识别一开始给入的数字并保存下来;
根据识别的情况进入不同的程序;
12号病房,识别完了以后是不用在路上在识别的,直接关掉程序;
34号病房,初始化识别完了,加两秒延迟,避免在开始的时候连续识别传指令,要在路上识别一次,要保证返回来的时候不识别不然又给32传指令了,还要保证初始化识别完了以后不会紧接着识别误认为是路上的标签给32传指令;
5678也一样,但是路上得识别两次穿两次指令;
### 1.2 YOLOV5神经网络模型训练
训练集:
![数据集1](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E6%95%B0%E6%8D%AE%E9%9B%861.png)
测试集:
![数据集2](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E6%95%B0%E6%8D%AE%E9%9B%862.png)
训练输出结果:
![输出结果](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C.png)
将通过拍摄3403张赛道数字照片,使用labellmg进行标签标定,制作数据集,yolov5训练
详细过程可看下面文章:
https://blog.csdn.net/zhaohaobingniu/article/details/120397185?spm=1001.2014.3001.5502
https://blog.csdn.net/zhaohaobingniu/article/details/120255571?spm=1001.2014.3001.5502
注意:这里yolov5得到的是.pt文件,需要进行模型转换,转化成可以加载在K210板上的.kmodel模型(后面细讲)
### 1.3 K210操作步骤
#### 1.3.1 下载K210的IDE
https://www.sipeed.com/index.html
#### 1.3.2 烧入最新固件库
官方教程:
https://wiki.sipeed.com/soft/maixpy/zh/get_started/upgrade_maixpy_firmware.html
更新固件库:
![固件库](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E5%9B%BA%E4%BB%B6%E5%BA%93.png)
#### 1.3.3 将文件放入TF卡中
文件目录:
![文件目录](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95.png)
将上述文件全复制到tf卡中,tf卡插入k210
注意:tf卡先格式成FAT32格式,部分牌子的tf卡格式了也不能挂载到k210上,建议多换几张卡试试
#### 1.3.4 IED中查看效果
IDE中运行效果:
![ide效果图](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/ide%E6%95%88%E6%9E%9C%E5%9B%BE.png)
#### 1.3.5 通过串口调试助手测试指令通信
引脚9是TX,引脚10是RX,波特率为115200
通过usb转ttl连接到电脑上
初始识别数字为6,两次转向是向左
![串口发送数据图](https://github.com/zhaohaobingSUI/ZHB_project_diansai/blob/master/images/%E4%B8%B2%E5%8F%A3%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E5%9B%BE.png)
### 1.4 上代码含详细注释
第一版:
```python
import sensor,image,lcd,time
import KPU as kpu
from machine import UART
from fpioa_manager import fm
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)
sensor.run(1)
#加载yolov5模型
task = kpu.load("/sd/yolov5.kmodel")
f=open("anchors.txt","r")
anchor_txt=f.read()
L=[]
for i in anchor_txt.split(","):
L.append(float(i))
anchor=tuple(L)
f.close()
f=open("lable.txt","r")
lable_txt=f.read()
lable = lable_txt.split(",")
f.close()
#设置RX、RT引脚
fm.register(9, fm.fpioa.UART1_TX, force=True)
fm.register(10, fm.fpioa.UART1_RX, force=True)
#设置串口通信
uart_A = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
anchor = (0.1766, 0.1793, 0.4409, 0.3797, 0.6773, 0.5954, 1.0218, 0.9527, 2.158, 1.6841)
sensor.set_windowing((224, 224))
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
classes=["9","1","4","2","3","8","5","6","7" ]
#全局变量,保存初始化识别的数字
intnum = 0
#初始化识别函数
def begin(intnum):
TF = 1
#得分序列,放1-8识别的次数,每一帧识别成哪个,对应的位置加一,1-8哪个先到10即最终识别为哪个
List_score01 = [0]*8
while(TF):
img = sensor.snapshot()
#code是yolov5返回的每个矩形框的参数
#例图中出现两个目标区域的时候:[{"x":9, "y":99, "w":55, "h":82, "value":0.697979, "classid":8, "index":0, "objnum":2}, {"x":137, "y":105, "w":56, "h":67, "value":0.939132, "classid":4, "index":1, "objnum":2}]
code = kpu.run_yolo2(task, img)
#print(code)
if code:
for i in code:
#画目标区域矩形框
a = img.draw_rectangle(i.rect())
a = lcd. display(img)
list1=list(i.rect())
#print(classes[i.classid()])
#识别到的加1
List_score01[int(classes[i.classid()])-1] += 1
#print(List_score01)
if(List_score01[0] >= 10):
intnum = 1
#给下位机通信传指令
uart_A.write('1')
#print(1)
#退出初始化循环
TF = 0
if(List_score01[1] >= 10):
intnum = 2
uart_A.write('2')
#print(2)
TF = 0
if(List_score01[2] >= 10):
intnum = 3
uart_A.write('3')
#print(3)
TF = 0
if(List_score01[3] >= 10):
intnum = 4
uart_A.write('4')
#print(4)
TF = 0
if(List_score01[4] >= 10):
intnum = 5
uart_A.write('5')
#print(5)
TF = 0
if(List_score01[5] >= 10):
intnum = 6
uart_A.write('6')
#print(6)
TF = 0
if(List_score01[6] >
没有合适的资源?快使用搜索试试~ 我知道了~
2021年全国大学生电子设计竞赛F题——送药小车.zip
共121个文件
h:45个
c:42个
png:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 31 浏览量
2024-06-23
16:15:19
上传
评论
收藏 6.66MB ZIP 举报
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
2021年全国大学生电子设计竞赛F题——送药小车.zip (121个子文件)
keilkilll.bat 372B
maixpy_v0.5.1_106_g6d66d6e_minimum_with_ide_support.bin 692KB
stm32f10x_tim.c 104KB
stm32f10x_flash.c 59KB
stm32f10x_rcc.c 49KB
stm32f10x_adc.c 45KB
stm32f10x_i2c.c 43KB
stm32f10x_can.c 43KB
stm32f10x_usart.c 36KB
system_stm32f10x.c 35KB
stm32f10x_fsmc.c 34KB
stm32f10x_spi.c 29KB
stm32f10x_dma.c 28KB
stm32f10x_sdio.c 27KB
stm32f10x_gpio.c 22KB
stm32f10x_dac.c 18KB
core_cm3.c 16KB
stm32f10x_cec.c 11KB
LoAl.c 8KB
stm32f10x_pwr.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_bkp.c 8KB
delay.c 7KB
oled.c 7KB
misc.c 7KB
stm32f10x_exti.c 7KB
l298n.c 5KB
golo.c 5KB
stm32f10x_wwdg.c 5KB
main.c 5KB
stm32f10x_dbgmcu.c 5KB
usart.c 5KB
stm32f10x_iwdg.c 5KB
zjjm.c 5KB
stm32f10x_crc.c 3KB
stm32f10x_it.c 2KB
usart3.c 2KB
s307.c 2KB
timer.c 2KB
s305.c 1KB
led.c 1KB
sys.c 839B
beep.c 819B
Infrared.c 654B
USART_STM32F103ZE_1.0.0.dbgconf 2KB
USART_STM32F103C8_1.0.0.dbgconf 2KB
stm32f10x.h 611KB
core_cm3.h 82KB
stm32f10x_tim.h 50KB
stm32f10x_rcc.h 29KB
stm32f10x_i2c.h 29KB
stm32f10x_can.h 26KB
stm32f10x_fsmc.h 26KB
stm32f10x_flash.h 24KB
stm32f10x_sdio.h 21KB
stm32f10x_adc.h 21KB
stm32f10x_dma.h 20KB
stm32f10x_gpio.h 19KB
stm32f10x_spi.h 17KB
stm32f10x_usart.h 16KB
stm32f10x_dac.h 15KB
oledfont.h 13KB
misc.h 9KB
stm32f10x_bkp.h 7KB
stm32f10x_exti.h 6KB
stm32f10x_cec.h 6KB
bmp.h 5KB
stm32f10x_pwr.h 4KB
stm32f10x_rtc.h 4KB
stm32f10x_dbgmcu.h 4KB
stm32f10x_iwdg.h 4KB
stm32f10x_conf.h 3KB
sys.h 3KB
stm32f10x_wwdg.h 3KB
stm32f10x_crc.h 2KB
system_stm32f10x.h 2KB
stm32f10x_it.h 2KB
delay.h 2KB
oled.h 2KB
usart.h 1KB
s305.h 590B
s307.h 590B
led.h 586B
Infrared.h 579B
timer.h 577B
LoAl.h 422B
l298n.h 421B
beep.h 412B
zjjm.h 170B
usart3.h 167B
golo.h 140B
USART.hex 70KB
JLinkSettings.ini 636B
yolov5.kmodel 1.84MB
README.md 17KB
k210结果2.png 2.08MB
数据集2.png 932KB
数据集1.png 862KB
输出结果.png 203KB
ide效果图.png 165KB
共 121 条
- 1
- 2
资源评论
毕业小助手
- 粉丝: 2739
- 资源: 5597
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Vue和HTML的JsPang快餐管理Demo设计源码学习指南
- 基于Vue和卖座电影网的仿站电影票网站设计源码
- 基于Objective-C的WeChatTweak-macOS微信防撤回设计源码
- 基于树莓派的Python语音识别机器人设计源码
- 2024 北森图形推理题(带解析136页).pdf
- 基于微信小程序的浴室预约功能设计源码
- 基于uniapp的短视频电商小程序/APP/服务端全栈解决方案设计源码
- 基于Vue框架的Scriptis数据分析Web工具设计源码
- 基于Vue和JavaScript的HTML花店网站设计源码
- 基于Java、Vue的仿饿了么外卖平台手机端+后台管理+API服务设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功