我目前正在研究机器人。我使用 EV3 乐高积木。我的目标是使用方法 travelTo(x,y) 使用最短路径从 A 点行进到 B 点。这个方法在一个线程名 Drive 中,它包含了所有用于控制我的机器人运动的方法(turnTo(double angle), travel(double distance), travelTo(double x, double y), changeSpeed(int newSpeed))。 ..)。我有另一个名为 ObstacleAvoidance 的线程,如果前面有障碍物,它应该停止线程 Drive,并使用 P 控制器技术开始避开障碍物以跟随障碍物。
我的问题是我的 P 控制器使用线程驱动器中的方法。因此,当我看到障碍物时,我无法做到:
if (obstacle){
Drive.wait();
while(isAvoiding){
pControler();
}
}
Drive.Notify();
private void pController(){
//use methods inside the DriveThread
}
我该如何解决这个问题?换句话说,我怎样才能停止我的机器人的当前动作,避免阻塞,然后继续我正在做的事情?