什么是人形机器人的正确RTOS?

时间:2011-10-18 08:27:50

标签: real-time robotics rtos freertos

我们的学生正在开发一个中型(~4.5英尺高)人形机器人作为大学的赞助研究项目。机器人应该能够执行的主要任务包括:四处移动(向前,向后,侧向),跑步,拾取物体。我们正在考虑使用 hard 实时操作系统来控制机器人。但是,由于我们对这个领域很陌生,几乎没有嵌入式系统或操作系统的背景,并且有多种选择,我们不确定哪一个是合适的选择。我们遇到过以下内容(括号内是我们目前对它们的印象):

  1. RTLinux(现已死,内核2.4.x,gcc 2.95(难以构建),很少甚至没有文档)
  2. FreeRTOS(良好的社区和文档,流行,移植到许多架构)
  3. uc-OS II(小而干净的核心,重量轻)
  4. RTAI(基于Linux)
  5. 我有很多问题:

    1. 哪个选项更适合这个项目?我知道这听起来有点主观,但任何建议都会非常感激。如果您觉得缺少一些重要信息,请指出。
    2. 我为Linux内核遇到了一个名为CONFIG_PREEMPT_RT patch的东西,它为内核提供了强大的实时功能。还有预编译的内核,这个补丁可用于基于Debian的发行版。仅此一项是否足以满足我们的要求?
    3. 我们对操作系统的了解很少。我们有必要先了解它们吗?如果是的话,什么是一个好的,短的入门主题?
    4. 更新:感谢您提供非常详细的答案。很明显,我们以错误的方式解决这个问题;没有任何知识和vauge要求潜水肯定会很糟糕。我们必须坐下来,准确地说出我们需要的东西。当我们充分领先时,我们将尝试找出合适的操作系统。让我们看看它是如何运作的。我还要阅读MicroC OS II: The Real Time Kernel的第2章。

3 个答案:

答案 0 :(得分:21)

答案 1 :(得分:6)

这不回答具体问题,但是:
在您询问有关特定操作系统的建议之前,您需要有关架构和约束的更多详细信息。

我从I / O开始:

  • 你如何与外界互动?有多少传感器?
  • 什么样的马达驱动机器人?多少?它们是如何驱动的?
  • 电机控制反馈需要哪种传感器?
  • 身体位置反馈怎么样?
  • 您是否进行过任何系统分析?
    • 维持稳定需要什么更新率?
  • 还需要执行哪些其他任务?
    • 视觉?
    • 音频识别
    • 音频生成?

既然您知道需要控制什么以及控制速度有多快,那么您如何控制它?

  • 您是否使用具有嵌入式A / D功能的微控制器?
  • 或带有插入式A / D卡的PC?
  • 一个处理器是否足够快或者您需要倍数
    • 如果不止一个,他们将如何同步?

此时您可以开始考虑特定的处理器和架构。只有在您将其缩小到一两个不错的选项之后,才应该开始考虑操作系统。

我确实希望你最终需要一个硬实时操作系统来运行机器人的运动控制方面。

答案 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。