基于ROS的自动分拣机器人系统设计
2021-07-25孙小飞
孙小飞,余 涛,陈 锐
(重庆大学,重庆 400044)
0 引言
电子商务的迅猛发展,为仓储物流行业带来了新的需求和挑战[1]。中国快递行业的整体规模也在电子商务的迅猛发展下迅速壮大,2019年业务量已超过630亿件,如此巨大业务量的快递分拣工作也消耗着大量的人力物力资源。例如,在劳动密集型的配送中心,从事分拣作业的人员占配送人员总数的50%,花费在分拣作业上的时间占配送中心总工作时间的30%~40%[2],这种传统的人工手动模式效率低、错误率高;而立体仓库等自动分拣系统虽然分拣效率较高,但占地面积大,而且,一旦建成就不可改变,柔性和灵活性较差[3]。
针对目前仓储物流行业存在的问题,本文以中国机器人大赛“自动分拣”项目为依托,设计了一款具有自主导航、自动避障以及自动分拣功能的自动分拣机器人,并且,在实验过程中,针对DWA算法存在的问题进行了相应的优化。
1 自动分拣机器人的硬件系统设计
1.1 本体结构设计
本文中的自动分拣机器人本体结构由四驱麦克纳姆轮底盘、二自由度机械臂以及自动分拣仓库组成。其中,四驱麦克纳姆轮底盘采用四组1000线的光电式编码器直流减速电机(减速比1:27)驱动麦克纳姆轮的驱动形式,选用的编码器可以精确地测出机器人四个轮子的角速度数据,作为里程计数据的重要参考;电机固定板采用双层玻纤板结构,两层玻纤板靠铜柱支撑,中间放置电机驱动器、STM32控制板以及超声波传感器等元器件,其中两个超声波位于底盘前端,两个超声波位于底盘后端,固定板四周则由一圈较薄的玻纤板将其密封,防尘的同时,保证美观。二自由度机械臂的大臂由步进电机驱动,小臂由舵机驱动,小臂末端为舵机驱动的拨片,拨片上安有颜色传感器,对目标物体进行颜色识别。自动分拣仓库由滑道,分拣挡板、分拣通道组成,分拣挡板会根据颜色传感器的颜色反馈进行摆动,将目标颜色的球体分别放置于不同仓库中。另外,机器人的前端放置有深度相机Kinect,分拣仓库上端安装有激光雷达Rplidar,机械臂侧面为MinpiPC。图1为该机器人的结构示意图。
图1 机器人结构示意图
1.2 运动学模型
该机器人的移动底盘采用四驱麦克纳姆轮[4]驱动,该方式具有转弯半径小、运动灵活等特点。根据ROS下坐标系的规定,建立其运动学模型示意图:
图2 四驱麦克纳姆轮运动学模型示意图
对下位机上传的四个编码器数据进行速度解算得到机器人的速度:
其中ω1、ω2、ω3、ω4为四个轮子的角速度,Rω是轮毂半径,2α为横向两轮中心间距,2b为前后轮轴的中心距,麦克纳姆轮轮毂轴线和辊子轴线的夹角为α=45°;
若在初始时刻机器人坐标系(xroryr)与里程计坐标系(xoooyo)重合,则利用累加的方式进行机器人定位:
式(3)采用了近似的计算方法,其假定在采样间隔tΔt内速度是恒定的,因此tΔt应该尽可能小,计算精度才会越高。
但是,由于麦克纳姆轮运动过程中,打滑现象严重,所以会造成机器人在运动,尤其是转弯时,根据编码器数据计算得到的里程计会存在较大误差,为了保证里程计的精确性,采用下面两种方法进行优化:
用IMU的yaw轴角速度替换由四个编码器数据计算得到的角速度值;
对机器人直线和自转运动进行里程计精度测量,在相应的里程计算公式中增加校正系数:
得到新的里程计计算公式:
1.3 硬件控制系统
自动分拣机器人硬件系统由上位机与下位机两部分组成。上位机为MiniPC,装载Ubuntu 16.04+ROS kinetic,其与深度相机Kinect、激光雷达RplidarA2、惯性传感器Razor_imu_9dof等通过USB串口直接相连,进行环境信息以及自身位姿数据获取。下位机为STM32,其与直流电机驱动器RoboModule之间通过CAN通信,实现对四个底盘电机的驱动;与步进电机驱动器TB6600直连控制大臂步进电机动作;与舵机驱动器PCA9625之间通过IIC通信,实现对多个舵机的控制;颜色传感器与STM32直连,通过IIC通信,获取目标物体的RGB值;超声波传感器与STM32直连,获取距离数据。上位机与下位机通过串口线连接,实现数据通信。该自动分拣机器人的硬件框架如图3所示。
图3 硬件框架
2 自动分拣机器人的软件系统设计
自动分拣机器人的软件系统包括上位机导航控制系统和下位机底层驱动控制系统,其中,上位机基于ROS实现了机器人的自主导航功能[5],下位机通过STM32实现对底层传感器的驱动控制,两者通过串口通信实现数据传输。图4为上位机与下位机的通信框图。
图4 通信框图
2.1 下位机底层驱动控制系统设计
机器人的下位机底层驱动系统主要通过STM32实现电机的底层驱动以及颜色传感器、超声波传感器数据获取。STM32通过与超声波直连,获取机器人前后500mm距离范围内的障碍物信息,并通过串口将距离数据上传到上位机,进行避障、距离矫正;同时,下位机根据上位机下发的速度数据控制底盘运动,并将机器人的实际运动速度上传给上位机;当机器人运动到目标位置后,上位机对目标点标志位进行赋值,下发给下位机,下位机根据标志位的数据控制机械臂、自动分拣仓库动作,实现对目标物体的分拣、放置工作;当工作完成后,下位机对工作完成标志位进行赋值,并通过串口上传到上位机,发布相应目标点任务。机器人下位机底层驱动控制系统框架如图5所示。
图5 下位机底层驱动控制系统框架
2.2 上位机导航控制系统设计
机器人的上位机导航控制系统基于ROS实现机器人的自主导航[6,7]功能。上位机利用下位机上传的编码器数据以及IMU的yaw轴角速度数据进行里程计计算,并结合Rplidar、Kinect采集的外部环境进行信息,利用Gmapping算法进行建图,利用AMCL算法实现定位。另外,上位机根据下位机上传的工作完成标志位的数据发布相应的目标点任务,利用A*算法进行全局路径规划避开所有障碍物,利用DWA算法在全局路径的基础上,产生一系列的速度下发到下位机,控制底盘运动。当机器人运动到指定位置后,上位机利用IMU的yaw轴姿态数据结合超声波数据进行姿态矫正;矫正完成后,上位机对目标点标志位进行赋值,下发给下位机,完成相应的抓取、放置工作。机器人上位机导航控制系统框架如图6所示。
图6 上位机导航控制系统控制框架
2.3 机器人逻辑控制框架
自动分拣机器人的主要功能是自主完成多点导航以及目标物体的自动分拣放置工作。首先,启动机器人,机器人向抓取区运动,当运动到目标位置后,会进行姿态矫正,保证抓取的可靠性;然后,机械臂摆动到工作状态,通过颜色传感器对目标物体进行颜色识别,分选到指定仓库中;接着,机器人先后运动到红、蓝色仓库区,打开自动分拣仓库门,将不同颜色的目标物体放置到指定仓库;最后,机器人回到初始位置。
机器人的逻辑控制框架如图7所示。
图7 逻辑控制框架
3 DWA算法优化
由于该机器人在工作区域内多处需要拐弯、掉头,所以减少拐弯、掉头时行走的路径,从而缩短机器人的运行时间,对提高机器人的工作效率很有必要。同时,工作场地上存在着各种静态、动态障碍物,所以,良好的避障效果也十分重要。该自动分拣机器人的路径规划算法采用A*和DWA算法,其中,DWA算法具有较好的实时性,但是避障效果较差,因此,针对机器人的工作需求以及DWA算法存在的问题,对DWA算法做了相应的优化。
sim_period越长,速度越大,规划出的路径越长,越能更早的避开障碍物,但是路径末端端点偏离全局路径的方位差越大。当算法对局部路径与全局路径进行贴合程度打分时,会以局部路径的末端端点为参考,如果选择的局部路径与全局路径末端端点位姿偏差越大,机器人在掉头、拐弯或者避障时,需要运动一个比较大的轨迹才能调整到局部路径末端对应的全局路径的位姿,从而,也增加了机器人的运动时间。
为了得到最优的整体效果,最终采用增加仿真时间,裁剪局部路径的方式对DWA算法进行优化。如图8所示,适当增加仿真时间sim_period,进而增加DWA算法规划出的路径长度,当算法进行避障评价时,可以更早的做出避障判断;当对局部路径与全局路径的贴合程度进行评价时,对路径进行裁剪,去掉局部路径末端偏离全局路径的部分,保证局部路径和全局路径的贴合程度,同时,充分发挥麦克纳姆轮的运动特性,使机器人在转弯、掉头、避障时倾向于并且可以通过自转的方式调整机器人位姿,从而减少运行路径,缩短运行时间,优化避障效果。
图8 路径选择评价图
4 实验
自动分拣机器人的主要功能是自主完成多点导航以及目标物体的自动分拣放置工作。并且,根据DWA算法原理以及麦克纳姆轮的运动特性,对DWA算法进行了优化。
4.1 多点导航实验
研究过程中,根据工作需求,提前设置好目标点坐标,自动分拣机器人按顺序从启动区依次运动到蓝(红)色抓取区、蓝(红)色仓库区、红(蓝)色仓库区、启动区,并且完成相应的抓取分拣工作、蓝(红)球放置工作、红(蓝)球放置工作。机器人在工作过程中的工作状态图如下:
图9 工作状态图
4.2 分层避障实验
机器人工作环境中存在着各种静态、动态障碍物,并且障碍物的高度、位置各不相同,所以传感器检测障碍物时,需要有较大的检测范围。因此,该机器人障碍物检测传感器采用分层布置方式。其中,底盘上的超声波通过控制逻辑,进行高度较低、距离较近物体避障;Rplidar、Kinect将检测到的障碍物投到代价地图Costmap上进行避障,其中,Rplidar进行高度较高物体避障,Kinect进行超生波以及Rplidar中间层的障碍物避障,从而保证了机器人的避障能力。图10为机器人障碍物检测区域分布图,其中,深色三角区域为超声波检测范围,深色矩形区域为Kinect检测范围,Rplidar检测范围为高度为350mm的360°圆周范围,图中未标出。图11为Kinect与Rplidar的避障效果图,其中,左图为Kinect拍摄图像,右图为Kinect图像中高、低障碍物在Costmap中投影,并且,机器人规划出的路径完全避开了障碍物。
图10 障碍物检测区域分布图
图11 避障效果图
4.3 DWA优化效果实验
4.3.1 掉头实验
本研究选取了不同的sin_period,对算法优化前后,10次试验中,机器人旋转180°运行总时间以及相对起点位置(该坐标系为右手笛卡尔坐标系,并且,机器人正前方为X轴正方向),机器人在X轴、Y轴方向的偏移量进行记录,求取相应平均值,实验结果如图12、图13所示。由于优化后的算法对局部路径进行了裁剪,使局部路径与全局路径更加贴合,机器人在掉头、拐弯时,倾向于通过自转的方式进行,所以行走的路径更短,消耗时间更少。当选取sim_period=2.5时,算法优化后,机器人掉头完成时的Y轴偏移量是优化前Y轴偏移量的51%,优化后的运行时间也比优化前缩短了30%,并且,随着sim_period的增加,优化后的算法仍能使机器人保持很好的掉头效果。由此可见,优化后的算法可以使机器人具有更好的掉头效果。
图12 掉头运行时间消耗图
图13 掉头运动偏移量
4.3.2 避障实验
本研究在机器人正前方1 m处设置一长宽高为64×23×42cm 的长方体障碍物,将机器人目标点设置在机器人正前方2.5m处,选取不同的sim_period,运行程序,记录10次试验中,机器人越过障碍物运行的时间。由于优化后算法规划的局部路径与全局路径有更好的贴合性,使机器人在避障时行走路径紧贴全局路径(全局路径已避开所有障碍物),因此可以更好的避开障碍物。另外,即使障碍物离机器人很近,或者是突然出现的障碍物,机器人也可以通过自转的方式,调整到避开障碍物的姿态,从而减少机器人在障碍物前犹豫、卡顿、减速寻找路径的时间。如图14中实验结果,在sim_period所有的选取值下,算法优化后,机器人避障消耗的时间都少于算法优化前,并且在实验过程中,算法优化后,机器人避障成功率更高。由此可见,算法优化后,机器人具有更好的避障效果。
图14 机器人避障时间消耗图
5 结语
该自动分拣机器人具有自主导航、自动避障以及自动分拣功能。设置好多个目标点,机器人可以依次运动到相应坐标点,自主完成物体的抓取、分拣、放置工作。另外,该机器人自主导航功能是基于ROS实现的,具有很强的可移植性,可以快速移植到各种轮式自主导航底盘,同时,只需根据工作需求,更换相应的机械臂、抓手,就可以完成应用于不同场景的自动分拣机器人系统设计。该研究还对DWA算法进行了优化,提高了机器人的运动效率以及避障效果。后续将会结合G2O[10]图优化算法对DWA算法进行优化,进一步提高机器人的动态避障效果。