1、机器人自主搬运赛技术培训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
2、.程序设计简单,二、机构设计技术要点,底盘机构夹持机构装载机构,地形分析,地形简单,特殊地形为障碍物挡板和一个斜坡窄桥。对底盘结构设计要求较低,对车身尺寸和整个车身的重心设计要求高。,底盘机构,移动速度快运动性能稳定攀爬稳定性一般,移动速度慢运动性能稳定攀爬稳定性一般,移动速度慢运动性能稳定攀爬稳定强,移动速度快运动性能稳定攀爬稳定性强,夹持机构,齿轮组夹持器连杆组夹持器齿轮连杆组夹持器,自由度分析,成功搬运物料:前伸(后退),夹取,拿起(放下),翻转,转移5自由度:每个动作都依靠机械臂执行。4自由度:前伸(后退)通过底盘执行,其他动作通过机械臂完成。3自由度:前伸(后退)、转移通过底盘执行,
3、其他动作通过机械臂完成。2自由度:前伸(后退)、转移通过底盘地形,夹取和拿放的动共用一个自由度,翻转一个自由度。,装载机构,平板类:采用探索者圆形件与平板件简单组装即可。结构非常简单,但体积跟物料数量正相关,小车行进过程中物料稳定性较差。箱体类:采用探索者金属机械零件简单组装即可。结构简单,物料运输过程中稳定性较好,但所占空间大,增加车体重量。,如何避障,传感器选择:近红外、超声测距近红外:触发范围正常光线下30cm左右,识别距离不可调,根据延迟调节转向。超声测距:触发范围3m左右,触发距离可调,根据距离或者延迟调节转向。,问题1、爬不上去,(1)比赛为EVA材质的障碍,打滑问题基本不存在。(
4、2)提高小车动力,我们可以增加电机来做到动力的提升。或设计传动机构使每个轮子都能输出转矩。(3)提高小车的速度,我们可以增加轮胎的直径来提高速度,比如用履带缠绕轮胎或者使用大履带轮胎。或设计传动机构减小传动比。(4)调整结构设计,使重心靠前。或设计一个能够改变重心位置的机构。,分析问题2、走不直,观察:(1)是不是因为轮胎在空间上的不对称导致各个轮胎的旋转中心轴交叉以至于小车不能走直线?(2)是不是因为每个电机的转速不一致,导致小车不能走直线?(3)是不是因为轮胎的大小不一致,导致小车不能走直线?,解决问题2、走不直,解决方案:(1)调整结构:支架组装拧紧、联轴器和圆周舵机的输出头拧紧、更换使
5、用长久导致零件磨损变形的零件、竖直方向不对称可以增加纸张、塑料带等不超出比赛规则的薄片。(2)调整电机转速,可以通过程序微调。(3)如果小车始终向某侧偏斜,可以尝试调换左右两边的部分机构,以平衡误差。,解决问题3、转弯时直流电机卡顿,主要原因是用数字量控制直流电机时,直接接的VIN电压,也就是电池实时电压,基本是当时的最大电压;而用模拟量控制时,电压值只是在255时才能达到最大,其余的值电压都比较小。如果你的底盘轴距较长(前后轮之间的距离),或转弯时阻力较大,则在转向时就会需要一个较大的扭矩。如果同时你模拟值给的比较小,就会造成电机力量不够。这就是出现卡顿的原因。一旦电机堵转,电机重新启动时,
6、用的是较低的那个电压,加速度不足,造成启动也比较慢,甚至启动不了。所以如果要改进,要么是用数字量,加大电压,要么改结构,想办法转弯时缩短轴距,或者减小转弯阻力。,1.调整结构:铰接位置注意轴套和小垫片等零件,螺丝螺母拧紧。查看层次是否正确。2.夹持角度调整:角度过小,夹持力满足,但是可能让舵机堵转,舵机堵转会产生抖动,会影响夹持效果。2.在夹持器上增加海绵(软质弹性物质),增加摩擦和缓冲。,解决问题4、抓取时物料容易掉,分析问题5、运输时物料容易掉,1.车在行进过程中难免抖动,所以原本放置好的物料可能会产生位置便宜,甚至物料丢失。2.放置物料时位置偏移较大,行进过程中偏移掉落。,解决问题5、运
7、输时物料容易掉,1.选用箱体载物台2.增加限位装置:在载物台周围用探索者机械零件装一个矮的边框,或者在载物台周围装螺丝。,三、电路与程序设计技术要点,基本技能,数字量输入 digitalread()数字量输出 digitalwrite()模拟量输入 analogread()模拟量输出 analogwrite()条件语句条件嵌套语句有限状态机switch语句,1、条件语句,1、条件语句穷举,1、条件语句(例程),void loop() if ( !( digitalRead(14) ) ,1、条件语句穷举(优化),i=digitalRead(14);j=digitalRead(16);void
8、loop() if (i=1 ,2、条件语句嵌套,2、条件语句嵌套(写法2),2、条件语句嵌套,void loop() if ( !( digitalRead(14) ) ,3、有限状态机,有限状态机把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件。由于有限状态机有有限个状态,因此可以在实际中实现。有限状态机可以广泛的应用于机器人多个传感器触发组合状态的判断,大大提高检测效率。,有限状态机一般是用Switch语句来实现。如:switch(s)case1:动作1;break;case2:动作2;break;case3:动作3;break;case4:Act_Stop();break;d
9、efault:;break;这段语句实现的关键,就是把传感器的触发状态与case对应起来,即能够把几个传感器的触发状态用数字表示出来。,方法并不难,下面,我们把每组传感器返回值看成一个二进制数值,3、有限状态机,于是,只要我们知道了传感器们的触发状态,也就知道了序号;知道了序号,也就知道了传感器们的触发状态。用这个序号去写switch语句,再合适不过了。下面我们要做的是,用一种算法,让机器人能够返回自己接收到的传感器组合值的二进制数据。,3、有限状态机,我们可以使用以下算法来实现:,首先设置一个变量s,这个s的结果,将是传感器组的二进制状态序号。我们还需要用到一个重要的运算符“”,这个运算符的
10、意义是:左移如:1n,意思是1向左移动n位,空出来的数位用0填补。如:11,结果就是10;12,结果就是100;1011,结果就是1010只要让机器人依次返回各个传感器的状态数值,最早获取的,放在最右;第二获得的,左移1位,第三获得的,左移2位,以此类推。如两个传感器均触发:先获得1号的数值(真)并左移零位,得再获得2号的数值(真)并左移一位,得两数值取“或”,即可得11,数学问题解决了,很容易就可以转化为程序语句:s=0;for(i=0;i2;i+) /设此例中有2个传感器s=s|(传感器i的采值i);/获得传感器值,移位,或运算,于是switch语句可以写为:switch(s) case
11、0x00 : 动作0;break; /序号也可以写作16进制数值case 0x01 : 动作1;break;case 0x02 : 动作2;break;case 0x03 : 动作3;break;default:;break;,下面我们以一个”三传感器循迹小车”程序为例,再来巩固一遍:,右,左,传感器触发情况、小车行驶状态、对应行为策略表:,伪码如下:s=0;for(i=0;i3;i+)s=s|(Input(i+1,1)i);switch(s) case 0x00 : 停;break;case 0x01 : R;break;case 0x02 : F;break;case 0x03 : R;b
12、reak;case 0x04 : L;break;case 0x06 : L;break;case 0x07 : F;break;default:;break;,循迹相关问题,现象1:程序没有问题,但小车无视黑线,完全没有循线。分析问题:小车无视黑线,可能原因是:传感器坏了;传感器安装位置不合适,导致传感器没有触发;程序中直行时delay时间太长导致没能及时检测到传感器状态;,解决办法:(1)我们可以先单独测试一下传感器是否损坏,用串口测值或点亮LED的方法进行测试,如果确认传感器坏了,更换新传感器。(2)如果传感器是好的那么可能是传感器的安装位置不合适,先不要将传感器固定在机器人身上,而用手
13、持的方法,利用用串口测值或点亮LED的方法进行测试,找到合适的安装位置,再进行安装。(3)缩短delay()时长,提高检测频率。,循迹相关问题,现象2:循线时,传感器检测到黑线,但小车发生“蛇行”;或紧接着识别黑线不灵。分析问题:(1)可能是小车两侧轮子差速过大,导致转弯半径太小,从而“蛇行”;(2)可能是转弯动作delay时间过长,导致下次识别不灵。(3)可能是小车速度太快,外加程序执行效率不高,导致未能识别到黑线。解决办法:(1)转弯时减小电机转动差速,或用转向机构替代差速转向;(2)缩短delay时间,或不使用delay;(3)更换转速慢的电机或提高程序执行效率。,循迹相关问题,现象3:
14、小车通过斜坡障碍时,传感器误触发。分析问题:误触发的原因可能是:(1)遇到障碍,轮子被抬起,车身倾斜,传感器与地面间的距离变化,导致传感器误触发。解决办法:(1)调整delay的时间长度,尽量降低误触发引起的动作影响。(2)通过对横线计数,为窄桥和楼梯分别安排合适的delay时长。,循迹直角转弯问题,在直角位置转弯时,一般的转弯动作容易偏离。需要左右反转,原地转向。但循迹时原地转向的动作会造成行进速度变慢,因此,最好是遇到路口再触发一个短暂的原地转向动作。,传感器触发实时监测问题,机器人在工作过程中出现异常,传感器是否正常触发了?这是困扰许多参赛队的问题。我们平时学习和做实验时,往往利用串口监
15、视器监测传感器的触发情况,但是这总是离不开电脑,如何更方便的在机器人工作过程中监测呢?其实利用LED点阵上的亮点即可监测。,如何增加传感器接口?,ARM7主控板,Bigfish扩展板都只有4个传感器接口,对于一些参赛队来说,这个数量可能不够。那么怎么增加传感器接口呢?对于ARM7主控板来说,只有一个办法,就是把两个ARM7主控板通过串口串联在一起,做成主从结构,从而增加传感器口。但是这种方法传输数据速度较慢,使用时需要注意。,如何增加传感器接口?,对于Bigfish扩展板来说,首先可以利用背后的跳线帽,将舵机接口更改为数字传感器接口。,如何增加传感器接口?,还有能扩展出更多传感器口的方法。Ba
16、sra主控板总共有20个I/O口,理论上能同时连接的传感器上限是20个。,驱动数字量传感器和简单的模拟量传感器,只需要3根针:GND、VCC、信号针(D口或A口)。因此我们可以把红色接口的两个信号针,用杜邦线单独引出来用。或者从板子上下的横排座坞引出;或者从下方的两个25座坞引出。这种灵活的做法,可以最大限度的利用针脚,并且尽量减少对舵机数量的影响。,如何使用更强大的电子模块?,本次比赛场地的安排,为更先进的检测模块的使留出了可能,如物料的色块可供灰度识别、颜色识别、视觉识别使用等等。于是很多参赛队开始考虑是否使用更强大的传感器,如颜色识别、摄像头等,类似的还有陀螺仪、电子罗盘、编码器等等。首
17、先,本次比赛场地设计的原则是:简单有简单的办法,复杂有复杂的机会。参赛队自由选择的空间很大。但是,强大的传感器意味着使用难度的增加。参赛队要根据自己的技术水平,慎重选择。,如何使用更强大的电子模块?,颜色识别:优点是可以利用物料色块准确定位,缺点是受环境光线影响较大,如果要准确识别,需要时间。如例程中一个测量周期为4秒,水平高的同学可以缩短测量周期,但是周期越短,测量准确度越低。编码器:优点是可以监测电机转动情况,从而在转弯、过障碍时更加准确。缺点是获得准确检测数据的难度较大,且无法避免电机空转干扰,新手往往不知道如何处理。陀螺仪:陀螺仪的Z轴可以识别相对方向,X、Y轴可以识别是否登上障碍。陀螺仪+随动轮编码器技术是全场定位利器,缺点是新手使用难度较大。电子罗盘:电子罗盘可以识别绝对方向,对于场地导航很有用。缺点是新手使用难度大,很难处理“漂移”问题。摄像头:利用摄像头可以实现视觉导航,优点是一个摄像头可以取代其他所有传感器。缺点是一般主控板无法驱动,需要使用探索者的ARM CortexA8主控板,该主控板无法驱动电机,需要自己焊接电机驱动或做主控板串联。,谢谢观看!,