if 语句有助于控制无人机
if statement help for controling a drone
我有一个 ardrone 可以检测人脸,给我发送人脸坐标等。
我在无人机追脸的阶段。我有脸部中心点和框架中心点,通过它们我可以计算出我向无人机发送什么命令。
但我的问题是当无人机看到一张脸时,它会发送第一个命令,例如go.left()
它一直向左移动直到崩溃。
我在这里做错了什么?这是我的一段代码
//if result positive on x move drone left
if(piccX - facecX > 50){
drone.goLeft();
}
//if result negative on x move drone right
if(piccX - facecX < 50){
drone.goRight();
}
//if result positiveon Y, move drone up
if(piccY - facecY > 50){
drone.up();
}
//if result negative on Y, move drone Down
if(piccY - facecY > 50){
drone.down();
}
我介绍sleep()吗?我想做一个 while 循环,但我认为我不能在这里。感谢任何帮助,谢谢。
根据我使用 ADrones 的经验,这些功能会不断地使无人机朝那个方向移动。 drone 对象中应该有其他方法可以调用。我认为有一个叫做 setPosition().
也许你可以引入状态。
enum Heading {
None, Up, Down, Left, Right
}
Heading currentHeading = Heading.None;
//if result positive on x move drone left
if(piccX - facecX > 50 && currentHeading != Heading.Left){
drone.goLeft();
currentHeading = Heading.Left;
}
//if result negative on x move drone right
if(piccX - facecX < 50 && currentHeading != Heading.Right){
drone.goRight();
currentHeading = Heading.Right;
}
//if result positiveon Y, move drone up
if(piccY - facecY > 50 && currentHeading != Heading.Up){
drone.up();
currentHeading = Heading.Up;
}
//if result negative on Y, move drone Down
if(piccY - facecY > 50 && currentHeading != Heading.Down){
drone.down();
currentHeading = Heading.Down;
}
如果在当前方向上这还不够,也许创建一个 currentHeading 状态数组可以模拟斜坡上升或行进的距离。
我有一个 ardrone 可以检测人脸,给我发送人脸坐标等。
我在无人机追脸的阶段。我有脸部中心点和框架中心点,通过它们我可以计算出我向无人机发送什么命令。
但我的问题是当无人机看到一张脸时,它会发送第一个命令,例如go.left()
它一直向左移动直到崩溃。
我在这里做错了什么?这是我的一段代码
//if result positive on x move drone left
if(piccX - facecX > 50){
drone.goLeft();
}
//if result negative on x move drone right
if(piccX - facecX < 50){
drone.goRight();
}
//if result positiveon Y, move drone up
if(piccY - facecY > 50){
drone.up();
}
//if result negative on Y, move drone Down
if(piccY - facecY > 50){
drone.down();
}
我介绍sleep()吗?我想做一个 while 循环,但我认为我不能在这里。感谢任何帮助,谢谢。
根据我使用 ADrones 的经验,这些功能会不断地使无人机朝那个方向移动。 drone 对象中应该有其他方法可以调用。我认为有一个叫做 setPosition().
也许你可以引入状态。
enum Heading {
None, Up, Down, Left, Right
}
Heading currentHeading = Heading.None;
//if result positive on x move drone left
if(piccX - facecX > 50 && currentHeading != Heading.Left){
drone.goLeft();
currentHeading = Heading.Left;
}
//if result negative on x move drone right
if(piccX - facecX < 50 && currentHeading != Heading.Right){
drone.goRight();
currentHeading = Heading.Right;
}
//if result positiveon Y, move drone up
if(piccY - facecY > 50 && currentHeading != Heading.Up){
drone.up();
currentHeading = Heading.Up;
}
//if result negative on Y, move drone Down
if(piccY - facecY > 50 && currentHeading != Heading.Down){
drone.down();
currentHeading = Heading.Down;
}
如果在当前方向上这还不够,也许创建一个 currentHeading 状态数组可以模拟斜坡上升或行进的距离。