【本科毕业设计】基于双指标检测的自助智能台球柜

0. 前言

毕业设计已经完成了,前前后后花了有将近两个月时间,期间主要受到了两位学弟的帮助,一位帮忙做动力控制,另一位负责设计机械和动力方案,非常感谢。

该项目主要目的是设计一款“基于双指标检测的自助智能台球柜”,主要实现以下功能:

  1. 用户可以使用小程序进行自助取球和自助还球;
  2. 还台球时会对台球数量进行检测,进行视觉(YOLOv5)和重量(重力传感器)的双指标检测。

感兴趣的话可以看看视频展示:视频展示:基于双指标检测的自助智能台球柜

首先看看成品的大致外观:

在这里插入图片描述

1. 整体技术方案

首先看下项目整体的技术方案,项目主要可以分为机械、动力、数量检测、通信和用户交互五大功能模块,如下图:
在这里插入图片描述
各功能模块联系和整体流程可以看下面的图片
在这里插入图片描述

1.1 机械结构

机械结构主要是用2020铝型材做框架,黑色环氧板做外壳,其实从上面的图片就明白机械结构是怎么设计的了。

1.2 动力系统

动力系统使用了三根滑轨,每根滑轨控制一维的运动,三根滑轨就可以保证台球盒在整个空间内的运动,滑轨长这个样子:
在这里插入图片描述
三根滑轨组装在一起长这样:
在这里插入图片描述
控制方面用STM32发送控制信号,采用Microstep driver DM542步进电机驱动器提供驱动电压。

1.3 台球数量检测

1.3.1 YOLOv5视觉检测

视觉方面使用YOLOv5对做数量检测,效果很不错的,因为台球是放在检测平台上的,场景相对单一,效果如下图:
在这里插入图片描述
YOLOv5部署在Jetson Nano上,实测未加速情况下稳定在15fps左右(加有散热风扇),可以满足需求,因此我也没有做模型加速。

1.3.2 重力检测

另一方面采用重力检测来通过重量确定台球的数量,主要用到的就是下面的高精度重力传感器。
在这里插入图片描述
该传感器能将重量大小转换为毫伏级别的电压高低,然后再经过电压放大器和模数转换模块,在STM32上经过模数转化就可以得到台球重力,实测误差在1g左右。

然而实际情况是重力检测并没什么用,原因在于不同的台球重量相差挺大的,我们买的台球一个在160-170g左右,而学校的台球一个在180-200g左右。。。无法很好的进行重量检测。后来就改成了重量只要不是小的离谱就算检测成功(大于1200g),主要还是依赖视觉做数量检测。

1.4 通信方案

用户手机需要与台球柜进行通信:比如手机给台球柜发送取球和还球信号,取球或还球成功后给手机返回成功信号等,使用的是一个低功耗蓝牙模块:
在这里插入图片描述
但其实后来发现这种通信方案并不理想,弊端太多了,比如不能多用户同时连接蓝牙,手机和蓝牙的连接需要2秒左右的额外时间等等,实在是不够合理。

1.5 小程序交互模块

采用微信小程序完成设备和用户间的交互,没有自己搭建服务器,采用的是云数据库。大体效果如下:
在这里插入图片描述

2. 存在问题

虽然能完成大体功能,但项目整体还是存在不少问题,鲁棒性也不算很高:

  1. 机械系统鲁棒性不高:台球存放平台不够稳固,空间利用率较低等;
  2. 动力系统速度慢:从视频中可以看到还球和取球的速度还是挺慢的,用户需要等好几十秒;
  3. 蓝牙通信方案不合理:蓝牙通信方案在该项目中显然不是最优选择,存在诸多弊端;
  4. 小程序功能较为简陋:小程序的功能还是比较简单的,而且鲁棒性有待进一步提升,目前还是比较toy的。

以上就是关于我本科毕设的分享,也算是简单做一个总结和回顾了吧。马上毕业了,准备在读研之前找个CV方向的线上实习,希望有公司要我哈哈哈。:)

猜你喜欢

转载自blog.csdn.net/qq_44166630/article/details/124949572