使用 C++ 进行机器人实时编程[已关闭]

问题描述 投票:0回答:3

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

我在代码中先后调用了两个方法

moveRight()
moveLeft()
,但问题是第二个方法没有运行,因为第一个方法需要时间(机器人移动的时间),但是当我把
Sleep(5000)
他们之间(我猜动作五秒就够了),一切OK。

避免使用

Sleep
的编程解决方案是什么(因为它会带来一些其他问题)?

c++ real-time robotics
3个回答
6
投票

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


2
投票

在机器人技术中,你永远不应该“猜测”。您应该知道测量您的移动需要多长时间,并在代码中使用它。例如,经常调用

moveRight()
并让它检查它已经运行了多长时间。让它在运行时返回
true
并以此作为调用
moveLeft()

的条件

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.