您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 2017搬运赛技术培训
机器人自主搬运赛技术培训2017.10搬运竞赛三要素•结构设计•行驶算法•场地策略搬运竞赛三要素•结构设计——决定能不能通过障碍,完成规定任务•行驶算法——决定能不能顺利通过障碍并顺利完成任务•场地策略——决定能不能取得好名次一、场地与策略每次搬运1个物料1.单次完成度高2.总体完成度低3.时间长4.结构设计简单5.程序设计复杂每次搬运2个物料1.单次完成度较高2.总体完成度一般3.时间较长4.结构设计简单5.程序设计复杂每次搬运3个物料1.单次完成度一般2.总体完成度较高3.时间较短4.结构设计一般5.程序设计一般一次全部搬运完成1.单次完成度低2.总体完成度较高3.时间短4.结构设计难5.程序设计简单二、机构设计技术要点底盘机构夹持机构装载机构地形分析地形简单,特殊地形为障碍物挡板和一个斜坡窄桥。对底盘结构设计要求较低,对车身尺寸和整个车身的重心设计要求高。底盘机构移动速度快运动性能稳定攀爬稳定性一般移动速度慢运动性能稳定攀爬稳定性一般移动速度慢运动性能稳定攀爬稳定强移动速度快运动性能稳定攀爬稳定性强夹持机构齿轮组夹持器连杆组夹持器齿轮连杆组夹持器自由度分析成功搬运物料:前伸(后退),夹取,拿起(放下),翻转,转移5自由度:每个动作都依靠机械臂执行。4自由度:前伸(后退)通过底盘执行,其他动作通过机械臂完成。3自由度:前伸(后退)、转移通过底盘执行,其他动作通过机械臂完成。2自由度:前伸(后退)、转移通过底盘地形,夹取和拿放的动共用一个自由度,翻转一个自由度。装载机构平板类:采用探索者圆形件与平板件简单组装即可。结构非常简单,但体积跟物料数量正相关,小车行进过程中物料稳定性较差。箱体类:采用探索者金属机械零件简单组装即可。结构简单,物料运输过程中稳定性较好,但所占空间大,增加车体重量。如何避障传感器选择:近红外、超声测距近红外:触发范围正常光线下30cm左右,识别距离不可调,根据延迟调节转向。超声测距:触发范围3m左右,触发距离可调,根据距离或者延迟调节转向。问题——1、爬不上去•(1)比赛为EVA材质的障碍,打滑问题基本不存在。•(2)提高小车动力,我们可以增加电机来做到动力的提升。或设计传动机构使每个轮子都能输出转矩。•(3)提高小车的速度,我们可以增加轮胎的直径来提高速度,比如用履带缠绕轮胎或者使用大履带轮胎。或设计传动机构减小传动比。•(4)调整结构设计,使重心靠前。或设计一个能够改变重心位置的机构。分析问题——2、走不直•观察:•(1)是不是因为轮胎在空间上的不对称导致各个轮胎的旋转中心轴交叉以至于小车不能走直线?•(2)是不是因为每个电机的转速不一致,导致小车不能走直线?•(3)是不是因为轮胎的大小不一致,导致小车不能走直线?解决问题——2、走不直•解决方案:•(1)调整结构:支架组装拧紧、联轴器和圆周舵机的输出头拧紧、更换使用长久导致零件磨损变形的零件、竖直方向不对称可以增加纸张、塑料带等不超出比赛规则的薄片。•(2)调整电机转速,可以通过程序微调。•(3)如果小车始终向某侧偏斜,可以尝试调换左右两边的部分机构,以平衡误差。解决问题——3、转弯时直流电机卡顿•主要原因是用数字量控制直流电机时,直接接的VIN电压,也就是电池实时电压,基本是当时的最大电压;而用模拟量控制时,电压值只是在255时才能达到最大,其余的值电压都比较小。•如果你的底盘轴距较长(前后轮之间的距离),或转弯时阻力较大,则在转向时就会需要一个较大的扭矩。如果同时你模拟值给的比较小,就会造成电机力量不够。这就是出现卡顿的原因。一旦电机堵转,电机重新启动时,用的是较低的那个电压,加速度不足,造成启动也比较慢,甚至启动不了。•所以如果要改进,要么是用数字量,加大电压,要么改结构,想办法转弯时缩短轴距,或者减小转弯阻力。1.调整结构:铰接位置注意轴套和小垫片等零件,螺丝螺母拧紧。查看层次是否正确。2.夹持角度调整:角度过小,夹持力满足,但是可能让舵机堵转,舵机堵转会产生抖动,会影响夹持效果。2.在夹持器上增加海绵(软质弹性物质),增加摩擦和缓冲。解决问题——4、抓取时物料容易掉分析问题——5、运输时物料容易掉1.车在行进过程中难免抖动,所以原本放置好的物料可能会产生位置便宜,甚至物料丢失。2.放置物料时位置偏移较大,行进过程中偏移掉落。解决问题——5、运输时物料容易掉1.选用箱体载物台2.增加限位装置:在载物台周围用探索者机械零件装一个矮的边框,或者在载物台周围装螺丝。三、电路与程序设计技术要点基本技能•数字量输入digitalread()•数字量输出digitalwrite()•模拟量输入analogread()•模拟量输出analogwrite()•条件语句•条件嵌套语句•有限状态机switch语句1、条件语句单传感器传感器策略伪码1向右前行驶if(1)RS;0向左前行驶if(0)LS;小车轨迹传感器1、条件语句穷举传感器1传感器2穷举法伪码11if(1,1)S;10if(1,0)L;01if(0,1)R;00if(0,1)S;小车传感器1轨迹传感器21、条件语句(例程)voidloop(){if((!(digitalRead(14))&&digitalRead(16))){left();}if((digitalRead(14)&&!(digitalRead(16)))){right();}if((!(digitalRead(14))&&!(digitalRead(16)))){str();}if((digitalRead(14)&&digitalRead(16))){str();}}1、条件语句穷举(优化)i=digitalRead(14);j=digitalRead(16);voidloop(){if(i==1&&j==0){left();}if(i==0&&j==1)){right();}if(i==1&&j==1){str();}if(i==0&&j==0){str();}}2、条件语句嵌套传感器1传感器2穷举法伪码嵌套法伪码11if(1,1)S;a=传感器1取值;b=传感器2取值;if(a==b)S;00if(1,0)S;01if(0,1)R;elseif(a==0&&b==1)R;10if(1,0)L;elseL;小车传感器1轨迹传感器22、条件语句嵌套(写法2)传感器1传感器2穷举法伪码嵌套法伪码01if(0,1)R;a=传感器1取值b=传感器2取值if(a==0&&b==1)R;10if(1,0)L;elseif(a==1&&b==0)L;11if(1,1)F;elseF;00if(1,0)F;小车传感器1轨迹传感器22、条件语句嵌套voidloop(){if((!(digitalRead(14))&&digitalRead(16))){left();}else{if((digitalRead(14)&&!(digitalRead(16)))){right();}else{str();}}}3、有限状态机有限状态机把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件。由于有限状态机有有限个状态,因此可以在实际中实现。有限状态机可以广泛的应用于机器人多个传感器触发组合状态的判断,大大提高检测效率。有限状态机一般是用Switch语句来实现。如:switch(s){case1:{动作1;}break;case2:{动作2;}break;case3:{动作3;}break;case4:Act_Stop();break;default:;break;}这段语句实现的关键,就是把传感器的触发状态与case对应起来,即能够把几个传感器的触发状态用数字表示出来。方法并不难,下面,我们把每组传感器返回值看成一个二进制数值传感器2传感器1结果十进制111131010201011000003、有限状态机于是,只要我们知道了传感器们的触发状态,也就知道了序号;知道了序号,也就知道了传感器们的触发状态。用这个序号去写switch语句,再合适不过了。下面我们要做的是,用一种算法,让机器人能够返回自己接收到的传感器组合值的二进制数据。3、有限状态机我们可以使用以下算法来实现:首先设置一个变量s,这个s的结果,将是传感器组的二进制状态序号。我们还需要用到一个重要的运算符“”,这个运算符的意义是:左移如:1n,意思是1向左移动n位,空出来的数位用0填补。如:11,结果就是10;12,结果就是100;1011,结果就是1010只要让机器人依次返回各个传感器的状态数值,最早获取的,放在最右;第二获得的,左移1位,第三获得的,左移2位,……,以此类推。如两个传感器均触发:先获得1号的数值(真)并左移零位,得再获得2号的数值(真)并左移一位,得两数值取“或”,即可得110110数学问题解决了,很容易就可以转化为程序语句:s=0;for(i=0;i2;i++)//设此例中有2个传感器{s=s|(传感器i的采值i);//获得传感器值,移位,或运算}于是switch语句可以写为:switch(s){case0x00:{动作0;}break;//序号也可以写作16进制数值case0x01:{动作1;}break;case0x02:{动作2;}break;case0x03:{动作3;}break;default:;break;}下面我们以一个”三传感器循迹小车”程序为例,再来巩固一遍:321右左传感器触发情况、小车行驶状态、对应行为策略表:传感器3传感器2传感器1序号小车状态动作0000都没触发,可能是跑偏了停0011小车左偏向右调整0102小车正中前进0113在黑线处小车左偏向右调整1004小车右偏向左调整1015在此跑道上不可能无1106在黑线处小车右偏向左调整1117遇到横线前进伪码如下:s=0;for(i=0;i3;i++){s=s|(Input(i+1,1)i);}switch(s){case0x00:停;break;case0x01:{R;}break;case0x02:{F;}break;case0x03:{R;}break;case0x04:{L;}break;case0x06:{L;}break;case0x07:{F;}break;default:;break;}循迹相关问题•现象1:程序没有问题,但小车无视黑线,完全没有循线。•分析问题:小车无视黑线,可能原因是:①传感器坏了;②传感器安装位置不合适,导致传感器没有触发;③程序中直行时delay时间太长导致没能及时检测到传感器状态;•解决办法:(1)我们可以先单独测试一下传感器是否损坏,用串口测值或点亮LED的方法进行测试,如果确认传感器坏了,更换新传感器。(2)如果传感器是好的那么可能是传感器的安装位置不合适,先不要将传感器固定在机器人身上,而用手持的方法,利用用串口测值或点亮LED的方法进行测试,找到合适的安装位置,再进行安装。(3)缩短delay()时长,提高检测频率。循迹相关问题•现象2:循线时,传感器检测到黑线,但小车发生“蛇行”;或紧接着识别黑线不灵。•分析问题:(1)可能是小车两侧轮子差速过大,导致转弯半径太小,从而“蛇行”;(2)可能是转弯动作delay时间过长,导致下次识别不灵。(3)可能是小车速度太快,外加程序执行效率不高,导致未能识别到黑线。•解决办法:•(1)转弯时减小电机转动差速,或用转向机构替代差速转向;•(2)缩短delay时间,或不使用delay;•(3)更换转速慢的电机或提高程序执行效率。循迹相关问题•现象3:小车通过斜坡障碍时,传感器误触发。•分析问题:误触发的原因可能是:(1)遇到障碍,轮子被抬起,车身倾斜,传感器与地面间的距离变化,导致传感器误触发。•解决办法:(1)调整delay的时间长度,尽量降低误触发引起的动作影响。(2)通过对横线计数,为窄桥和楼梯分别安排合适的delay时长。循迹直角转弯问题•在直角位置转弯时,一般的转弯动作容易偏离。需要左右反转,原地转向。•但循迹时原地转向的动作会造成行进速度变慢,因此
本文标题:2017搬运赛技术培训
链接地址:https://www.777doc.com/doc-955980 .html