智能垃圾桶总结2

K210程序

阈值设定

K210的程序用的是官方给的五朵花分类的程序,大概流程是摄像头采集图像,与之前在百度飞桨上训练的模型进行对比,当准确率超过设定值时,在屏幕上显示识别的东西。

#define PROB_THRESH     (0.85f)

PROB_THRESH 为设定阈值,调试识别准确率时可以参照飞桨训练的预测精度,PROB_THRESH 取值比预测精度大。
如果在飞桨上预测精度值比较大(超过0.7),但是在烧到板子中识别准确度并不高,在排除比如光线,图片是否与实物类似等问题后,建议把PROB_THRESH 再调大。
之前我们组就是这个问题,其他应该没什么问题,预测精度0.75多,图片也是在实验室环境拍摄,但是总是识别不准。把ROB_THRESH 从0.8 变到0.91,就解决了。准确率提高了,时间就会增长,所以需要不断调节达到又快有准的地步。

以下是飞桨训练得到的预测精度:

运行时长: 18秒244毫秒
结束时间: 2021-08-07 17:42:41
total eval count:292 cost time:18.15 sec predict accuracy:0.7191780821917808

串口发送数据

主函数发送数据:

         if (features[cls] > PROB_THRESH)
         {
            if(cls==0)
               uart_send_data(UART_USB_NUM,"A", 1);
            if(cls==1)
               uart_send_data(UART_USB_NUM,"B", 1);
            if(cls==2)
               uart_send_data(UART_USB_NUM,"C", 1);
            if(cls==3)
               uart_send_data(UART_USB_NUM,"D", 1);
            
			ram_draw_string(display_image.addr, 150, 20, text, RED);
         }

通过K210 识别将数据通过串口发送给ARDUINO,完成垃圾投放。串口通信采取连续发送,ARDUINO接受数据并控制舵机完成投放。并通过一个管脚200ms的高电平,K210识别高电平并在显示屏显示” Waste Launch OK“。

管脚定义:参考官方程序串口通信 ,将pin_config.h文件放在你的工程中,在主函数中引用, #include “pin_config.h”
为了方便后边调程序,我们把串口管脚改到13,14
在pin_config.h文件中更改:

#define PIN_UART_USB_RX       (14)
#define PIN_UART_USB_TX       (13)

串口通信主要遇到的问题是没办法中断发送,摄像头用到中断,串口中断优先级更改后就陷入死循环,所以就采取了一直发送的方式。这也导致后续调参十分复杂,因为在垃圾下落时K210还在识别,所以就得加延时函数,然后就找最佳延时。总之,好复杂。

投放数量显示

投放数量显示成了最难解决的问题,前面说到投放完成后有200ms高电平,K210识别并显示。
我们最开始选择了 switch (cls)语句,但是单独试没有任何问题,但是一起试,就会卡循环,没办法识别,放什么东西都是一个。到现在也没有解决。我们最后改为if语句就没有问题了。

  gpio_pin_value_t key_state = gpiohs_get_pin(KEY_GPIONUM);      
        if(!key_state)
        {         
            jg[0]+=1;
            if (what==9)
            {
                printf("a is ok/n");
                jg[0]-=10;
                lcd_draw_string(10, 4,"1", RED);
            }
          /*  switch (cls)
            {
                case 0:
                    lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Harmful Waste Launch OK", RED);                    
                    sleep(2);
                    break;
                case 1:
                    lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Recyclable Waste Launch OK", RED);
                    sleep(2);
                    break;
                case 2:
                    lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Kitchen Waste Launch OK", RED);
                    sleep(2);                   
                    break;
                case 3:
                                     
                    break;
            }*/
            if(cls==0)
            {
                lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Harmful Waste Launch OK", RED);
                    what++;
                    sleep(2);
            }
              if(cls==1)
            {
                lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Recyclable Waste Launch OK", RED);
                    what++;
                    sleep(2);
            }
              if(cls==2)
            {
                lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Kitchen Waste Launch OK", RED);
                    what++;
                    sleep(2);
            }
              if(cls==3)
            {
                lcd_draw_string(16, 4,&jg, RED);
                    lcd_draw_string(30, 4,"Other Waste Launch OK", RED);
                    what++;
                    sleep(2);
            }
        }
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值