1. 引言
随着人工智能技术在全世界之内受到重点关注及广泛研究,工业开始朝着智能化的方向发展,结合人工智能的工业4.0时代已经悄然来临。物料智能仓储系统是工业4.0中智能工厂、智能生产、智能物流三大主题之一 [1],其作为物流系统的枢纽和核心,是保证能够实现高效合理化运行的关键,在企业物流中有着举足轻重的地位。本文针对面向物料分拣搬运的智能仓储系统,首先设计了物料识别定位模块、智能分拣装载模块、自动搬运模块以构建智能仓储系统平台,而后利用机械臂、小车、传感器搭建硬件平台,最后设计软件算法实现物料分拣、装载、搬运、入库功能。该系统融合了人工智能技术、先进机器人控制技术及网络化分布式技术,充分发挥现有物流资源的效率,使得快递需求能够快速获得服务匹配,得到物流支持。
2. 传统仓储系统主要问题
自动仓储系统包括物料分拣、装载、运输及入库四大环节 [2],每一环节都涉及机器人协同控制和搬运方案的优化设计,其对物料搬运效率具有重要影响。传统仓储系统由于没有很好的协同控制算法导致运动路径不当,而不恰当的搬运方案不仅浪费资源,还提高了企业的生产成本 [3]。因此,急需研发一种能高效协同物料分拣、装载、运输和入库过程的智能仓储系统,优化搬运方案和运输路径,提升时间利用率,节省企业成本。
机器臂是自动仓储系统中重要的组成部分之一,它能完全替代人工手动操作,将物料进行抓取和分拣。目前被大家所熟知的有ABB、Kuka、Fanuc、Yaskwa等国外老牌厂商生产的机械臂,整机存在着体积大、载荷重,价格高昂、不接地气的缺点。现有国产Dobot机器人以其简单易用、灵活部署、高精度、宽范围、快速度、且支持多种不同的控制方式等特点,在面向消费级市场和轻工业级的分拣、封装、搬运等方面逐渐引起了广大研究者的关注。传统自动仓库的搬运部件存在类似问题,其搬运车控制系统通常会私有化了底层操作接口,关键实现部分通常不对外公开,即使有相关接口,平台自身相关的参数设置过于复杂,学习成本较高。现有基于arduino开发板的AI-Starter智能小车,是一款针对教育比赛推出的智能小车,主控板为Arduino Mega2560开发板,易于上手,传感器外设接口丰富,能够使用c语言在单片机上开发避障和路径规划算法 [4]。在新工科背景下,本研究基于AT Mega2560控制芯片、Dobot机械臂、AI-Starter小车以及传感器搭建的智能仓储系统实现了物料分拣、装载、搬运、入库功能,该系统综合人了工智能理论、机器人控制编程、搬运方案优化、模式识别等知识,为培养新工科高素质人才提供了重要的教学实践平台,为学生适应工业4.0时代的挑战打下了重要基础。
3. 智能仓储平台的整体设计
如图1所示,智能仓储平台分为三个模块,包括物料识别定位模块、物料分拣装载模块和自动搬运入库模块。首先,物料识别定位模块从图像采集器获取当前的物料堆放图像进行视觉轮廓检测,确定物料块坐标;而后,智能分拣和装载模块依据颜色对物料进行分类,将其装载到指定小车上;最后,智能小车组成的搬运入库模块将物料搬运到指定的仓库中卸载。

Figure 1. Schematic diagram of intelligent warehouse platform design
图1. 智能仓储平台设计示意图
3.1. 物料识别定位模块
物料识别定位模块主要用于控制图像采集器(摄像头),实时获取物料块的位置,提取物料块的颜色特征,并将上述信息发送到主控制模块(Arduino Mega2560开发板)。

