2020-6-13 20:15:11 [显示全部楼层]
23964浏览
查看: 23964|回复: 20

[项目] 基于KNN算法的智能分类垃圾桶模型设计与制作

[复制链接]
本帖最后由 hnyzcj 于 2020-6-24 16:52 编辑

南师附中树人学校:唐羽萱
【项目背景】
        2019年可以说是中国垃圾分类的元年,因为在这一年“上海垃圾分类于7月1日正式施行。”而目前普遍使用的分类垃圾桶只是通过颜色和标签指示分类信息,在上海市垃圾分类试行期间,居委会大妈会站在公共垃圾桶旁边指导,“你是什么垃圾?”成为市民每天不得不经受的拷问。在这样一个大背景下,人们迫切需要一台能够智能分类的垃圾桶。于是我们设计了一款基于KNN算法的智能分类垃圾桶模型。
基于KNN算法的智能分类垃圾桶模型设计与制作图1

【项目展示】
基于KNN算法的智能分类垃圾桶模型设计与制作图4
基于KNN算法的智能分类垃圾桶模型设计与制作图2
基于KNN算法的智能分类垃圾桶模型设计与制作图3

【功能简介】
(1)基于KNN算法识别,进行垃圾分类。
(2)将垃圾放入识别区后,垃圾桶智能识别,分区投放。
(3)当出现无法识别的垃圾后,人工强制学习识别。
(4)灯光指示、语音播报,让垃圾分类投放更简单。

【器材列表】
序号 名称 数量
1 Arduino Uno 1
2 IO 传感器扩展板 V7.1 1
3 HuskyLens AI 视觉传感器 1
4 数字大按钮 4
5 LED 1
6 9g金属舵机 2
7语音合成模块、小喇叭 1
8 7.4V锂电池 1
9 螺丝 若干
10 铜柱 若干
11 奥松板 若干

【制作过程】
1.KNN算法
KNN(k-nearest neighbors)作为一个入门级模型,既简单又可靠,对非线性问题支持良好,虽然需要保存所有样本,但是仍然活跃在各个领域中,并提供比较稳健的识别结果。KNN就是在特征空间中找出最靠近测试样本的k个训练样本,然后判断大多数属于某一个类别,那么将它识别为该类别。
基于KNN算法的智能分类垃圾桶模型设计与制作图5
针对测试样本 Wu,想要知道它属于哪个分类,就先for 循环所有训练样本找出离 Wu 最近的 K个邻居(假设k=5),然后判断这 K个邻居中,大多数属于哪个类别,就将该类别作为测试样本的预测结果,如上图有4个邻居是橙色,1个是绿色,那么判断Wu的类别为“红色”。
2.系统设计
我们设计的这款智能分类垃圾桶具备学习能力,可以通过学习记录相关垃圾分类,从而能够做到智能识别分类。并通过相应机械结构,把不同类的垃圾自动投放不同的垃圾桶中。对于垃圾桶不能识别的垃圾,可以通过人工方式强制定义所属类别,然后在进行垃圾分类投放。
基于KNN算法的智能分类垃圾桶模型设计与制作图6
使用流程:定义垃圾分类,垃圾学习初始化——垃圾识别(可识别的垃圾)——
2.结构设计
垃圾桶结构设计我将其划分三部分,第一部分是垃圾桶结构,第二部分垃圾分类投放结构,第三部分视觉识别传感器支架结构。本次结构件设计采用lasermaker设计,激光切割出相关结构件。
(1)垃圾桶结构设计
垃圾桶整体结构设计上,采用Lasermake中的快速造盒功能,生成一个盒体的快速原型,再对其细节进行修改,具体如下所示:
后背板:在背板位置上增加传感器支架固定孔位(①处),主控安装孔位(②处)和分类投放装置固定件支架孔位(③处)。
基于KNN算法的智能分类垃圾桶模型设计与制作图7
左右侧板:左右侧板修改如下所示,右侧板留有主控的外置电源接孔和分类投放装置固定件支架孔位(①处),左侧板留有分类投放装置固定件支架孔位(②处)
基于KNN算法的智能分类垃圾桶模型设计与制作图8
前面板:前面板修改如下图所示,主题装饰画,由外部导入(①处),垃圾入口处(②处),舵机安装孔(③处),喇叭安装孔(④处)按钮及指示灯安装孔(⑤处)。
基于KNN算法的智能分类垃圾桶模型设计与制作图9
分类投放支架:传感器支架修改如下所示,垃圾推送舵机安装孔位(①处),分类投放装置旋转空间(②处)。
基于KNN算法的智能分类垃圾桶模型设计与制作图10
垃圾桶前挡板:垃圾桶前挡板添加标题“二哈垃圾桶”。
基于KNN算法的智能分类垃圾桶模型设计与制作图11
分类垃圾桶:三个分类垃圾桶设计如下,采用前高后低的设计,确保垃圾可以落入垃圾桶内。前面板分别倒入图片形成雕刻图案(如①⑥),底板(②),后背板(③),左右侧板(④⑤)。
基于KNN算法的智能分类垃圾桶模型设计与制作图12
垃圾推送结构:垃圾推送结构是使用舵机把识别出的垃圾推送至垃圾口内。推送杆(如①),增厚片(②)

