我正在使用 C++ 和OpenCV进行机器人项目。在这一步中,我遇到了一个问题,其中包括:
我有两种方法moveRight()
,moveLeft()
我在代码中依次调用,但问题是第二个没有运行,因为第一个需要时间(机器人移动的时间),但是当我把它们放在Sleep(5000)
它们之间时(我猜是五个几秒钟就足够了),一切都很好。
什么是避免使用的编程解决方案Sleep
(因为它会产生一些其他问题)?
你可以尝试加一层间接性。添加要执行的操作队列,将操作排入 moveLeft 和 moveRight 队列,并在其他地方(不同的线程)通过在执行下一个操作之前等待上一个操作完成来正确执行队列中的操作。理想情况下,您需要一种方法来检查操作是否完成,以便您可以以基于事件的方式对其进行编码。
你永远不应该在机器人技术中“猜测”。你应该知道,测量你的动作需要多长时间并在你的代码中使用它。例如moveRight()
,经常调用并让它检查它已经运行了多长时间。让它true
在运行时返回并将其用作调用的条件moveLeft()
您可以使用计时器并在执行 MoveRight() 时将计时器设置为 5 秒,然后在计时器结束后执行 Moveleft()。