如何让机器人跟随90度的线



我创建了一个遵循黑线的算法。但我有一个问题,它在十字路口机器人总是完成它前进的道路。但我希望他向左走。我的意思是,他总是优先考虑前进,而不是探索迷宫的所有方式

知道所有道路都是拐角或笔直的道路

我将传感器 00100 传感器[0] 传感器[1] 传感器[2] 传感器[3] 传感器[4] 放在黑线的中间。


read_sensor_values();


// i use 5 sensor 0 to 4 in table sensor[];
if(sensor[2]==HIGH){ 
  if(sensor[1]==LOW && sensor[3]==LOW){     
    go_Advance();  //straight
    set_Motorspeed(M_SPEED1,M_SPEED1);
  }
  else if(sensor[1]==HIGH && sensor[3]==LOW){ 
     go_Left();  //Turn left
     set_Motorspeed(0,M_SPEED1);
  }
  else if(sensor[1]==LOW && sensor[3]==HIGH){  
    go_Right();  //Turn right
    set_Motorspeed(M_SPEED1,0);
  }
}
else {if(sensor[2]==LOW){
   if(sensor[1]==HIGH && sensor[3]==LOW){ //Turn left
    go_Left();  
    set_Motorspeed(0,M_SPEED1);
  }
  else if(sensor[1]==LOW && sensor[3]==HIGH){  //Turn right
     go_Right();
     set_Motorspeed(M_SPEED1,0);
  }
}
else {
   go_Back();
   set_Motorspeed(M_SPEED1,M_SPEED1);
}
if(sensor[1]==HIGH){  
  if(sensor[0]==HIGH && sensor[2]==LOW){
    go_Left();
    set_Motorspeed(0,M_SPEED2);
  }
  else{  //Turn left
    go_Left();
    set_Motorspeed(0,M_SPEED1);
  }
}

if(sensor[3]==HIGH){  
  if(sensor[2]==LOW && sensor[4]==HIGH){ 
    go_Right();
    set_Motorspeed(M_SPEED2,0);
  }
  else{
    go_Right();
    set_Motorspeed(M_SPEED2,0); 
  }
}
}
}
  1. 你的一些条件是相互矛盾的。检查每个传感器在每种条件下的状态。

  2. 如果我没记错的话,在十字路口,状态将是 11111,这在任何地方都没有明确处理。因此,目前处于十字路口,"if(sensor[1]==HIGH("块中的"else"部分和"if(sensor[3]==HIGH("块中的"else"部分都将被执行。这可能会导致两个电机都运行并向前移动。当十字路口结束时,它又回到00100状态并继续前进。

  3. 第一个 if 语句有 2 个 else 语句,如果这是实际代码,则不正确。假设第二个"else"是"else if",最后一个"else"将永远不会被执行,因为"sensor[2]==LOW"将始终为真,如果为假,则为"sensor[2]==HIGH"。

最新更新