Figure 2. Schematic diagram of material recognition and location module design
图2. 物料识别定位模块设计示意图
如图2所示,视觉定位单元通过调整视觉标定板上的三点定位坐标来判断图像采集器(摄像头)是否符合预设的标定位置,若是,则进入视觉标定程序,根据机械臂对应位置的笛卡尔坐标确定执行末端到标定板的空间变换矩阵,若否,则执行预设调整程序,调整摄像头位置,直到摄像头位置符合标定要求。
当视觉标定完成以后,便开始进行物料方块的颜色特征提取,颜色特征提取单元用于获取物块的HSV颜色空间表示。HSV色彩表示空间由色调(Hue)、饱和度(Saturation)、亮度(Value)三个分量构成,HSV从人的视觉系统出发,其表示接近人眼的主观感受,识别准确率较高。颜色特征提取单元首先使用摄像头获取物料的BGR像素图,而后对BGR像素图像进行中值滤波,降低图像的变化率,消除噪声;随后,对图像进行颜色空间转换,使用转换算法cv2.cvtColor将BGR图像转化为HSV图像;最后,提取图像中特定颜色区域的HSV特征值,比对物料仓库中特定物料的颜色HSV值,确定物料的颜色。
当颜色提取完成后,便开始进行物料方块的轮廓检测。首先,边缘轮廓检测单元获取物料的RGB图像,而后对图像进行灰度化处理,本文中,我们使用著名的心理学映射公式 将物料的RGB图像转化成灰度图像;随后,选取适当的阀值,对灰度图像进行二值化处理,获得反映图像整体和局部特征的二值化图像;最后,对该图像使用canny边缘检测算法提取物料轮廓。Canny是一种高效的边缘检测算法,处理过程包含四步:第一步,使用高斯滤波器去除二值图像的噪声影响。第二步,使用 Sobel 算子计算平滑图像的水平方向和竖直方向的一阶导数(Gx和Gy),根据这两幅梯度图寻找边界的梯度和方向。第三步,通过非极大值抑制方法排除非边缘像素,仅保留一条边缘。第四步,使用滞后阈值,确定真正的边界。边缘检测单元输出一个Numpy数组,包含边界点(x,y)的坐标以表示物料块的边界。
3.2. 智能分拣装载模块

Figure 3. Schematic diagram of intelligent sorting and loading module design
图3. 智能分拣装载模块设计示意图
如图3所示,智能分拣装载模块由智能机械臂和传送带组成,实时通信模块通过交互物料位置信息和搬运小车的状态控制机械臂的动作,提高分拣装载的效率;机器人视觉模块则通过模式识别算法对将物料块进行分类,将分类结果通信模块传送给arduino控制板;机械臂运动规划模块实时求解机械臂各关节变量以确定执行末端的位置姿态,在指定位置执行抓取、放置动作实现物料的分拣与装载。硬件上,智能分拣装载模块通过设计机械臂的结构参数、电气参数完成运动控制功能。在软件上,通过arduino集成开发环境,在AT mega2560芯片上实现多机械臂最优运动控制规划,预设变量配置机械臂的底层参数,省去大量繁琐的底层代码开发,使用高级接口函数完成机械臂协同控制程序编制。
3.3. 自动搬运入库模块
如图4所示,自动搬运入库模块由智能小车组成,包括小车自动巡线、自动避障、白平衡校准、实时通信、机器视觉和路径规划模块。自动巡线、自动避障和白平衡校准三个模块完成小车在运输过程中的运动控制,通过调整这三个模块的参数,使搬运小车沿着预定的优化路线前进,在小车遇到障碍物时能够做出反应,自主躲避,不影响运输任务;白平衡校准则使得小车的巡线动作更加稳定流畅;机器视觉模块则用于入库环节时对仓库种类的识别,将识别结果和小车运载的物料方块种类进行比对,实现将物料送入对应的仓库的功能。在此四个模块的基础上,执行多小车最优运动规划方案,通过信息传输实现多个智能搬运小车的协同控制,提高物料运输入库效率。

Figure 4. Schematic diagram of automatic handling and storage module design
图4. 自动搬运入库模块设计示意图
3.4. 智能仓储平台工作流程
智能仓储平台的工作流程如图5所示,机械臂在原料区抓取物料,放置到传送带上完成物料拾取;机械臂上的摄像头通过识别传送带上的物料,根据颜色分类抓取物料并放置于固定堆放区完成分拣;机械臂与搬运小车协作,将堆放区的物料分类放置于小车上完成物料装载;多辆小车通过相互通信及执行巡线功能将物料运送到目标仓库:如果能正常运输物料,则执行小车巡线运输程序。如果遇到前方故障小车或者在巡线轨迹上有货物方块,则执行自动避障,绕开障碍物以后则恢复巡线功能。如果遇到问题物料,则将问题物料在临时存放区暂存;搬运小车通过翻斗装置将物料倾倒到对应仓库完成卸载。

