yiran_Fantasy 发表于 2024-8-20 06:54:36

我的电磁障碍方案

本帖最后由 yiran_Fantasy 于 2024-8-20 06:54 编辑

上次发了一个帖子,问问大家的障碍方案,这次给出我的障碍方案细节



过障碍物大家都是使用tof测距或者超声波测距,当发现测距值小于某一阈值时,认为这是一个障碍物,做出相应的处理。但是,比赛过程中有很多时候会误判,将场地里其他的道具误认为是障碍物,如锥桶、坡道侧面、场地边缘等,好在障碍物一般会放在一个比较长的直道上,解决方式是加一些限定条件,我的处理方式是:当检测到障碍物距离小于600毫米,并且现在车在走直道,判断方式多样,可以是差比和小于一个很小的阈值,或者中间电感很小(取决于中间电感的放置方式,竖着放的话,直道为0),并且设置一个标志位用于检测是否通过了一次障碍,过了一次障碍之后,将这个标志位置1,表示再也不会再判断障碍物,只有这个标志为0才可以做出障碍物处理。下面给出判断处理代码:
<font color="#000000">/***** 3.障碍物处理 ******/
      //距离小于阈值,并且在走直线
if(dl1b_distance_mm<AVOID_DIS_MIN && Middle_Adc>-5 && Middle_Adc<5)   turn_avoid_flag = 1;//置障碍标志
if(turn_avoid_flag==1 || turn_avoid_flag==2)
{
    Aviod_encoder +=(temp_left_pluse+temp_right_pluse)/2;      //累计编码值
    if(Aviod_encoder>= AVOID_TURN_QUIT && turn_avoid_flag==1) turn_avoid_flag=2; //编码值大于驶 离障碍阈值转到状态2
else if(Aviod_encoder>AVIOD_TURN_BUCK && turn_avoid_flag==2)         //状态2
{
    Aviod_encoder = 0;         
    turn_avoid_flag = 0;   //清空标志位
    Avoid_Count+=1;
    if(Avoid_Count>=1)      
    One_avoid_flag = 1;   //只过一次障碍标志位置1,以后也不会再进行环岛处理
}

刚刚只是给出了障碍的判断,并没有进行通过处理,我的处理方式是,有障碍物时是状态1,控制电机差速先往一个方向驶离障碍物(我使用右转驶离),并累计路程,路程到一定值时跳转到状态2,状态2下控制电机差速左转驶回赛道(左转驶回赛道),并在期间累计路程,路程到达一定值时,清空标志位,并置位只过一次障碍的标志位,这一步在置位标志位时已经进行。下面给出过障碍代码:


else if(turn_avoid_flag !=0 && (outtrack_flag ==0 || outtrack_flag ==1) && One_avoid_flag!=1)//过障碍物处理
{
   if(turn_avoid_flag==1)   //状态1,电机固定偏差驶离赛道
   {
       Round_PWM_L = PID_Calculate(&pid_motor_left,Left_motor.get_encoder_speed,AVOID_SPEED_QUIT_L);
       Round_PWM_R = PID_Calculate(&pid_motor_right,Right_motor.get_encoder_speed,AVOID_SPEED_QUIT_R);
       Motor_Left_Command(Round_PWM_L);
       Motor_Right_Command(Round_PWM_R);
   }
   else if(turn_avoid_flag==2)   //状态2,驶回赛道
   {
      Round_PWM_L = PID_Calculate(&pid_motor_left,Left_motor.get_encoder_speed,AVOID_SPEED_BACK_L);
      Round_PWM_R = PID_Calculate(&pid_motor_right,Right_motor.get_encoder_speed,AVOID_SPEED_BACK_R);
      Motor_Left_Command(Round_PWM_L);
      Motor_Right_Command(Round_PWM_R);
}




页: [1]
查看完整版本: 我的电磁障碍方案