AI分拣系统
本帖最后由 是少翔啊 于 2019-11-13 16:41 编辑人工智能分拣系统
应用简介
在日常生活中,人们经常需要对物体进行分类,”材料分类”,”垃圾分类”,各式各样的分类需求在日益剧增。相比传统的人工分拣,AI智能识别分拣能够减轻人们工作负担。但对于许多的小白用户来说,AI一词似乎显得十分“遥远陌生”,因此,我们决定用M5Stack硬件体系去构建一个智能分拣的应用模型,让更多人能够学习使用AI摄像头以及制作自己的应用。
物料清单
M5GO x1BUS Module x1M5StickVRGB LED 50cm x2RS485 Unit x16060模组 400mm x1SG90舵机 x11515铝型材LEGO积木塑料拖链 x1GROVE线1m x116G SD卡 x112-24V电源适配器 x1
功能原理/具体实现
AI摄像头
使用标准的1515铝型材固定在6060模组上搭建结构顶部,采用了具备AI识别功能的M5StickV用作物体识别, 使用SD卡,参照官网V-Training服务教程(AI识别模型训练服务),构建物体识别模型,达到识别物体效果。
V-Training使用教程:https://docs.m5stack.com/#/en/related_documents/v-training
完成模型训练后,修改启动程序文件“boot.py”,将M5StickV的拓展接口定义为串口使用。并将识别信息通过串口发送至Basic。
fm.register(board_info.CONNEXT_A,fm.fpioa.UART1_RX)
fm.register(board_info.CONNEXT_B,fm.fpioa.UART1_TX)
uart_A = UART(UART.UART1, 115200)
注:在进行素材拍摄时请尽可能接近实际使用环境的光线、背景条件。你可以根据实际模型培训结果的识别率对你的程序进行修改,如容易发生误识别的物体,能够设置较高的识别率判定条件,或设置一定的识别有效次数。以减少误识别情况的发生。
uart_A.write(labels)
uart_A.write('\r')
BASIC控制器 使用亚力克面板固定结构中部,在其上方放置了搭载ESP32的控制器BASIC,用于控制与内容显示。通过与M5StickV进行串口通信进行识别数据传输,处理,控制执行器做出相应动作。 主机上堆叠的BUS模块用于拓展总线外接RGB灯条。通过FastLED库,我们能够很简易的编程一些酷炫的灯光效果。
底部采用的M5GO底座通过积木结构稳定的安装在了亚克力面板上,底座上3个兼容Grove的拓展接口,用于两组串口通信与发送PWM信号控制分拣舵机。 注:你可以通过程序将串口映射为不同的引脚,如果你使用的主机为Fire,你需要注意避免使用GPIO16/17作为串口。 步进电机模组
结构底部为定制化的6060步进电机运动模组,通过与BASIC进行串口通信,接收控制指令以及返回状态等信息。6060指令集下图所示。
http://localhost:3000/assets/img/product_pics/1515/6060-push/6060_push_02.jpg
电机运动部分搭配了由积木件组成的分拣托盘,运行过程中,舵机通过更改旋转角度,实现左右两侧的物体分拣。
当物体被成功识别后,作为执行部分运输物体前往相应的分拣位,进行分拣。
使用说明
1. 将模组、控制器、摄像头接通电源,等待设备启动,初始化完成(当灯条点亮且不断变换特效时,表示初始化完成)。 2. 将识别物体,放入识别区(积木托盘)上,即可进行识别、分拣。
演示视频:https://m5stack.oss-cn-shenzhen.aliyuncs.com/video/Blog/twitter_video_20191115/sorting_system.mp4
注意事项 1. 识别系统十分依赖于颜色与形状,因此请尽可能使用形状区别较大的识别物。 2. 步进电机模组速度较为缓慢,程序上给定的速度较靠近临界值,若运行中途发生“卡顿”,请关闭电源,使其停止,并重新启动。
案例程序 Github Link:https://github.com/Gitshaoxiang/Project_example/tree/master/sorting_system
页:
[1]