我们的学生正在开发一个中型(~4.5英尺高)人形机器人作为大学的赞助研究项目。机器人应该能够执行的主要任务包括:四处移动(向前,向后,侧向),跑步,拾取物体。我们正在考虑使用 hard 实时操作系统来控制机器人。但是,由于我们对这个领域很陌生,几乎没有嵌入式系统或操作系统的背景,并且有多种选择,我们不确定哪一个是合适的选择。我们遇到过以下内容(括号内是我们目前对它们的印象):
我有很多问题:
更新:感谢您提供非常详细的答案。很明显,我们以错误的方式解决这个问题;没有任何知识和vauge要求潜水肯定会很糟糕。我们必须坐下来,准确地说出我们需要的东西。当我们充分领先时,我们将尝试找出合适的操作系统。让我们看看它是如何运作的。我还要阅读MicroC OS II: The Real Time Kernel的第2章。
答案 0 :(得分:21)
答案 1 :(得分:6)
这不回答具体问题,但是:
在您询问有关特定操作系统的建议之前,您需要有关架构和约束的更多详细信息。
我从I / O开始:
既然您知道需要控制什么以及控制速度有多快,那么您如何控制它?
此时您可以开始考虑特定的处理器和架构。只有在您将其缩小到一两个不错的选项之后,才应该开始考虑操作系统。
我确实希望你最终需要一个硬实时操作系统来运行机器人的运动控制方面。
答案 2 :(得分:6)
可能没有必要在硬实时运行Linux。鉴于一个4.5英尺高的人形机器人,CM在3英尺处,你的控制环路可以在20赫兹运行,你仍然可以消化你的IMU信号并防止物体掉落。正常的嵌入式Linux没有与控制机器人的电机同时运行反击式游戏服务器,即使没有“很好”的机器人控制过程,也能为您提供至少50hz的可靠事件处理。 (假设您将在RoBoard或FitPC上运行Linux)。在任何情况下,从错过的帧恢复比运行RT linux更容易。 让内核运行,以便在X微秒内(例如:实时)中断时可靠地调用处理程序,这涉及一些人认为非平凡且有一些副作用。
你可能最好还有另一个微处理器板可以与电机/伺服器进行低级别对话,并将消化后的信息传递给Linux。
在我们的项目ActuatedCharacter.com中,我们设法在RoBoard.com Linux和20(动态像素)伺服器(带有自定义固件)之间获得一个超过200Hz的控制回路,其中一个FTDI接口连接到伺服器,没有任何实时内核修改。 如果您正在考虑使用动态像素伺服系统作为执行器,请查看robosavvy.com论坛,了解有关构建仿人机器人(用于robocup或一般研究)的一般信息,用于更好闭环控制率的替代固件,FTDI延迟问题,串行控制伺服系统。还要考虑您要开发的软件框架,这反过来将帮助您满足您的要求。显然,与已建立的Robocup人形联盟球队交谈,但也有兴趣的是inriaflowers,NAO / Aldebaran和当然ROS。