Activity bot - parallax - 移动带传感器的机器人 - C 编程

Activity bot - parallax - moving the robots with sensors - C Programming

这是我将 activity 机器人从起点移动到终点的代码。它检测到两侧的障碍物并转身远离它们。

我将移动顺序保存在一个数组中,这样我就可以 return 到达起点而不使用任何传感器。 **(也就是“//return”注释后的代码)

#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;
}        

机器人成功移动到目标点,但没有返回起点。可能是什么问题?

您似乎有一个差一错误。当您向前移动时,您会在变量 i 中跟踪移动历史数组中 下一个可用 位置的索引。当您开始返回时,您使用 i 的当前值,就好像它是记录的最后一个值的索引一样。在返回的路上,您需要在每次读取之前 i 递减 ,以反映在每次写入 after 递增它的前向路径上的行为.