基于KNN算法的智能分类垃圾桶模型设计与制作图14
(2)分类投放结构设计:分类投放机械结构由舵机带动导流槽转向不同角度,向不同的垃圾桶倾倒垃圾。由于导流槽与舵机之间通过一个等腰直角的三角形连接件固定(如③)。因此导流槽左右侧导板,接近垃圾倾倒口处设计成切割掉一部分(如①处),导流槽底板设计(如②)。

基于KNN算法的智能分类垃圾桶模型设计与制作图13
(3)视觉识别传感器支架结构设计:视觉识别传感器支架,可以调整视觉传感器与待识别垃圾之间的距离。固定视觉识别传感器孔位在①处,调整高度孔在②处。
基于KNN算法的智能分类垃圾桶模型设计与制作图15
3.电路连线
系统电路连接如图所示,HuskyLens AI视觉识别传感器接I2C口,LED接D10口(识别指示灯),确认倾倒按钮接D9口,定义有害垃圾按钮接D7口,定义厨余垃圾按钮接D6口,定义可回收垃圾接D5口,分类投放舵机接D3口,推送垃圾的舵机接D12口。
基于KNN算法的智能分类垃圾桶模型设计与制作图16
5.代码编写
代码编写如下所示分为系统主程序和有害垃圾、厨余垃圾、可回收垃圾、定义处理四段子程序。
[mw_shl_code=actionscript3,false]*!
* MindPlus
* uno
*
*/
#include <DFRobot_Servo.h>
#include <DFRobot_SYN6288.h>
#include <DFRobot_HuskyLens.h>
// 函数声明
void DF_YouHaiLaJi();
void DF_DingYiChuLi();
void DF_ChuYuLaJi();
void DF_KeHuiShouLaJi();
// 创建对象
Servo             servo_3;
Servo             servo_12;
DFRobot_HuskyLens huskylens;
DFRobot_SYN6288   syn6288;


// 主程序开始
void setup() {
        servo_3.attach(3);
        servo_12.attach(12);
        huskylens.beginI2CUntilSuccess();
        huskylens.writeAlgorithm(ALGORITHM_OBJECT_CLASSIFICATION);
        syn6288.begin(&Serial, 0, 1, 4);
        syn6288.setVolume(true, 16);
        syn6288.playText("智能垃圾分类", 0);
        delay(3000);
}
void loop() {
        huskylens.request();
        huskylens.clearOSD();
        if (huskylens.isAppear(2,HUSKYLENSResultBlock)) {
                if ((digitalRead(9)==1)) {
                        DF_YouHaiLaJi();
                }
                else {
                        DF_DingYiChuLi();
                }
        }
        if (huskylens.isAppear(3,HUSKYLENSResultBlock)) {
                if ((digitalRead(9)==1)) {
                        DF_KeHuiShouLaJi();
                }
                else {
                        DF_DingYiChuLi();
                }
        }
        if (huskylens.isAppear(4,HUSKYLENSResultBlock)) {
                if ((digitalRead(9)==1)) {
                        DF_ChuYuLaJi();
                }
                else {
                        DF_DingYiChuLi();
                }
        }
        if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
                huskylens.clearOSD();
                delay(1000);
                huskylens.writeOSD(String(" identification;"), 114, 35);
        }
}


