2.0 正式开始整理一下工训赛(全国大学生工程实践和创新能力大赛),智能垃圾桶的制作流程和参赛历程

2023-11-17

一点小说明(遗憾+致歉)

首先,十分遗憾,由于第一年参赛,尤其是这个赛项,我们当时做的时候网上也完全找不到参考资料,所以最开始一抹黑,硬着头皮从头开始做。最后初赛全省第一、决赛全省第二、国赛选拔赛全省第三,赛制挺迷的,省奖只看决赛成绩,进国赛又只看选拔赛成绩。而整个比赛要求最高最难的反而是初赛的要求。捶胸顿足,遗憾至极。同时由于我们比赛比较早,不知道当时是否能进入决赛,所以我们去年比完就开始了国赛的准备,更新了控制板,更新了识别算法,更新了垃圾分类当时,引入了机械臂,加入了云台,如果省赛这配置,国赛稳稳的,而且我觉得这一版参加今年的国赛,肯定是稳稳的。 正好这个日期也特殊,明天就是全国总决赛了,不过疫情原因是每个省同时组织,期待明天的大家的表现,希望我们学校其它赛道的队伍能够勇夺金奖(大赛改名升级了,再次捶胸顿足,没进国赛的遗憾)!!!
其次,大家也看到这个专题的第一篇文章已经写了大半年了,其实这个专题我早应该总结了。但是由于其它比赛和学业,加上找工作等等一些事宜一拖再拖。所以当时学习开发时遇到的一些坑都忘记,我尽力想起来帮大家填一些坑。一是给自己一个交代,二是和大家一起交流进步,或者是看着曾经自己写的那些代码我会不会自己笑起来(狗头!)。

智能垃圾桶演变(伪智能——>有点智能——>(希望你们能做的更加智能))

(1)最开始的想法是参加互联网+,然后临时想出来的一个方向。当时考虑着做什么图像识别太难了,可能我们做不出来,然后就说用语音识别做,巴拉巴拉。最后靠编,竟然互联网+还混了个省铜(真不建议这个选题去参加互联网+这种比赛,因为垃圾分类做的人多,而且这玩意太局限,很多技术都那一实现,加上现阶段的垃圾分类大环境也不太好,所以很多老师也不看好,所以有天花板,走不远);
(2)后来机缘巧合工训赛有这个赛道,加上遇到了一位十分负责和积极提供支持的指导老师,才得以这个作品最终有个雏形出来;
(3)最开始考虑的使用openmv,或者opencv在树莓派上做图像识别。 这个方案现阶段真不建议尝试,说实话,效果很不好。先不说准确率了,光是识别帧率就低到离谱。 所以当时也很巧合,发现一款很不错,上手很简单的开发板。就是Sipeed科技推出的几款k210芯片的开发板,第一眼看到,真是精致,再了解它的功能,简直强大,再看它的价格,wc,好划算(虽然这一年涨价了,还涨了不少)。尤其是这么小巧的一个板子,跑图像识别真是强,还很流畅,为什么呢?自己去看吧。

maixpy的WIKI文档
dfrobot的有关maixpy的论坛
Sipeed自己的官方论坛
Spieed的github工程

还有交流群,官方网站,等等其它资料和网站,WIKI里都有提及,也可以进群交流。
这些地方我差不多一年半没进去看过了,刚刚进去大概浏览了一下,焕然一新! 其实看历程介绍,大家也可以看到这个板子很新,2018年出来的,我是在2020年入坑的,当时真的就是资料匮乏,解决问题的唯一途径就是群里直接问,我反正当时问了不少问题,当时的一群也才千来人。至于官方论坛,不超过50条记录,唯一可以看的也就10来条,剩下都是无人解答状态。至于WIKI文档,只有一个大概,很多信息只有标题没有内容,从当时到现在,这个文档的界面经历三四次大变,内容基本完善,所有的论坛都有非常非常多的提问和解答。CSDN,B站一下子涌出了大量资源。开发和学习环境有了很大的改进;
其实不止maixpy哈,其实大家TB可以搜一下K210,也有很多其它公司在做开发板,他们有的就做的很完善,有更多的引脚和板载资源,更适合学习。我不知道现在怎么样哈,当时用它的时候基本过几周就要出新固件,然后重新烧,遇到很多配置问题可能还需要改配置代码,很头疼,但是也很有趣,看到底层的东西。
(4)所以由此诞生了我们第二代,使用maixpy作为识别的主控,但是,使用的时候我们发现。maixpy太精致了,所以硬件资源很不够,当时我使用了播放视频+图像识别两个功能,但是经常出现out of memory,看了很多示例程序,也询问了群里的大佬,通过不断地释放资源的方式也没解决这个难题。最终考虑上下位机的方式解决,让K210单独做识别。至于下位机当时Arduino和stm32都考虑和简单使用了,当时传输使用串口传输数据时,也出现了很多问题,那一块用数据流传输可能好一点。具体的有机会后面讲;
(5)不过最后由于比赛要求需要播放视频(还是不同格式),你像STM32和Arduino来做的话使用串口屏也可以播放,但是效果不好,而且不支持不同格式,所以还是采取使用树莓派做下位机,播放视频会好很多。还有可以使用python编程,加快开发速度;
(6)maixpy+树莓派的方案当时实现了多种垃圾(12种左右,当时训练不方便,加上种类一多效果就不好,而且我们数据集也不多),加电机、舵机、超声波、压缩,红外等一系列的控制,完成了当时的省赛。

