我有一个侦测到人脸的座架,向我发送人脸坐标等。
我正处于无人机追踪人脸的阶段。我有面部的中心点和框架的中心点,据此可以计算出要发送无人机的命令。
但是我的问题是,当无人机看到人脸时,它会发送第一个命令,例如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循环,但是我不认为我可以在这里。任何帮助表示赞赏,谢谢。
也许您可以介绍状态。
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状态数组可以模拟上升或行进的距离。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句