0
這是我的代碼,用於將活動bot從其起點移動到終點。它可以檢測到兩側的障礙物並轉而離開它們。活動bot - 視差 - 用傳感器移動機器人 - C編程
我將一系列移動保存在一個數組中,這樣我就可以在不使用任何傳感器的情況下返回到起點。 **(這是「//返回」的評論後的代碼)
#include "simpletools.h"
#include "abdrive.h"
#include "ping.h"
int back[200];
int i = 0;
int main() {
int distance;
int irLeft = 0, irRight = 0;
low(26);
low(27);
while (1) {
if (ping_cm(8) < 5) {
break;
}
freqout(11, 1, 38000);
irLeft = input(10);
freqout(1, 1, 38000);
irRight = input(2);
if (irLeft == irRight == 1) {
drive_goto(10,10);
back[i] = 10;
++i;
back[i]= 10;
++i;
}
if (irLeft == 0) {
drive_goto(20,10);
back[i] = 20;
++i;
back[i] = 10;
++i;
}
if (irRight == 0) {
drive_goto(10,20);
back[i]= 10;
++i;
back[i]= 20;
++i;
}
}
drive_goto(51, 0); // Make a 180 degree turn
drive_goto(51, 0);
//return
while (1) {
if (i == 0) {
break;
}
drive_goto(back[i], back[--i]);
--i;
}
return 0;
}
機器人成功地移動到目標,但它不會移回起點。問題是什麼?
'if(irLeft == irRight == 1)'沒有意義。應該是'if(irLeft == 1 && irRight == 1)'。 – user31264
我不知道問題出在哪裏,但是對於已知的路線,建議先看看第一個*回到起點。然後*下一步*移動。即:找到一種方法來自己調試代碼。由於格式不佳,我甚至無法關注代碼。順序也是這樣,它將不可避免地改進你的邏輯方法。 (由John Bollinger改進)。 –