// 自定义函数
void DF_YouHaiLaJi() {
        servo_3.angle(abs(45));
        delay(1000);
        servo_12.angle(abs(0));
        digitalWrite(10, HIGH);
        huskylens.writeOSD(String("Harmful waste"), 114, 35);
        syn6288.playText("有害垃圾", 0);
        delay(2000);
        digitalWrite(10, LOW);
        servo_3.angle(abs(90));
        delay(1000);
        servo_12.angle(abs(90));
}
void DF_DingYiChuLi() {
        if ((digitalRead(5)==1)) {
                huskylens.learnOnece(2);
        }
        if ((digitalRead(6)==1)) {
                huskylens.learnOnece(3);
        }
        if ((digitalRead(7)==1)) {
                huskylens.learnOnece(4);
        }
}
void DF_ChuYuLaJi() {
        servo_3.angle(abs(90));
        delay(1000);
        servo_12.angle(abs(0));
        digitalWrite(10, HIGH);
        huskylens.writeOSD(String(" kitchen waste"), 114, 35);
        syn6288.playText("厨余垃圾", 0);
        delay(2000);
        digitalWrite(10, LOW);
        servo_3.angle(abs(90));
        delay(1000);
        servo_12.angle(abs(90));
}
void DF_KeHuiShouLaJi() {
        servo_3.angle(abs(135));
        delay(1000);
        servo_12.angle(abs(0));
        digitalWrite(10, HIGH);
        huskylens.writeOSD(String("Recyclable waste"), 114, 35);
        syn6288.playText("可回收垃圾", 0);
        delay(2000);
        digitalWrite(10, LOW);
        servo_3.angle(abs(90));
        delay(1000);
        servo_12.angle(abs(90));
}
[/mw_shl_code]


6.设备组装
第1步:拿出识别指示LED用螺丝螺母固定如下图所示,将LED模块电路板垫高一断距离,避免电路板上的焊点与垃圾桶体直接接触。

基于KNN算法的智能分类垃圾桶模型设计与制作图18
图20垫高模块电路板
第2步:将上步中的LED按垃圾桶前面板对应孔位装入,再拿出2个螺母将其固定。
基于KNN算法的智能分类垃圾桶模型设计与制作图19基于KNN算法的智能分类垃圾桶模型设计与制作图17

图21固定LED模块
第3步:依次对几个按钮按上述方法进行安装在前面板上。
基于KNN算法的智能分类垃圾桶模型设计与制作图40

图22安装各按钮
第4步:将舵机和音箱安装到前面板上。

基于KNN算法的智能分类垃圾桶模型设计与制作图21
图23安装舵机和音箱
第5步:取出舵机舵棒,将其放入垃圾推送结构中,并用胶水粘贴增厚片如下图所示。

基于KNN算法的智能分类垃圾桶模型设计与制作图26
图24安装舵棒

基于KNN算法的智能分类垃圾桶模型设计与制作图22基于KNN算法的智能分类垃圾桶模型设计与制作图20
图25胶水粘贴增厚片
第6步:将第5步中安装好的垃圾推送结构,安装到前面板舵机上。
基于KNN算法的智能分类垃圾桶模型设计与制作图41

图26安装推送结构
第7步:取出后背板和Arduino Uno主控器,先在背板上对应Uno的孔位,固定铜柱。
基于KNN算法的智能分类垃圾桶模型设计与制作图25

图27固定Uno的铜柱
第8步:将Uno主控对应卡在铜柱上,用螺丝固定。再拿出拓展板叠加到Arduino主控之上。
基于KNN算法的智能分类垃圾桶模型设计与制作图23

图28固定Arduino主控
基于KNN算法的智能分类垃圾桶模型设计与制作图24

图29叠加拓展板
第9步:拿出HuskyLens AI 视觉传感器及支撑架、螺丝及调整支架
基于KNN算法的智能分类垃圾桶模型设计与制作图27

图30固定HuskyLens AI 视觉传感器
基于KNN算法的智能分类垃圾桶模型设计与制作图29

图31安装再调整支撑架上
基于KNN算法的智能分类垃圾桶模型设计与制作图28

图32
第10步:将第9步中的HuskyLens AI 视觉传感器组合体与后背板选择合适的安装孔位进行安装。
基于KNN算法的智能分类垃圾桶模型设计与制作图31

图33固定HuskyLens AI 视觉传感器

基于KNN算法的智能分类垃圾桶模型设计与制作图30
图34从垃圾桶背板走线孔穿线与传感器连接
第11步:拿出分类投放机构固定件安装在后背板上。
基于KNN算法的智能分类垃圾桶模型设计与制作图33