Figure 5. Intelligent warehouse platform workflow
图5. 智能仓储平台工作流程
4. 智能仓储平台硬件设计
4.1. 主模块接口及传感器
本系统采用Arduino控制板为控制模块,该模块基于AT Mega2560芯片,拥有16MHz晶振,有54路数字输入/输出端口(其中15个可以作为PWM输出),16路模拟输入端口,4路UART串口,电池接口,ICSP头和复位按钮等。在仓储系统的设计中,它集成了电机驱动模块,还集成了红外巡线信号接口、超声波模块信号接口、USB、Xbee、蓝牙、串口通信连接机械臂等接口,另外,还具备两个舵机信号接口控制智能小车的翻斗运行。
如图6所示所示,Arduino控制盒是整个机械臂的主控系统,也是小车的主控板,在整套智能仓储系统中起核心作用。我们根据智能仓储系统所涉及的实际功能来定义Arduino的接口,并以此为依据来设计整个电路控制系统。1、4:编码器接口,与小车底盘上的右侧电机相连;2、3:小车驱动电机接口,与小车底盘上的左右侧电机相连;5:红外巡线传感器接口,与小车的红外巡线传感器相连;6、7:颜色传感器接口,与小车底盘左右侧的颜色传感器相连;8、9、10:超声波传感器接口,与小车左侧、右侧、前方的超声波传感器相连;11:Xbee通信接口,用以实现小车和主控板之间的通信,采用UART协议;12、14:舵机接口,用以控制小车翻斗的卸载动作;13、16:蓝牙接口,采用UART协议;15:串口通信接口,4pin-10pin用以通信控制机械臂运动;17:USB接口,采用标准的Micro-USB接口,用以下载运行在主板上的程序;18:电源接口,与小车地盘上的电池相连。

Figure 6. Schematic diagram of Arduino main control module and functional interface
图6. Arduino主控模块及功能接口示意图
4.2. 机械臂
4.2.1. 机械结构
Dobot Magician 机械臂是高精度4轴关节型机器人,由回转主体、大臂、小臂、臂头、底座等部分组成,可完成分拣、搬运等工作,是一种典型的操作型机器人。

Figure 7. Schematic diagram of robot arm joint coordinate
图7. Dobot机械臂关节坐标示意图
如图7所示,dobot Magician机器人的本体中心线与底座的正前方中心对应,关节1处于其原点位置,旋转正方向为俯视本体时的关节1的逆时针旋转方向;大臂垂直竖立时,关节2处于其原点位置,旋转正方向为使大臂朝前朝下运动的方向;小臂处于平行于底座平面时,关节3处于其原点位置,旋转正方向为使小臂朝下运动的方向;关节4的旋转正方向是俯视本体时关节4的逆时针旋转方向。
4.2.2. 运动学参数

Figure 8. Schematic diagram of coordinate frame of link
图8. 连杆坐标系示意图

Table 1. D-H parameter list of Dobot mechanic arm
表1. Dobot机械臂D-H参数表
如图8所示,根据Dobot机械臂各连杆的连杆长度、连杆扭转角、各关节的连杆偏距和关节角 [5],我们得出D-H参数表,如表1所示,依据此参数表计算出连杆坐标系
的齐次变换矩阵。
从{0}系到{4}系的齐次变换矩阵记为
,它表示{4}号坐标系相对于{0}号坐标系的位姿,令C1 = cosθ1,C2 = cosθ2,C1 = cosθ3,S1 = sinθ1,S2 = sinθ2,S2 = sinθ3,S23 = sin(θ2 + θ3),C23 =cos(θ2 + θ3),得到最终坐标变换矩阵如下:
4.3. 搬运小车
如图9所示,搬运小车是由车体,翻斗,主控板,传感器,通信模块,驱动电机五个部分所组成。
4.3.1. 小车主体结构
小车主体结构包括1、前方、侧方和正下方开口的铁质框架,预留了超声波传感器和红外传感器的探测位置;2、后轮以及前方的万向轮,实现车体的移动和转向;3、顶部的翻斗,实现了物料的运输和卸载。
4.3.2
. 超声波传感器
超声波传感器利用超声波的传播特性研制而成。超声波是一种振动频率高于声波的机械波,具有频率高、波长短、绕射现象小,方向性好、定向传播等特点。本文中,传感器通过计算超声波发出和接收的时间差来计算前方障碍物的距离,如图9所示,小车在头部装有三个超声波传感器,通过超声波反射测量前方3mm~500mm范围内障碍物,可有效规避巡线路径上的其他小车或物料。
4.3.3
. 颜色传感器
颜色传感器利用颜色滤波器根据波长对光线进行滤波,滤波器只允许特定波长的光通过,从而能识别出特定的颜色。本文中的小车在底部有两个颜色传感器,使用RGB滤波器对特定的颜色进行响应,分辨出颜色以后,小车就能了解是处于巡线任务中还是卸载任务中,并识别不同物料种类的仓库。
4.3.4. 红外巡线传感器
红外巡线传感器不断地向地面发射红外线,当红外光遇到白色纸质地板时发生漫反射,反射光被接收管接收;如果遇到黑线则红外光被吸收,接收管接收不到红外光。本文中的红外传感器通过是否接收到反射的红外光判断小车是否处于巡线路径中,其内置6路高精度红外对管,配合6个可调电位器调节红外对管检测距离的远近,可精确检测到黑线,实现自动巡线行驶。
4.3.5. 通信模块
如图10所示,智能仓储系统使用Xbee作为通信模块,用于小车和控制主板之间的无线数据通信。该模块是Digi公司生产的一款采用ZigBee技术的无线模块,它传输距离远,功耗低,内置协议栈,可通过XCTU以及ZigBee Operator两款软件进行调试,即插即用,使用非常方便。
4.3.6. 视觉识别模块
如图11所示,智能仓储系统使用pixy2视觉识别模块,将其搭载在机械臂的执行末端上,实现物料定位和智能分拣功能。Pixy系列是联合 Charmed 实验室和卡内基-梅隆大学共同推出的图像识别系统,pixy2视觉识别模块支持多物体识别,有多色彩颜色识别及色彩追踪能力,pixy2自带处理器,并搭载着一个图像传感器 CMUcam5,它通过其处理器内部的算法,以颜色为中心来处理图像数据,选择性地过滤无用信息,Pixy2只需将已经处理过的特定颜色物体的数据发送给arduino微控制器即可,处理后得到的数据更精确有效。
5. 智能仓储系统软件设计
本系统通过arduino 集成开发环境和C语言进行工程开发,也可以使用mixly软件进行模块化的开发。为了实现智能仓储系统的所有功能,必须实现(1)视觉轮廓检测算法(包括Canny边缘检测 [6]、Prewitt边缘检测 [7] 等)、颜色特征提取算法;(2)自动巡线算法、自动避障算法;(3)多机械臂协作物料分拣装载算法、多小车协作物料运输入库算法,在新工科背景下,这部分工作将由学生们通过编程实现。
6. 智能仓储系统场景搭建

Figure 12. Diagram of functional area of intelligent warehouse platform
图12. 智能仓储平台功能区示意图
本研究搭建了桌面级别因此对各个功能区进行了划分,以供同学们进行充分实践,如图12所示。
1) 装载物料区:此区域中机械臂抓取物料成功识别颜色并放置在分类堆放栏位里
2) 小车起始区:此区域是智能小车准备出发的地方
3) 物料卸载区:此区域是小车物料卸载的仓库(使用不同颜色区分不同物料)
4) 行驶区:此区域为小车正常行驶的路线
5) 问题物料区:此区域为问题物料卸载的地方
6) 自由区:灰色区域为自由区,小车在自由区内自由行驶,不要求必须巡线行驶
7. 结语
本研究提供了一套桌面级的物料分拣搬运的仓储平台,它综合了dobot分拣机器人、arduino搬运小车以及基于传感器的自定位系统,是非常好的教学实践平台。学生不仅能对机器人运动学原理进行验证,还能通过机械臂编程接口进行基于路径规划的高级运动控制,测试机器学习算法对机器人分拣识别准确率和效率的影响。此外,还能针对小车编写基于传感器的巡线算法,避障算法,实现现代智能仓储工厂中物料分拣、搬运、入库功能。该系统让学生参与编程、协调仓储平台各部件之间的运行,使得他们在“新工科”的背景下提早了解智能工厂运作模式,增强了独立思考能力和动手能力,为迎接工业4.0的挑战打下了坚实的基础。
基金项目
重庆市中小学创新人才培养工程项目计划研究项目(CY200233)。