当时比赛现场抖音直播,可以看到很简陋。
在这里插入图片描述

(7)后面也就开始着手于国赛,直接上了jetsonnano,那硬件比之前好的不是一般般,而且maixpy识别用的yolov3图像识别算法,上了jetson之后直接升级成了yolov5,其实这虽然是一个系列,但是其实V5是另外的人做的,所以部署上还有很大的不同。不仅如此,我们机械结构完全重做了,比之前更灵活,加入云台设置,投递更快,还引入了机械臂。机械臂的话由于比赛紧,没有自己设计制作,是直接购买的一个六自由的机械臂。

第三代,可以看到精简了很多,俯视图(上方的结构当时还没设计好,后来也没继续下去这一块,上半部分应该密封,减少环境对识别效果的影响,还有滑到设计,使得垃圾平稳进入识别台,这一块我们没有最终呈现,大家制作学习时可以考虑一下!)
在这里插入图片描述

这大概就是我们制作开发的一个流程,我主要负责所有的软件开发和图像识别处理训练部分,另外有个小伙伴主要负责机械结构设计,还有一个小伙伴负责一部分的编程,以及比赛资料和文档的编写。还有最恶心人的数据集标注,当时我两没日没夜的标,还找了几个学弟学妹一起标,最终的数据集大概6500张,前前后后一共标了不下1W张,只是有的格式不一样,也不好转换,所以就舍去了不少。先感谢学弟学妹和我的小伙伴,其它小伙伴有需要可以联系我!
下一篇博客正式开始动手讲解。

数据集目录

网上找的加自己拍的,你看这青菜有多难标,想想就知道了!
在这里插入图片描述
每一类都500来张,标的有多痛苦想不到。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.0 正式开始整理一下工训赛(全国大学生工程实践和创新能力大赛),智能垃圾桶的制作流程和参赛历程 的相关文章

随机推荐

  • Java写入txt文件内容

    Java写入数据进txt文件 需求 多条数据追加进文件 且需要处理中文编码问题 以下代码只能处理向文件添加数据的功能 但是会覆盖掉之前的数据 import java io File import java io FileOutputStre
  • 7-3 一维世界的纷争 (C++) 简单详细

    代码简单 难的点在于读懂题目 帝国A和帝国B统治着一维世界 帝国A的首都位于X 帝国B的首都位于Y 100 X
  • Linux中系统进程的详细管理

    一 什么是进程 进程就是系统未完成并且正在进行的工作 二 查看进程 1 图形方式查看 gnome system monitor 进程状态 R Running 该程序正在运行 S Sleep 改程序目前正在睡眠状态 idle 但可以被唤醒 s
  • VRTK4 入门指南

    VRTK4 说明文档 VRTK Farm Yard 示例 Virtual Reality Toolkit 要求使用 Unity 2020 3 24f1 Beta 免责声明 简介 入门 下载项目 在 Unity 中打开下载的项目 使用 Uni
  • Disruptor(一)Disruptor概念和RingBuffer数据结构

    Disruptor是LMAX公司开源的一个高效的内存无锁队列 谈到并发程序设计 有几个概念是避免不了的 1 锁 锁是用来做并发最简单的方式 当然其代价也是最高的 内核态的锁的时候需要操作系统进行一次上下文切换 等待锁的线程会被挂起直至锁释放
  • Unity 3D控制角色运动的方法

    一 transform Translate 方法 1 Input GetKey KeyCode 按键 if Input GetKey KeyCode W transform Translate Vector3 forward Time de
  • Ubuntu 18.04 16.04 设置输入法切换方法 中文输入法

    新装的unbunu 18 04 16 04 也可以 默认应该有中文输入法 但是应该不太好用 我们安装一个搜狗输入法 下面的shell代码实现了更新软件 检查语言支持 然后下载搜狗输入法 并且安装 然后把fcitx设置为默认输入 然后重启系统
  • 谈一谈关于NLP的落地场景和商业价值

    欢迎大家关注微信公众号 baihuaML 白话机器学习 在这里 我们一起分享AI的故事 您可以在后台留言 关于机器学习 深度学习的问题 我们会选择其中的优质问题进行回答 本期的问题 你好 请问下nlp在现在的市场主要应用在哪些方面 什么是N
  • java调用onnx模型_微软宣布开源ONNX.js,可在浏览器上运行ONNX模型

    ONNX js是一个Java库 用于在浏览器和Node js上运行ONNX模型 ONNX js采用了WebAssembly和WebGL技术 为CPU和GPU提供优化的ONNX模型推理runtime 为何选择ONNX模型 在开放式神经网络交换
  • U盘分配单元大小建议设置多少?

    在对U盘进行格式化的时候 需要先进行单元分配 合理单元分配不仅可以提高U盘的读写速度还不会浪费储存空间 下面就来看看U盘分配单元大小设多少最佳的教程 具体解析如下 1 首先来说U盘的默认格式化的方式都是FAT32的 FAT32不支持大于4G
  • fatal error: Python.h: No such file or directory解决办法

    sudo apt get install scikit image 在安装scikit image时出现如下错误 Installing collected packages subprocess32 python dateutil back
  • Ubuntu连接不了网络的解决方法

    问题描述 突然发现Ubuntu连不上网络 右上角也没有网络图标 解决方案1 解决步骤 步骤一 sudo vim etc NetworkManager NetworkManager conf 1 将其中的managed false 改为 ma
  • python在终端输出不同颜色的打印,自定义日志和自定义log输出级别

    实现过程 终端的字符颜色是用转义序列控制的 是文本模式下的系统显示功能 和具体的语言无关 转义序列是以ESC开头 即用 033来完成 ESC的ASCII码用十进制表示是27 用八进制表示就是033 书写格式 开头部分 033 显示方式 前景
  • 关于对【Lambda表达式_java】的理解与简述

    版权声明 未经博主同意 谢绝转载 请尊重原创 博主保留追究权 https blog csdn net m0 69908381 article details 130522535 出自 进步 于辰的博客 坦白说 在我学会如何使用Lambda表
  • python获取变量名

    一 使用locals 方法 hello 123 loc locals def get variable name variable for k v in loc items if loc k variable return k print
  • lightGBM 回归模型代码

    lightGBM 回归模型代码 文章目录 lightGBM 回归模型代码 lightGBM K折验证效果 模型保存与调用 个人认为 K 折交叉验证是通过 K 次平均结果 用来评价测试模型或者该组参数的效果好坏 通过 K折交叉验证之后找出最优
  • 14.QueuedConnection和BlockingQueuedConnection连接方式源码分析

    QT信号槽直连时的时序和信号槽的连接方式已经在前面的文章中分析过了 见https blog csdn net Master Cui article details 109011425和https blog csdn net Master C
  • 微信小程序隐私指引完整填写范本

    背景 小程序提交的时候遇到了官方给的填空题 答案如下所示 建议直接crtl f搜索者看 为了分辨用户 开发者将在获取你的明示同意后 收集你的微信昵称 头像 为了显示距离 开发者将在获取你的明示同意后 收集你的位置信息 开发者收集你的地址 用
  • LabView编程基础:隧道和移位寄存器

    目录 一 隧道 二 隧道运行结果 三 移位寄存器添加方法1 从隧道替换为移位寄存器 四 移位寄存器方法1运行结果 五移位寄存器添加方法2 直接添加移位寄存器 六 移位寄存器方法2运行结果 七 切记 移位寄存器必定成对出现 否则程序会出现编译
  • 2.0 正式开始整理一下工训赛(全国大学生工程实践和创新能力大赛),智能垃圾桶的制作流程和参赛历程

    一点小说明 遗憾 致歉 首先 十分遗憾 由于第一年参赛 尤其是这个赛项 我们当时做的时候网上也完全找不到参考资料 所以最开始一抹黑 硬着头皮从头开始做 最后初赛全省第一 决赛全省第二 国赛选拔赛全省第三 赛制挺迷的 省奖只看决赛成绩 进国赛