图35安装分类头饭机构固定件
第12步:组装垃圾分类投放结构,用热熔胶将垃圾分类投放结构件组合成导流槽。再将连接件与舵机导流槽粘合成一体。
基于KNN算法的智能分类垃圾桶模型设计与制作图36

图36热熔胶粘和导流槽
基于KNN算法的智能分类垃圾桶模型设计与制作图32

图37组装垃圾分类结构

基于KNN算法的智能分类垃圾桶模型设计与制作图34
图38安装垃圾分类机构

基于KNN算法的智能分类垃圾桶模型设计与制作图35
图39注意安装时,电路连线整理整齐。
第13步:安装垃圾桶前档板
基于KNN算法的智能分类垃圾桶模型设计与制作图37

图40安装垃圾桶前挡板
第14步:将切割好的垃圾桶结构件组装成不同的桶。

基于KNN算法的智能分类垃圾桶模型设计与制作图38基于KNN算法的智能分类垃圾桶模型设计与制作图39


第15步:垃圾桶整体组装完成。

基于KNN算法的智能分类垃圾桶模型设计与制作图42

z20.jpg
图1.jpg
图3.jpg
图4.jpg
图2.jpg

汤果  初级技神

发表于 2020-6-14 07:23:31

坐等更新~~~~~
回复

使用道具 举报

汤果  初级技神

发表于 2020-6-14 07:32:20

清单里少了语音合成模块吧
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-6-14 08:12:03

汤果 发表于 2020-6-14 07:32
清单里少了语音合成模块吧

已添加,多谢提醒,哈哈哈
回复

使用道具 举报

gray6666  初级技神

发表于 2020-6-17 14:02:33

[Actionscript3] 求科普
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-6-17 16:14:31

gray6666 发表于 2020-6-17 14:02
[Actionscript3] 求科普

把你二哈升级
回复

使用道具 举报

gray6666  初级技神

发表于 2020-6-18 08:17:33

升级的二哈能写代码了?
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-6-18 08:22:32

gray6666 发表于 2020-6-18 08:17
升级的二哈能写代码了?

一直都可以写代码的
回复

使用道具 举报

gray6666  初级技神

发表于 2020-6-18 10:48:21

hnyzcj 发表于 2020-6-18 08:22
一直都可以写代码的

我居然木发现
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-6-18 12:07:37


WIKI
回复

使用道具 举报

DFS1w2cb8o8  中级技师

发表于 2020-6-18 17:35:32

厉害厉害
回复

使用道具 举报

DFHJM_IpFmV  中级技师

发表于 2020-6-22 09:53:09

陈老师的作品,赞一个@hnyzcj
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-6-22 10:48:52

DFHJM_IpFmV 发表于 2020-6-22 09:53
陈老师的作品,赞一个@hnyzcj

谢谢
回复

使用道具 举报

DFHJM_IpFmV  中级技师

发表于 2020-6-23 10:59:54

回复

使用道具 举报

春秋大仙  高级技师

发表于 2020-7-7 13:47:16

大师出品,必属精品!!
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-7-7 17:32:28

春秋大仙 发表于 2020-7-7 13:47
大师出品,必属精品!!

谁敢春秋大仙面前称大师。

春秋大仙,法力无边,攻无不克,战无不胜。春秋大仙,法力无边,仙福永享,寿与天齐。
回复

使用道具 举报

twfolove  见习技师

发表于 2020-7-10 15:16:34

垃圾不都是用垃圾袋装着的吗
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-7-10 16:25:35

twfolove 发表于 2020-7-10 15:16
垃圾不都是用垃圾袋装着的吗

概念模型,
回复

使用道具 举报

hnyzcj  版主
 楼主|

发表于 2020-7-10 16:26:49

twfolove 发表于 2020-7-10 15:16
垃圾不都是用垃圾袋装着的吗

垃圾袋装是看不见,也就分辨不出来了。有道理。哈哈哈
回复

使用道具 举报

20060606  高级技匠

发表于 2020-7-10 18:34:13

垃圾怎么从垃圾桶里倒出来?
回复

使用道具 举报

Rickey  学徒

发表于 2023-4-2 09:33:42

您好,想请教一下这个AI视觉传感器是如何进行学习的哇
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail