基于ROS的仓储物流自分拣车
2024-06-04杨建海王金硕刘明阳余江巩荣芬
杨建海 王金硕 刘明阳 余江 巩荣芬
摘要:针对仓储物流自动分拣领域,设计了一个基于机器人操作系统(robot operating system,ROS)的仓储物流自分拣车,采用了同时定位与地图构建(simultaneous localization and mapping,SLAM)技术进行地图构建和路径规划,使其具备自主导航能力,结合多角度机械臂实现灵活抓取。实验测试表明,设计的自分拣车可以应用于物流分拣,能准确、高效地完成分拣任务,提高物流分拣效率和降低分拣成本。
关键词:ROS 物流车;物流分拣;视觉识别;SLAM
中图分类号:TP271;TP13 文献标识码:A
0 引言
随着电商、物流行业的迅速发展,仓储物流分拣作为现代物流处理的重要组成部分,对提高物流效率、准确性以及降低成本具有关键意义。在这个背景下,基于机器人操作系统(robot operatingsystem,ROS)的仓储物流自分拣车应运而生。
本文旨在探讨基于ROS 的仓储物流自分拣车的设计与实现,利用ROS 强大的功能和灵活性,结合自动化设备和智能算法,实现货物的自动分拣和处理。该自分拣车的设计目标包括提高分拣效率、准确性和灵活性,降低运营成本。其还提供简洁明了的用户界面和良好的操作体验,确保安全性和可靠性,并与分拣车进行集成,实现智能、高效运营。此外,自分拣车的应用场景涵盖电商仓库、物流中心、快递站点和配送中心等领域。
本文将介绍ROS 的基本概念,探讨仓储物流自分拣车的相关技术与方法,详细阐述仓储物流自分拣车的设计与实现,为仓储物流自分拣车领域的发展提供有益的参考和借鉴。
1 系统设计
本系统采用树莓派作为上位机主控,Arduino和STM32 作为下位机控制,利用激光雷达的同时定位与地图构建(simultaneous localization andmapping ,SLAM)技术进行地图构建和路径规划。该系统使用通用串行总线(universal serial bus,USB)摄像头捕获图像,并通过开源计算机视觉库(open source computer vision library,OpenCV) 进行图像处理。机械臂采用舵机云台结构,通过智能机器人(smart intelligent robot,somtbot)控制板处理机械臂抓取的逆解,系统结构框架如图1 所示。
本系统能够自动识别快递并根据地区信息对快递进行分类,实现高效的快递分拣。其整合了多种先进技术和硬件结构,提高了仓储物流管理的自动化水平,为物流行业提供了智能化解决方案。
1.1 硬件系统介绍
硬件系统使用树莓派4B 来控制自分拣车。将计算机与搭载树莓派4B 的车辆配置在同一个局域网络中,确立主从连接。其中,机载树莓派4B 作为主机,计算机作为从机。该系统还使用陀螺仪传感器进行姿态解算[1],用于测量物流车在活动走廊内行驶轨迹的对齐情况。
此外,Arduino 作为运动控制主节点,连接Arduino 与光电转速计。将光电转速计提供的计数数据通过串口传输至 Arduino 主板,然后利用比例积分微分(proportional integral derivative,PID)控制算法实现对电机的精确驱动。
机械臂采用somtbot 主板控制结合摄像机的视觉机械臂,视觉机械臂结构如图2 所示。
1.2 传感器介绍
(1)深度相机。与激光雷达搭配的深度相机可提供深度数据,用于生成二维栅格地图。此外,该相机还可以扫描货物箱上的条形码以提取货物信息,进而控制机械臂的运动[1]。
(2)USB 摄像头。USB 摄像头可以连接到计算机或其他设备上的摄像头,并且通过USB 接口进行数据传输和控制。USB摄像头可应用于视频会议、监控、图像识别等领域。在物流车前部安装USB摄像头可以采集周围环境信息,为神经网络提供输入数据源。
(3)激光雷达。通过发射激光束并测量激光束的反射来获取目标物体的距离和位置信息。激光雷达通常应用于环境感知、避障、距离测量和地图构建等。
(4)慣性测量单元(inertial measurement unit,IMU)传感器。IMU 传感器可以测量物体的加速度和角速度,其还包括磁强计,用于检测物体所处的方向。IMU 传感器广泛应用于航空航天、汽车、物流车、虚拟现实等领域,提供姿态估计和运动跟踪等功能。
(5)压力传感器。压力传感器是一种适用于测量压力值的传感器设备。其功能在于将压力转化为电信号,通常呈现为电压、电流或频率等输出形式,进而实现对压力的监测和控制。在机械臂的操作中,压力传感器位于前爪内侧,货物抓取中,压力传感器值升高,达到设定阈值时,代表货物被夹紧,从而引发机械臂的搬运动作。
1.3 控制系统介绍
(1) 决策控制。考虑到ROS 的使用, 运行于辅助机器上的英伟达(NVIDIA)电脑与板载NVIDIA 电脑组合成决策控制系统。NVIDIA 电脑主要负责获取底盘和传感器数据,并执行部分算法操作。而ROS 从机在经过配置后,通过主从方式与NVIDIA 电脑协同工作,在执行高级算法中扮演关键角色。
(2)运动控制。驱动自分拣车运动控制的主控制器为Arduino。基于PID 控制的稳健性和易实现性的特点,运动控制单元采用PID 闭环控制。在PID 调整之前,光电编码器可精确检测航程。
1.4 执行系统介绍
执行系统主要分为驱动系统和抓取系统两部分。驱动系统采用了4 个全向轮电机,每个电机连接1 个全向轮。这种设计利用4 个驱动器,每个驱动器控制1 个电机,可以实现物流车的全方位、多角度位移,从而提高了物流车在各种环境下的适应性。抓取系统由多个舵机组成,搭配压力传感器,从而实现稳定、准确的货物抓取。
2 软件系统设计
在ROS 的下位控制器上, 含有两个核心算法组件, 涵盖了机器视觉和卷积神经网络(convolutional neural networks,CNN)领域。这两个算法组件通过调用位于工作目录下相应的软件包以及手动修改相关设置文件,实现系统在货架区域的自主移动[1],并在下位控制器插件中插入显示屏进行可视化显示。OpenCV 內置了图像检测组件,可用于训练QR 码(二维码)检测模型。
3 主程序和算法
系统的主程序由轨迹识别模块和建图模块构成。在轨迹识别模块中,基于边缘路径距离的概念,精细调整分类权重,从而提高路径识别的精度和稳定性。建图模块能够充分利用 ROS 中的Gmapping 功能包,采用 Rao-Blackwellized 粒子滤波算法,结合激光、姿态数据,以高效地创建准确的二维网格地图。通过整合这一算法,系统能够在复杂环境中实现精确的地图构建和路径规划,为物流车的导航和定位提供稳定的支持。
建图完成后可以进行自主导航巡向目的地。需要调用的功能包是move_base [1]。它是一个 ROS 导航工具包,用于导航的配置和执行。
在 ROS 使用 TensorFlow 编写 Python 程序来建立神经网络时,通常会遵循以下步骤。
(1)导入必要的库和模块。包括 TensorFlow 和ROS 相关的库和模块。
(2) 定义 ResNet 的结构。通过 TensorFlow的应用程序编程接口(application programminginterface,API) 创建神经网络模型。ResNet 是一种经典的深度神经网络架构,通过残差连接解决了梯度消失问题[2]。系统根据需要选择合适的 ResNet版本,如 ResNet-50、ResNet-101 等。
(3)初始化网络参数。可以使用 TensorFlow 的内置函数或手动编写代码生成指定范围内的正态分布随机数,从而完成参数初始化。
(4)编写损失函数和优化器。在训练时,使用TensorFlow 提供的优化器来更新网络参数以最小化损失函数[3]。
(5)加载训练数据和标签。开始训练模型。通常可以使用ROS 提供的数据采集节点来获取传感器数据,并实时反馈给神经网络进行训练。
在神经网络系统启动后,确保ROS 从机与ROS 主机进行无缝通信集成,实现ROS 从机与自动驾驶车辆底盘的实时连接,以便获取与道路状况相关的环境数据。每一个经过标注的训练样本都会被分批发送到ROS 主机,并进行处理。这些经过标注的训练数据集会被有条不紊地引导穿过输入层,然后经过一系列复杂的卷积层、池化层和全连接层。
通过梯度下降算法不断优化卷积核和全连接层的权重,进行迭代调整以达到系统最佳性能水平。如果准确度与贝叶斯错误率之间存在重大偏差,则必须精细调整超参数并改进算法。各种优化算法如动量法、均方根传递(root mean squarepropagation,RMSprop) 算法和自适应矩估计(adaptive moment estimation,Adam)算法等,可以进一步优化和增强整体性能指标。
一旦神经网络的架构设计达到最优状态,其拓扑结构将呈现出极致的完备性,精心制作的权重文件将被顺利传输至NVIDIA 计算平台,准备部署,并进行精准、高效的推理任务。
通过紧密集成的中央处理器(central processingunit,CPU)加速计算引擎,神经网络可以对实时传入的环境数据进行快速的推理和预测。这种高度并行化的计算能力使得系统能够在毫秒级的时间内对复杂的道路情况做出响应,确保车辆在各种复杂交通场景下能够安全、准确地行驶。
在运行时,神经网络将实时接收来自车辆传感器的数据,并配合ROS 系统完成数据处理、预测和决策。这种端到端的集成体现了深度学习在自动驾驶系统中的关键作用,使得车辆能够快速、准确地做出决策,以确保行驶的安全性和效率。
在整个过程中,系统将一直保持密切的监控和反馈,实时检测和解决潜在的问题,确保系统的稳定性和可靠性。
4 实验测试
4.1 物品识别实验
基于ROS 的仓储物流自分拣车开发完成后,首先进行了识别环节的测试,确保摄像头识别部分能够稳定、准确地识别物品,从而为后续实验测试做准备。其次,在方形物块上写下不同字样,代表不同物品,然后进行识别测试。再次,为了确保识别精准度达标,本文还测试了更多物品种类和识别次数,以确保精准性。最后,记录并整理了整个识别测试过程中的数据情况,如表1 所示。通过对这些数据进行分析,能够评估摄像头识别部分的性能表现,及时发现问题并进行调整优化。这些数据对于后续实验测试的顺利进行至关重要,可以帮助系统不断改进物品识别的准确性和稳定性,从而提高自分拣车的整体运行效率。经过测试和数据分析,基于ROS 的仓储物流自分拣车的识别精准度达到了预期标准,可以顺利投入实际应用。
4.2 物流分拣实验
在识别精准度达到预期后,本文进行了物流分拣实验。在本实验中,研究人员给物块标注了名字,并使用盒子作为识别分拣区域。在实验过程中,摆放了不同距离的物品,这些距离对应的分拣区域位置也各不相同。研究发现自分拣车能够成功完成分拣任务,并且任务完成时间合理。图3、图4 分别为物品投放和识别分拣区域。
5 结论
本文设计的基于ROS 的仓储物流自分拣车旨在提高物流业务的效率和准确性。通过对上位机和下位机的合理配置,结合SLAM 技术、激光雷达路径规划,以及视觉识别技术,设计了智能化的自分拣车系统。该系统可广泛应用于电商仓库、物流中心等场景,为提升物流行业的自动化水平做出了贡献。
在设计和实验的过程中,自分拣车的性能受到硬件设备、软件算法和系统交互的综合影响。因此,针对仓储物流自分拣车,未来的研究方向可以集中在提升硬件设备的稳定性和灵活性、采用优化算法以提高识别和规划的精度,以及改进用户界面和交互体验等方面。此外,通过不断改进自分拣车的功能和性能,可以满足不断变化的市场需求,进而提升物流效率、降低成本,实现智能化管理,促进物流行业的进步和发展。
参考文献
[1] 王昱琪,熊绍托,齐岩松,等. 物流分拣机器人设计[J]. 科技风,2022(36):1-3.
[2] 章轲. 基于弱监督学习的细粒度图像分类算法研究[D]. 杭州:杭州电子科技大学,2022.
[3] 陈泽川. 潜在句子层级结构的自适应表征学习方法研究[D]. 广州:广东工业大学,2020.