程序详细代码: void qianwulong() f if(g_degree>=90&&g_degree<l 30) { if(g_Q_Maxlndex<5) l iffg-Q—Maxlndex==1) setMotor(一40,70}: if(g_Q_Maxlndex==2) setMotor(40,80): if(g_Q—Maxlndex==3) setMotor(100,100}: if(g_Q_Maxlndex==4) setMotor(1 00,50): } else { if(g—ir_qian<70。1 6) ( if(g—Q_Maxlndex==5) setMotor(40,一60): if(g~Q—Maxlndex==6) setMotor(1 00,50): if(g—Q-Maxlndex==7) setMotor(1 00,40): ) else ( if(g~阻Maxlndex==5) setMotor(60,~30): ifIg~Q—Maxlndex==6) setMotor(60,一40}: if(g—Q_Maxlndex==7) setMotor(60,一40): ) } } else if(g_degree<270&&g_degree>230) { if(g—Q-Maxlndex>3) { if(g—Q-Maxlndex==7) setMotor(70,一柏): if(g—Q_Maxlndex==6) setMotor(80,40): if《g-Q—Maxlndex==5} setMotor(1 OO,1 OO): if(g_QMaxlndex==4) setMotor(50,1 00): } else { if(g_ir_qian<70。1 6) {if(g_Q_Maxlndex==3) setMotor(一60,30): if(g一也Maxlndex==2) setMotor(50.1 oo): if(g_Q_Maxlndex==1) setMotor(40.1 00): } else { if(g_Q—Maxlndex==3) setMotor(30,-60); if(g_Q_Maxlndex==2) setMotor(40,一60): if(g_Q_Maxlndex==l} setMotor(40,一60): 1 ) ) else W机器人和球及球门的相对位置是在一条直线上 if《“r_qian>2500&&g_fireQ<G—NEERl { return; } { T1=getSysTimeO; if(g—Q_Maxlndex==7) Motor(80.一1 0): else if(g—Q—Maxlndex==l} setMotor(-1 0,80): else if(g一皿Maxlndex==6) setMotor(90,1 00); else if(g_aLMaxlndex==2) setMotor(1 00,90): else if(gfireQ>G—NEER) W乌龙球时,机器人先靠近球时要进行两 ∥侧拨球 if(g_degree<1 80&&g_ir_you>700) {setMotor(一30,70):) else if(g—degree>180&&g—ir_zuo>700}{setMotor(70,一30):} ) else { if(g—Q—Maxlndex==5) { if(g—ir_zuo<60。1 6l setMotor(70,1 OO): else setMotor(1 00J O): } else if(g—Q—Maxlndex==3) { if(g—Jr_you<80’1 6) setMotor(1 00,70): else setMotor(1 0.1 00): } else { int var3=get_Q_CPI(3); int var5=get——Q——CPI(5); if(var3>var5&&g._ir_.you<60。1 6)setMotor(80,1 0): else setMotor(1 0,80): } l l l l l 6关于死球处理 关于死球,在球场上很常见。并且出现的机率还很高。出 现死球时,机器人马达在堵转。很容易烧坏马达或马达驱动 板,为了能够很好地进球,那么机器人处理好死球就是一个很 重要的问题了.要解决这个问题就要清楚容易出现死球的地 方.根据以往比赛的情况发现。球在球场4个角落时就很容易 出现死球.当球在对方的两个角落时.机器人要能把球尽可能 地拨向对方球门附近,再找机会攻进对方球门。在这段程序 中,利用条件qian>40&&(FireQ>130)&&(b>20011b<160)&& (Maxlndex>=3&&MaxIndex<=5)和 (T2—T1>50)&&qian> g__qianD&&(FireQ>g_near)IIT2-TI>350来判断机器人是否是处 于死球状态,如果是死球状态.且时间还不到规定时间.机器 人就尽量进行勾球,依据指南针方位判断,当指南针方位小于 160度时,机器人就尽量向左拨球(也就是向对方场地拨球); 当指南针方位大于200度时,机器人就尽量向右拨球(也就是 向对方场地拨球),然后找机会将球踢到对方半场或球门。 死球处理程序如下: void qian_CDO//前勾球 { if(g_fireQ>G—NEER&&g_Q_Maxlndex>=3&&g一吐 Maxlndex<=5J if I《g—degree<=90 IIg_degree>=270)&&g_ir qian> 70’1 6&&getSysTime0一T1>50l if(g—ir_qian>l 50’1 6)g』1++: ) else gJl=O: if(g_T1>70) l setLcdBack(1): gJl=O: |