本项目为大三上《机器人技术基础》课程团队研讨课题之一,当时做这个研讨课题还花了挺多的时间,又觉得还比较有意思,因此放在博客中记录一下。不过当时班上很多大佬的成果更牛逼,我们就属于弟弟水平hhhhh
下面是详细介绍:
一、课题背景
随着人[minsheng在简书里竟然是敏感词所以诞生了如此长的前缀字符,54个不区分全角半角字符正好抵消不信你数。]民生活水平的提高,健康问题正受到前所未有的重视,药房药品分拣的工作量和工作强度非常大,自动化分拣的需求非常迫切。西药通常是以盒装的形式存在,通常比较容易实现自动识别和抓取。而中药以及部分粉状药品通常以软袋包装的形式存在,在生产运输过程中,会发生形变而改变了改观和规格,目前主流的西药分拣机都无法实现对软袋药品的分拣。
针对这一需求,可设计一套机器人分拣系统,实现对下图所示软包装药品进行目标检测与自动定位拾取。
二、课题任务
1、在给定一组数据集的情况下,设计一套机器人分拣系统的方案,系统应具备包装袋目标检测和机器人自动定位拾取功能,暂不考虑软包装的分类问题;
2、设计机器人从起始位置出发到周转箱中取出软包装物品后放置到目标位置的合理的、无碰撞的轨迹;
3、使用Matlab Robotics ToolBox实现机器人分拣系统的验证原型,并进行分拣全过程的动画仿真。
三、开发平台及辅助工具
开发平台:Ubuntu
辅助工具:YOLOv3、LabelImg、Matlab Robotics ToolBox
这里对简单说明一下:
(1)Ubuntu:使用Ubuntu的原因是YOLOv3在这上面配置起来比在Windows上方便的多。
(2)YOLOv3:一种快速的目标检测方法,YOLO(You Only Look Once),顾名思义就是像人眼一样能够实现快速目标检测的同时还能保证较高的准确率。选择YOLOv3的原因是相较于v2和v1,其准确率和速度都有较大提升,毕竟用啥都得用好的不是。
(3)Matlab Robotics ToolBox:该工具搭载在Matlab上,提供了用于设计、仿真和测试操纵器、移动机器人及人形机器人的工具和算法。包括但不止于机器人运动学建模、轨迹生成、正向和逆向运动学以及动力学算法,是一款面向机器人开发的很好的基础工具。
四、方案设计及实现
4.1、目标检测
4.1.1、数据集标注
为了方便进行深度学习训练,需要对大量图片进行标注来创建数据集, LabelImg 是一个可视化的图像标定工具,使用该工具前需配置环境python + lxml。具体安装及使用方法可以参考官网教程:https://pypi.org/project/labelImg。
数据集的标注过程确实比较繁琐,需要对每幅图片一个个手动进行框选,工作量比较大,下图是标注过程截图:
另外,由于老师提供的数据集只有35张图片,虽然考虑到每一张图中都含有数个不同样本,但是总量还是比较少的,因此还需要进行数据集的扩充(主要是旋转、缩放等),图像增强开源包链接:https://github.com/Paperspace/DataAugmentationForObjectDetection,扩充结果如下:
将检测结果的矩形框中心位置保存成txt文件,为4.2.