270 likes | 414 Vues
10 版 足球机器人. 上海彼林电子科技有限公司 Mr. Milleter 2010.03. 机器人足球比赛场地. 坠球点. 提示: 场地边界有墙壁,墙壁高为 18cm , 墙壁内侧为黑色,其中球门内侧为白色。 球场铺有一张绿色胶毯 。. 球门线. 点球位. 开球位. 球 门. 机器人要求、竞赛方式. 机器人: 机器人体积(包括静止和比赛状态),其正常置放的垂直投影面积必须是在直径 22cm (含)范围之内,限高 22cm (含)以下,限重 1.6kg (含)以下 。
E N D
10版 足球机器人 上海彼林电子科技有限公司 Mr. Milleter 2010.03
机器人足球比赛场地 坠球点 提示: 场地边界有墙壁,墙壁高为18cm, 墙壁内侧为黑色,其中球门内侧为白色。 球场铺有一张绿色胶毯 。 球门线 点球位 开球位 球 门
机器人要求、竞赛方式 机器人: 机器人体积(包括静止和比赛状态),其正常置放的垂直投影面积必须是在直径22cm(含)范围之内,限高22cm(含)以下,限重1.6kg(含)以下。 机器人(形成三面包围球体的)踢球装置的控球深度最大为3cm。以突出的两点之间成一水平连线中任一点且垂直到机器人边沿的直线距离计算。 竞赛方式 (1)在小学组竞赛中,机器人进行1对1比赛。 (2)在初中、高中组竞赛中,机器人进行2对2比赛。
比赛用球 足球采用直径9cm,重160±5g。是一个内部装有电池与小电珠的透明发光球(波长范围为810-700nm;光幅射密度为单个150Lm;光线直接、均匀地覆盖球面,且无盲点)。
足球机器人硬件分析 数字指南针 红外测距传感器 X100控制器 大功率驱动卡 防滑轮胎II 锂聚合物电池 竞赛专用电机(1:23)
远红外复眼传感器 远红外接收传感器 电源指示灯 控球检测传感器 数据接口:与主板ADC1-2连接 数据接口:与主板ADC9-16连接 反面 正面 提示: 远红外接收传感器/控球检测传感器使用时与模拟输入口连接,返回值为0-1023。当光线越亮时,返回值越小;当光线越暗时,返回值越大。
远红外复眼感器的安装与接线 远红外接收传感器(火焰) F1接于ADC9 (3个并联) F2接于ADC10 (3个并联) F3接于ADC11 (3个并联) F4接于ADC12 (4个并联) F5接于ADC13 (3个并联) F6接于ADC14 (3个并联) F7接于ADC15 (3个并联) F8接于ADC16 (4个并联) 5 3 4 6 2 提示: 这8组远红外接收传感器主要用于寻找足球并判断足球与机器人的相对位置。 8 7 1 左边控球检测:接于ADC1 (2个并联) 右边控球检测:接于ADC2 (2个并联) 正面俯视 提示: 这2组远红外接收传感器主要用于判断足球是否在机器人的控球装置中。
红外测距传感器 红外测距传感器 ◆ 检测距离:10-80cm ◆ 使用时,接于模拟输入口 ◆ 当离物体越近时,返回值越大;离物体越远时,返回值越小
红外测距传感器的安装与连接 红外测距传感器 irf 接于ADC4 irb 接于ADC6 irl 接于ADC3 irr 接于ADC5 irf irl irr irb S:信号线 +:正极 -:负极
数字指南针 数字指南针 ◆ 使用时,接于指南针专用接口 ◆ 返回值:0-359 铁磁补偿 功能:消除指南针附近的铁物质等产生的磁场引起的角度偏差,使传感器读出的方向角度更精确。 使用方法:在机器人开机状态下,按住铁磁按钮2秒钟再放开,此时指南针返回值为69,把指南针模块在水平位置按顺时针方向慢慢的匀速速旋转一圈以上,再按一下铁磁按钮完成铁磁补偿。 正北校正 功能:将指南针模块当前所指方向设置为正北方向,即0度。 使用方法:把指南针水平指向用户所需方向,在机器人开机状态下按一下指南针模块上的正北按钮并放开。 铁磁补偿 正北校正 提示: 机器人每次开关机,建议重新做铁磁与正北,之前信息可能会丢失。在机器人比赛时,无特殊情况建议不要将机器人电源开关关闭,否则将重新做铁磁与正北。
电池的拆装 8v电池组 + 12v电池组
电池的连接 接12v电池组 接大功率电机驱动卡 接8v电池组 接机器人主板 电源并联座
机器人运行开关 关 开 提示: 该开关功能与主板上运行键一致,用于控制机器人运行程序。在机器人比赛时,建议拨此开关来触发机器人运行。当机器人需要中断时,先将机器人提起,然后将该开关拨到关的位置,再按复位键。
传感器测试程序 void test_adc(void) { while(1) { qiuwei(); cls(); printf("%3d %3d %3d",ff1,ff2,ff3); locate(2,1); printf("%3d %3d %3d",ff4,ff5,ff6); locate(3,1); printf("%3d %3d %3d %d",ff7,ff8,ffx,ffy); locate(4,1); printf("L%3d F%3d",getadc(3),getadc(4)); locate(5,1); printf("R%3d B%3d",getadc(5),getadc(6)); locate(6,1); printf("%3d %3d %3d %d",compass(),getadc(1),getadc(2),trigger()); wait(0.1); } }
5 3 4 6 2 8 7 1 正面俯视 足球检测 在整个机器人足球进攻程序里,足球检测是最基础的。机器人通过检测8组远红外火焰传感器的返回值来判断是否看见足球,同时要判断出足球与机器人的相对位置。 在程序中,我们引用变量ffx来记录8组传感器中检测到的最小光线值,用变量ffy来记录哪组传感器离足球最近。
足球检测子函数 void qiuwei(void) { ff1=getadc(9);ff2=getadc(10);ff3=getadc(11);ff4=getadc(12); ff5=getadc(13);ff6=getadc(14);ff7=getadc(15);ff8=getadc(16); ffx=ff1; ffy=1; if(ff2<ffx) {ffx=ff2;ffy=2;} if(ff3<ffx) {ffx=ff3;ffy=3;} if(ff4<ffx) {ffx=ff4;ffy=4;;} if(ff5<ffx) {ffx=ff5;ffy=5;} if(ff6<ffx) {ffx=ff6;ffy=6;} if(ff7<ffx) {ffx=ff7;ffy=7;} if(ff8<ffx) {ffx=ff8;ffy=8;} }
5 3 4 6 2 8 7 1 正面俯视 机器人追光子函数 在整个机器人足球程序里,当足球在机器人前方时,机器人向前进行追光;当足球在机器人后方时,机器人向后进行追光。而追光效果调试的好坏直接决定机器人进攻行为的性能。 前方传感器 远红外接收传感器(火焰) 后方传感器
5 5 5 3 3 3 4 4 4 6 6 6 2 2 2 8 8 8 7 7 7 1 1 1 机器人追光 当足球在机器人左前方时 机器人左转进行调整 当足球在机器人前方时 机器人前进 当足球在机器人右前方时 机器人右转进行调整
5 5 5 3 3 3 4 4 4 6 6 6 2 2 2 8 8 8 7 7 7 1 1 1 机器人追光 当足球在机器人左后方时 机器人右转进行调整 当足球在机器人后方时 机器人后退 当足球在机器人右后方时 机器人左转进行调整
机器人追光子函数 void follow(void) { if(ffy==1) { if(irr>450) go(-500,100); else go(-500,-100); } else if(ffy==2) { if(fwf==1) go(300,-300); else go(-300,300); } else if(ffy==3) { if(irr>450) go(500,-100); else go(500,100); } else if(ffy==4) { go(800,800); } else if(ffy==5) { if(irl>450) go(-100,500); else go(100,500); } else if(ffy==6) { if(fwf==1) go(-300,300); else go(300,-300); } else if(ffy==7) { if(irl>450) go(100,-500); else go(-100,-500); } else if(ffy==8) { go(-800,-800); } }
无球回防 当机器人看不见足球时,采用回防退守的模式;即调整方向后直线后退,一直到自己球门底线附近。 在该功能模块中,需要使用数字指南针识别机器人方向;使用红外测距传感器识别机器人离自己球门底线的距离。
无球回防子函数 void go_back(void) { if(cmp<90||cmp>270) //机器人头朝对方球门 { if(cmp<20||cmp>340) if(irb>ir_13&&irf<200) go(150,150); //机器人如果离自己球门底线太近--前进 else if(irb>ir_20&&irf<ir_20) go(0,0); else go(-800,-800); //机器人如果离自己球门底线太远--后退 else if(cmp<180) go(-200,200); else go(200,-200); } else //机器人尾部朝对方球门 { if(cmp>160&&cmp<200) if(irf>ir_13&&irb<200) go(-150,-150); else if(irf>ir_20&&irb<ir_20) go(0,0); else go(800,800); else if(cmp<180) go(200,-200); else go(-200,200); } }
主程序 while(1) { cmp=compass(); irl=getadc(3);irf=getadc(4);irr=getadc(5);irb=getadc(6); fdl=getadc(1);fdr=getadc(2); qiuwei(); if(ffx<ball) { if(irf>ir_13&&ff4<ball_d&&fdl<ball_d&&fdr<ball_d) kaqiang_f(); else if(irb>ir_13&&ff8<ball_d&&fdl<ball_d&&fdr<ball_d) kaqiang_b(); else if((ffy==3||ffy==4||ffy==5)&&(cmp>130&&cmp<230)) huifang_f(); else if((ffy==1||ffy==7||ffy==8)&&(cmp<50||cmp>310)) huifang_b(); else follow(); } else go_back(); }
谢 谢 ! 上海彼林电子科技有限公司 电话:021-61670168 地址:上海市长安路1138号中房华东大厦23E 网站:www.billie.com.cn