作为一个学生项目,我们正在构建一个机器人,它应该通过一个定义的路线并捡起一个木制立方体。它的核心是一台运行 250MHz ARM9 的 debian 的单板计算机。因此,控制器的处理能力绰绰有余。此外,它还进行一些图像处理(不是在驾驶时,只有在停止时),这就是为什么我们不使用没有操作系统的简单微控制器的原因。
目前整个事情运行良好,但有一个问题:主控制循环执行没有任何延迟,并达到超过 1kHz 的循环频率。这绰绰有余,100Hz也足够了。但是每时每刻都有一个周期需要100ms甚至更多,这可能会对控制器造成很大的干扰。
我怀疑还有其他一些任务会导致这种延迟,因为调度程序可能会检测到它们在很长一段时间内没有任何 CPU 时间。
所以我最想要的是以下内容:在控制器的主循环中可能有 5 毫秒的短暂睡眠,这确实只需要 5 毫秒,但为系统的其余部分提供了一些处理器时间。我可以使用 nanosleep 包括例如 500us 的延迟,但这总是需要超过 10 毫秒才能执行,因此它不是真正的替代方案。我更喜欢自愿睡眠之类的东西,让等待的任务有机会做某事,但会尽快返回。
否则系统会被卸载,因此没有什么可以真正需要长时间进行大量处理。
有没有办法在用户空间做到这一点,即不必坚持像 RTAI 之类的东西?
谢谢,菲利普