首页 / 资讯中心 / 文章详情

ABB IRB260机器人码垛搬运工作站优化:节拍提升与轨迹稳定实战

ABB IRB260机器人码垛搬运工作站优化:节拍提升与轨迹稳定实战 ★ FEATURED ARTICLE
1. 项目缘起与整体设计思路1.1 为什么选IRB260做码垛搬运IRB260是ABB推出的一款中等负载六轴工业机器人额定负载12kg工作半径1.65m重复定位精度±0.04mm。这个参数放在码垛搬运场景里其实挺微妙的——它不像IRB660那种四轴码垛专用机那样“天生干这活”但胜在结构紧凑、占地小、价格相对友好特别适合中小型产线的末端码垛或者工序间搬运。我接手的这条线是做食品包装箱的码垛单箱重量8kg左右码垛高度1.8m节拍要求每小时不低于600箱。客户原本用的是人工码垛三个人轮班累不说效率还不稳定。选IRB260的原因很简单负载够用8kg箱子加夹具约2kg总负载10kg留了2kg余量臂展能覆盖1.8m×1.2m的托盘区域而且这台机器在二手市场上流通量大客户预算有限买新机不现实。但问题也来了。IRB260的腕部关节轴5和轴6在高速码垛时容易产生抖动尤其是做“抓-提-转-放”这种复合动作时末端轨迹会偏离。这不是机器人本身的问题而是码垛路径规划和加速度参数没调好。所以这个项目的核心不是“能不能码”而是“怎么码得稳、码得快、码得准”。1.2 工作站优化的三个核心目标整个优化围绕三个目标展开节拍提升、轨迹稳定、碰撞规避。节拍提升不是简单地把速度倍率拉满。IRB260在RobotStudio里的默认运动参数是给通用场景用的码垛这种“点到点”运动完全可以用更激进的加速度曲线。但激进的前提是轨迹不能抖抖了就会掉箱或者撞托盘。轨迹稳定的关键在于转弯区数据zone data的合理设置。很多人调RAPID程序时习惯用fine觉得精准但fine意味着机器人必须完全停止再走下一个点节拍直接崩掉。用z50、z100这些转弯区机器人可以“圆滑过渡”但圆滑过头就会切角末端偏离目标点。这个平衡点得靠实测找。碰撞规避则是另一个维度。码垛工作站里机器人本体、夹具、托盘、围栏、甚至旁边的输送线都是潜在碰撞体。RobotStudio的碰撞检测功能可以提前模拟但很多人只设了机器人跟托盘的碰撞忘了夹具跟围栏、线缆跟本体的干涉。我见过一个案例机器人码到第三层时夹具上的气管跟围栏立柱蹭上了气管磨破导致夹具失压箱子直接砸下来。1.3 仿真先行为什么必须在RobotStudio里跑通再上真机工业机器人调试有个铁律能在仿真里解决的问题绝不上真机试。真机试错的成本太高了——撞一次夹具可能几千块撞一次机器人本体可能几万块更别说停线造成的产能损失。RobotStudio的优势在于它跟ABB机器人控制器用的是同一套运动学算法仿真轨迹跟真机轨迹的偏差在毫米级。这意味着你在软件里看到的碰撞、超程、奇异点真机上大概率也会遇到。反过来你在软件里调好的节拍和轨迹下载到真机后基本能直接跑。但这个“基本能跑”有个前提你的仿真模型必须跟真机一致。我见过太多人直接从RobotStudio的库房里拖一个IRB260出来就开始编程结果真机上夹具重了0.5kg工具坐标系TCP偏了2mm整个轨迹全废。所以第一步永远是实测真机的工具重量、重心、TCP位置然后在RobotStudio里建一个自定义工具。2. 核心细节解析与实操要点2.1 工具坐标系标定别直接用默认值IRB260的默认工具坐标系tool0在法兰盘中心但实际夹具的TCP肯定不在那儿。码垛场景里TCP通常设在夹具的抓取中心点也就是箱子被夹住后的几何中心。标定TCP的方法有四种三点法、六点法、直接输入法、自动标定法。我推荐六点法虽然麻烦点但精度最高。具体操作是在机器人末端装一个尖点比如焊丝或者针尖然后手动示教六个不同姿态让尖点对准同一个固定参考点。RobotStudio的“工具坐标标定”功能会自动算出TCP相对于法兰盘的位置和姿态。注意标定时的六个姿态要尽量分散不要都在一个小范围内晃。姿态越分散解算出的TCP越准。我一般会让机器人做“前倾、后仰、左摆、右摆、上抬、下压”六个方向的动作。标定完还要设置工具重量和重心。这个数据直接影响机器人的动力学计算。如果工具重量设小了机器人会“以为”自己很轻加速时冲过头设大了又会畏手畏脚。IRB260的负载曲线显示12kg负载下重心偏移超过100mm时允许的加速度会大幅下降。所以夹具设计时尽量让重心靠近法兰盘别搞太长的悬臂。2.2 码垛路径规划从“逐点示教”到“算法生成”新手做码垛最容易犯的错是一个点一个点地示教。一个托盘码5层每层6箱就是30个点加上取件点、过渡点轻松上百个示教点。这活儿干一次能累死人而且换一个托盘规格就得重来。正确的做法是用RAPID写码垛算法让机器人自己算位置。核心思路是定义托盘的原点、箱子的长宽高、码垛层数和每层的排列方式然后用循环语句生成每个箱子的目标位置。! 码垛参数定义 CONST num BOX_L : 400; ! 箱子长度 mm CONST num BOX_W : 300; ! 箱子宽度 mm CONST num BOX_H : 200; ! 箱子高度 mm CONST num LAYERS : 5; ! 码垛层数 CONST num COLS : 3; ! 每层列数 CONST num ROWS : 2; ! 每层行数 ! 托盘原点左下角 CONST robtarget pallet_origin : [[500, 0, 200], [1,0,0,0], [0,0,0,0], [0,0,0,0]]; ! 生成码垛位置 FOR i FROM 1 TO LAYERS DO FOR j FROM 1 TO COLS DO FOR k FROM 1 TO ROWS DO ! 计算目标位置 target : Offs(pallet_origin, (j-1)*BOX_L, (k-1)*BOX_W, (i-1)*BOX_H); ! 执行抓取和放置 PickAndPlace(target); ENDFOR ENDFOR ENDFOR这段代码的关键是Offs函数它基于一个参考点做偏移。这样你只需要示教一个托盘原点剩下的位置全由算法生成。换托盘规格时改几个常量就行不用重新示教。但这里有个坑码垛层数多了之后机器人末端姿态会越来越别扭。因为箱子是垂直堆叠的机器人手腕得不断调整角度来保持夹具水平。IRB260的轴5和轴6在极限位置附近容易出奇异点表现为机器人突然“扭”一下轨迹完全失控。解决办法是在码垛路径中加入过渡点让机器人每码完一层就回到一个“安全姿态”再开始下一层。这个安全姿态通常是轴5接近0度、轴6接近0度的位置机器人最灵活。2.3 转弯区数据Zone的取舍快与准的博弈RAPID里的运动指令有两种终止方式fine和zone。fine表示机器人必须精确到达目标点速度降为零zone表示机器人可以“路过”目标点保持速度连续。码垛场景里取件点和放置点通常用fine因为要保证抓取和放置的精度。但中间的过渡点必须用zone否则机器人每到一个点就停一下节拍根本起不来。zone的大小用z加数字表示比如z10、z50、z100数字越大转弯区越大机器人越“圆滑”但偏离目标点也越远。这个偏离量不是随机的而是跟速度有关。速度越快偏离越大。我实测过一组数据IRB260在速度1000mm/s时z50的偏离量大约是5mmz100大约是12mmz200能到25mm。对于码垛来说5mm的偏离可以接受箱子之间有间隙但25mm就可能撞到旁边的箱子。所以我的经验是过渡点用z50到z100取件点和放置点用fine但放置点前一个点用z10做缓冲。这样既保证了放置精度又不会让机器人完全停下来。提示RobotStudio里可以显示转弯区的实际轨迹。在“仿真”选项卡里打开“轨迹显示”把“转弯区”勾上就能看到机器人实际走的路径跟示教点的偏差。2.4 碰撞检测别只盯着机器人跟托盘RobotStudio的碰撞检测功能很强大但默认设置只检测机器人本体跟场景物体的碰撞。实际上码垛工作站里需要检测的碰撞对至少有这些碰撞对风险检测设置机器人本体 vs 托盘码垛时撞托盘边缘必须开启夹具 vs 围栏旋转时夹具甩到围栏必须开启气管/线缆 vs 机器人本体线缆缠绕或拉扯建议开启机器人 vs 输送线取件时撞输送线必须开启箱子 vs 箱子放置时撞已码好的箱子建议开启设置方法是在RobotStudio的“碰撞”面板里把需要检测的对象拖到“碰撞对”列表里。注意不要把所有对象都设成互相检测那样计算量太大仿真会卡。只设真正有风险的碰撞对。我遇到过一个隐蔽的碰撞机器人码到第五层时轴3的肘部跟围栏顶部的横梁干涉了。因为围栏是后来加的建模时没注意高度。仿真时没开这个碰撞对真机上直接撞停机器人报了“碰撞检测”故障。后来在RobotStudio里把围栏横梁加进碰撞对重新跑了一遍发现确实会撞调整了码垛高度才解决。3. 实操过程与核心环节实现3.1 工作站搭建从零到能跑仿真第一步是导入机器人模型。RobotStudio的“机器人库”里有IRB260的标准模型直接拖进工作站就行。但要注意选对型号——IRB260有多个变种IRB260-12、IRB260-15等负载和臂展不一样。选错了后面的负载计算全错。第二步是导入或建模外围设备。托盘、输送线、围栏、夹具这些可以用RobotStudio自带的建模工具画也可以从外部导入STEP或IGES格式的3D模型。我一般用SolidWorks画好夹具和托盘导出STEP再导入RobotStudio。这样比在RobotStudio里画快得多而且尺寸准。第三步是设置工具坐标系。在“建模”选项卡里点“工具”新建一个工具输入标定好的TCP位置和姿态再输入工具重量和重心。然后把工具安装到机器人法兰盘上。第四步是创建工件坐标系。码垛的目标位置都是相对于托盘定义的所以要在托盘上建一个工件坐标系Work Object。通常设在托盘左下角Z轴朝上。这样码垛算法里的Offs函数就有参考点了。第五步是配置IO信号。夹具的开合、输送线的启停、安全门的开关这些都要跟机器人控制器做信号交互。RobotStudio里可以模拟这些信号用“仿真”选项卡里的“IO模拟器”就行。第六步是写RAPID程序。程序结构一般是主程序初始化→等待取件信号→移动到取件点→抓取→移动到放置点→放置→循环。中间穿插码垛算法和碰撞检测。3.2 节拍优化从600箱/小时到780箱/小时客户最初的要求是600箱/小时也就是每箱6秒。我第一版程序跑下来只有520箱/小时每箱6.9秒。差距在哪我用了RobotStudio的“周期时间分析”功能把每个动作的耗时列出来动作耗时秒占比等待取件信号0.34.3%移动到取件点1.217.4%抓取0.57.2%移动到放置点2.840.6%放置0.811.6%返回安全点1.318.8%大头在“移动到放置点”占了40.6%。这个动作是从取件点输送线末端到托盘上方距离大约1.5米中间经过两个过渡点。我检查了运动指令发现过渡点用的是fine机器人每到一个点就停一下。改成z100后这个动作的耗时从2.8秒降到1.9秒。第二个优化点是“返回安全点”。原本的程序是每码完一箱就回到一个固定的安全点再开始下一箱。这个安全点离取件点和放置点都比较远来回跑浪费 time。我改成动态安全点码完一箱后机器人直接在当前层的高度上平移回取件点上方不用降到最低。这样返回时间从1.3秒降到0.6秒。第三个优化点是取件和放置的并行。原本的程序是“抓取→移动→放置→返回→抓取”串行的。我改成“抓取→移动→放置”的同时输送线已经在送下一个箱子了。这样等待取件信号的时间从0.3秒降到0.1秒。三个优化加起来每箱耗时从6.9秒降到4.6秒折合782箱/小时超额完成目标。注意节拍优化不能牺牲轨迹稳定性。我试过把速度倍率拉到120%节拍确实快了但机器人抖动明显箱子在夹具里晃有掉箱风险。后来把速度倍率锁在100%靠路径优化来提节拍稳得多。3.3 轨迹稳定性调试解决末端抖动IRB260在高速码垛时末端抖动主要来自两个地方关节加速度突变和奇异点附近。关节加速度突变通常是因为运动指令的加速度参数设得太激进。RAPID里的AccSet指令可以限制加速度语法是AccSet acc, ramp其中acc是加速度百分比ramp是加速度变化率百分比。默认是AccSet 100, 100我改成AccSet 80, 50后抖动明显减小节拍只损失了3%。奇异点问题更麻烦。IRB260的奇异点主要出现在轴5接近0度时轴4和轴6会“对齐”导致机器人失去一个自由度。码垛时如果箱子是垂直堆叠的机器人手腕得不断调整角度来保持夹具水平很容易走到奇异点附近。解决办法是在码垛路径中避开奇异点。具体做法是不要让机器人从正上方垂直抓取和放置而是稍微倾斜一点角度。比如放置时夹具跟箱子表面成5度角这样轴5就不会接近0度。代价是箱子放置时会有轻微倾斜但码垛场景里箱子之间有间隙5度倾斜完全能接受。我还在RobotStudio里用了“奇异点检测”功能把机器人工作空间里的奇异点区域标出来然后调整码垛路径让机器人尽量不走那些区域。这个功能在“机器人”选项卡里的“奇异点”面板里。3.4 真机部署从仿真到实机的最后一公里仿真跑通后下载到真机。但别急着按启动先做这几件事第一核对工具坐标系。仿真里的TCP是理想值真机上可能有偏差。用真机的“工具标定”功能重新标一次把偏差补上。第二核对负载数据。仿真里的工具重量是估算的真机上用称重传感器实测一下。IRB260的负载参数在控制器的“运动”菜单里设置设错了机器人会报“负载超限”或者“动力学错误”。第三低速试跑。把速度倍率降到25%手动触发一次完整循环观察机器人有没有异常抖动、碰撞、超程。确认无误后再逐步提速。第四检查IO信号。仿真里的IO是模拟的真机上要确认夹具的开合信号、输送线的启停信号、安全门的开关信号都接对了。我见过一个案例夹具的开合信号接反了机器人以为夹住了其实没夹箱子直接掉下来。第五设置安全区域。IRB260的安全区域功能可以限制机器人的运动范围防止它跑到围栏外面。在控制器的“安全”菜单里设置通常设成托盘区域加0.5米余量。4. 常见问题与排查技巧实录4.1 码垛位置偏移从“点示教”到“算法生成”的坑问题现象码垛到第三层时箱子位置开始偏移越往上偏得越厉害。排查思路先检查码垛算法里的层高计算。我用的公式是(i-1)*BOX_H其中BOX_H是箱子高度。但实际箱子有压缩量每层实际高度比标称高度小2-3mm。码到第五层时累积误差能到10-15mm。解决方法在算法里加一个层高补偿系数。实测每层压缩量后把BOX_H改成BOX_H - 2。或者更精确的做法是每码完一层用机器人末端的传感器测一下实际高度动态调整下一层的目标位置。实操心得箱子压缩量跟箱子材质、码垛压力、环境湿度都有关系。纸箱在潮湿环境下压缩量更大。所以补偿系数不是固定的最好每批次校准一次。4.2 机器人报“奇异点”故障手腕姿态的调整问题现象机器人码到第四层时突然报“奇异点”故障停在半空不动了。排查思路用RobotStudio的“奇异点检测”功能回放故障时的姿态发现轴5角度接近0度轴4和轴6几乎对齐。解决方法调整码垛路径让机器人放置时手腕稍微倾斜。具体做法是在放置点的姿态里把轴5的角度从0度改成5度。这样机器人就不会走到奇异点。如果调整姿态后还是报奇异点可以在RAPID程序里加一个SingArea指令语法是SingArea \Wrist告诉控制器在奇异点附近用腕部奇异点的处理方式。但这个指令会降低轨迹精度慎用。4.3 节拍不达标从“周期时间分析”找瓶颈问题现象程序跑下来只有520箱/小时离目标600箱/小时差得远。排查思路用RobotStudio的“周期时间分析”功能把每个动作的耗时列出来找占比最大的动作。解决方法见3.2节的节拍优化。核心思路是把fine改成zone把串行动作改成并行把固定安全点改成动态安全点。常见问题速查表问题可能原因排查方法解决方法码垛位置偏移层高计算误差实测每层高度加层高补偿系数奇异点故障轴5接近0度RobotStudio奇异点检测调整手腕姿态或加SingArea节拍不达标过渡点用fine周期时间分析改用zone优化路径末端抖动加速度突变观察抖动时机降低AccSet参数碰撞故障碰撞对没设全检查碰撞对列表补充碰撞对夹具失压气管磨损检查气管走向调整气管固定方式IO信号错误信号接反手动触发IO核对信号定义4.4 仿真跟真机不一致模型偏差的排查问题现象仿真里跑得好好的下载到真机后轨迹偏了10mm。排查思路先核对工具坐标系。仿真里的TCP是标定值真机上可能有偏差。再核对负载数据。仿真里的工具重量是估算的真机上可能更重。解决方法在真机上重新标定TCP重新实测工具重量和重心。然后在RobotStudio里更新工具数据重新生成轨迹。如果偏差还是大检查机器人的零点标定。IRB260的零点在出厂时标定过但运输或碰撞后可能偏移。用真机的“零点标定”功能重新标一次。实操心得仿真跟真机的偏差通常在2-3mm以内超过5mm就有问题。偏差主要来自工具坐标系和负载数据这两个数据准了轨迹基本就准了。4.5 码垛效率的进一步提升从“单抓”到“双抓”如果节拍要求更高单抓已经到极限了可以考虑双抓。也就是夹具一次抓两个箱子码垛时一次放两个。这样节拍直接翻倍。但双抓对夹具设计要求高。两个箱子之间的间距必须精确否则放下去会撞。而且机器人负载翻倍IRB260的12kg负载可能不够。如果箱子是8kg双抓就是16kg超了。得换IRB460或者IRB660。如果负载够双抓的RAPID程序也不复杂。把PickAndPlace函数改成一次处理两个目标位置就行。但要注意两个箱子的放置顺序先放远的再放近的否则夹具会撞到已放好的箱子。5. 项目复盘与个人经验分享这个项目从仿真到真机跑通前后花了三周。其中仿真调试占了一周真机调试占了两周。真机调试的时间主要花在工具标定和节拍优化上。如果让我重新做一遍我会在仿真阶段就把工具坐标系和负载数据做得更准。当时为了赶进度工具重量是估算的结果真机上发现实际重量比估算多了0.8kg导致机器人动力学计算偏差轨迹有点飘。后来重新实测了重量和重心轨迹才稳下来。另一个体会是转弯区数据不能一刀切。我一开始把所有过渡点都设成z100结果有些点偏离太大箱子放下去歪了。后来改成“关键点用z50非关键点用z100”效果好很多。这个“关键”和“非关键”的判断得靠对码垛工艺的理解——比如箱子之间的间隙小那放置点附近的转弯区就得小间隙大就可以大一点。最后分享一个RobotStudio的小技巧用“信号分析器”监控IO信号。在“仿真”选项卡里打开“信号分析器”把夹具的开合信号、输送线的启停信号加进去就能看到信号的时间序列。这样能精确知道每个动作的等待时间对节拍优化很有帮助。我靠这个功能发现取件信号的等待时间比预期长了0.2秒调整输送线的停止位置后等待时间降到0.05秒。这个工作站后续还可以扩展。比如加一个视觉系统让机器人自动识别箱子的位置和姿态这样就不用精确示教取件点了。或者加一个力控传感器让机器人自适应抓取不同重量的箱子。IRB260的控制器支持这些扩展RobotStudio里也有对应的仿真模块。
阅读完成 · 觉得有帮助?
咨询建站