光电组武汉科技大学首安一队技术报告 - 图文 下载本文

规则要求车辆通过十字交叉路口需要直行,不允许左转、右转。赛道如图4.6所示。这就需要我们能够准切的判断十字防止图像将CCD当作弯道进行处理。我们对于十字的判断是先用第三个也就是最远的那个CCD进行预判,然后对于寻线先是选择最近的那一个CCD进行寻线,当第二个CCD出十字第一个CCD入十字后又选择第二个CCD进行寻线,这样就能够准确的判断和处理十字交叉路口了。具体程序如下:

图4.6 十字交叉路口

void cross_road()//十字ccd切换,优先选择较进的ccd巡线 {

cross_in_flag=0; cross_out_flag=0;

if(//ccd1_both_lost_count>=4 // &&

ccd3_roadwidth[0]>70 &&ccd3_roadwidth[1]>70 &&ccd3_roadwidth[2]>70 &&ccd3_roadwidth[3]>70

)//ccd3丢线,第三个CCD进入十字

{ccd3_cross_flag=1;} else ccd3_cross_flag=0; if(ccd1_roadwidth[0]>70 &&ccd1_roadwidth[1]>70 &&ccd1_roadwidth[2]>70 &&ccd1_roadwidth[3]>70

)//ccd1丢线,第二个CCD进入十字 ccd1_cross_flag=1;

else ccd1_cross_flag=0; if(ccd2_roadwidth[0]>70 &&ccd2_roadwidth[1]>70 &&ccd2_roadwidth[2]>70

39

第九届全国大学生智能汽车邀请赛技术报告

&&ccd2_roadwidth[3]>70

)//ccd1丢线,第一个CCD进入十字 {ccd2_cross_flag=1;}

else if(ccd1_cross_flag==1

&&ccd2_roadwidth[0]>70 &&ccd2_roadwidth[1]>70 )

{ccd2_cross_flag=1;} else ccd2_cross_flag=0;

if(ccd3_cross_flag==1&&ccd1_cross_flag==0&&ccd2_cross_flag==1)//ccd2十字,ccd1非十字,优先选择有效最近ccd巡线 {

if(ccd1_right_record[0]==1

&&ccd1_right_record[1]==1 &&ccd1_left_record[0]==1 &&ccd1_left_record[1]==1 &&ccd1_roadwidth[0]<45

&&ccd1_roadwidth[1]<45//ccd1已经出十字,且搜线正常,偏差有效

&&ccd1_roadwidth[2]<45 &&ccd1_roadwidth[3]<45 )

{cross_out_flag=1;bellring=100;} }

if(ccd2_cross_flag==1&&ccd1_cross_flag==1&&ccd3_cross_flag==0)//ccd2,ccd1十字,ccd3非十字 { if(

ccd3_right_record[0]==1

&&ccd3_right_record[1]==1 &&ccd3_left_record[0]==1 &&ccd3_left_record[1]==1 &&ccd3_roadwidth[0]<=70 &&ccd3_roadwidth[1]<=70 &&ccd3_roadwidth[2]<=70

)//ccd3已经出十字,且搜线正常,偏差有效 {cross_in_flag=0;bellring=100;} } }

40

4.3.5 障碍策略分析

赛道障碍是对称楔形体,长宽高分别为 30、10、5厘米。路障内侧边缘距离赛道中心线距离是 5 厘米。路障的出现给直立小车带来了非常大的影响,如若盲目的冲撞上去,必然会导致翻车儿无法继续进行本圈的比赛,因此,我们不得不对其进行检测,当CCD检测到连续4场全黑的情况下,我们便默认为小车前方出现了路障,并对速控以及转向进行处理,进而达到平稳过路障得效果。

图4.7 路障

4.3.6 坡道策略分析

CCD在入坡道时,由于仰视,CCD看不到坡道信息,且CCD检测不出是否处于坡道。我们利用陀螺仪在垂直水平面的方向上的角速度积分来判别,当积分值大于设定值,即认为,处于上坡阶段。同样也能判别下坡。

4.4对速度的闭环控制

图4.7 PID控制工作原理

PID控制策略其结构简单,稳定性好,可靠性高,并且易于实现。其缺点在于控制器的参数整定相当繁琐,需要很强的工程经验。相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。所以最后我们选择了PID的控

41

第九届全国大学生智能汽车邀请赛技术报告

制方式。

在小车跑动中,因为不需要考虑小车之前走过的路线,所以,我们舍弃了I控制,将小车转向的PID控制简化成PD控制。

steer_d = steer_kn+char_abs((int)(diserror))*d_rate;//转向D跟随偏差变化率

steerpwmout=temp*(steer_control_count+1)/5+steerpwmold;

本方案中通过双电机的差速控制采用位置式的PD控制,速度闭环控制采用了位置式PI控制。

speed_pout=speed_kp*(speed_error);

速度I控制,积分分离,在偏差过大时关闭积分。 if (speed_error<=15&&speed_error>=-15) {speed_integration+=speed_ki*speed_error;}

if(speed_integration>=180)//积分限幅,需要测试确定限幅值 speed_integration=180;

if(speed_integration <=-180) speed_integration=-180;

speedpid_out =speed_integration+speed_pout; if(speedpid_out>=speedpidout_limit) speedpid_out=speedpidout_limit;

if(speedpid_out<=-speedpidout_limit) speedpid_out=-speedpidout_limit;

}

uint8 speed_sample_count=0;

void SpeedControlOut() //速度平滑输出 {

speedpid_pwm=speedpidold_out+(speedpid_out-speedpidold_out)*(speed_sample_count+1)/50.0;

}

在本方案中,使用试凑法来确定控制器的比例、积分和微分参数。

试凑法是通过闭环试验,观察系统响应曲线,根据各控制参数对系统响应的大致影响,反复试凑参数,以达到满意的响应,最后确定PID控制参数。试凑不是盲目的,而是在控制理论指导下进行的。在控制理论中已获得如下定性知识:

比例调节(P)作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。

积分调节(I)作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分

42