使用 c++ 在机器人中进行实时编程

Real time programming in robotics with c++

本文关键字:实时 编程 c++ 机器人 使用      更新时间:2023-10-16

我正在用C++和OpenCV做一个机器人项目。在此步骤中,我遇到了一个问题,其中包括:

我有两个方法moveRight()moveLeft(),我在代码中连续调用,但问题是第二个没有运行,因为第一个需要时间(机器人运动的时间),但是当我在它们之间放Sleep(5000)时(我猜五秒钟就足够运动了), 一切都很好。

什么是避免使用Sleep的编程解决方案(因为它会产生一些其他问题)?

您可以尝试添加间接层。添加要执行的操作队列,将操作排队到 moveLeft 和 moveRight,并在其他位置(不同的线程)通过等待上一个操作完成,然后再执行下一个操作来正确执行队列中的操作。理想情况下,您需要一种方法来检查操作是否已完成,以便您可以以基于事件的方式对其进行编码。

你永远不应该在机器人技术中"猜测"。你应该知道测量你的移动需要多长时间,并在你的代码中使用它。例如,经常调用moveRight()并让它检查它已经运行了多长时间。让它在运行时返回true,并将其用作调用moveLeft()

的条件

您可以使用计时器,并在执行 MoveRight() 时将计时器设置为 5 秒,并在计时器结束后执行 Moveleft()。