【问题标题】:What techniques exist for the software-driven locomotion of a bipedal robot?双足机器人的软件驱动运动有哪些技术?
【发布时间】:2011-03-05 08:42:44
【问题描述】:

我正在编写一个软件代理程序来控制模拟足球比赛中的机器人球员。最终我希望能参加 RoboCup 比赛。

在创建这样一个代理所涉及的各种挑战中,它的身体运动是我首先面临的挑战之一。我的目标模拟使用带有 22 个铰链的 Nao 机器人主体进行控制。每条腿六个,每条手臂四个,脖子两个:


(来源:sourceforge.net

我对机器学习很感兴趣,相信一定有一些技术可以控制这个家伙。

在任何时间点,都是已知的:

  • 所有 22 个铰链的角度
  • 位于机器人胸部的加速度计的 X、Y、Z 输出
  • 位于机器人胸部的陀螺仪的 X、Y、Z 输出
  • 通过机器人头部的摄像头确定某些地标(角球、球门)的位置
  • 施加到每只脚底部的力的向量,以及给出力在脚底上的位置的向量

我想完成的任务类型有:

  • 尽可能快地直线奔跑
  • 以定义的速度移动(即,根据附加输入处理快慢步行的一个函数)
  • 向后走
  • 原地转向
  • 沿着简单的曲线运行
  • 横着走
  • 尽可能高地跳跃并着陆而不会摔倒
  • 踢你脚前的球
  • 在受到意想不到的力量(被球或其他球员击中)时做出“潜意识”的稳定动作,最好与上述任何一种配合

对于这些任务中的每一个,我相信我可以提出一个合适的适应度函数,但不是一组具有预期输出的训练输入。也就是说,任何机器学习方法都需要提供unsupervised learning

我在开源项目中看到了一些示例,这些示例将圆函数(正弦波)以不同的幅度和相位连接到每个铰链的角度。这些似乎可以直线行走,但它们看起来都有些笨拙。不过,这并不是一种适用于我上面提到的所有任务的方法。

有些团队显然使用逆运动学,虽然我对此了解不多。

那么,机器人双足运动/行走有哪些方法?


顺便说一句,我编写并发布了a .NET library called TinMan,它提供了与足球模拟服务器的基本交互。它为机器人的 22 个铰链的传感器和执行器提供了一个简单的编程模型。

您可以阅读有关 RoboCup 的 3D 模拟足球联赛的更多信息:

【问题讨论】:

  • @John - 我只看到两个结果,一个是引用此问题的 SO 帖子,另一个是标题为 A Testable Theory of UFO、ESP、Aliens 和 Bigfoot 的帖子的博客 等 (yowiehunters.com/…)。你看到我没有看到的东西吗?
  • @John - 我又试了一次。只有两个。可能是因为我在澳大利亚,或者因为我通常不使用 Bing 并且没有以某种方式对其进行配置...无论如何,愿意分享一些更好的链接吗?

标签: language-agnostic machine-learning robotics robocup


【解决方案1】:

tutorial on humanoid locomotion control 描述了 HRP-4 类人机器人上使用的软件堆栈(可以是 walkclimb stairs)。主要包括:

  • 线性倒立摆:用于平衡的简化模型。它仅涉及其他答案中已经提到的质心 (COM) 和 ZMP。
  • 轨迹优化:机器人计算它想要做什么,理想情况下,在接下来的 2 秒左右。它在移动时不断重新计算该轨迹,这称为模型预测控制。
  • 平衡控制:根据传感器测量结果和所需轨迹校正机器人姿势的最后阶段。

点击学术论文和源代码的链接了解更多信息。

【讨论】:

    【解决方案2】:

    有大量关于robot motion planningrobot locomotion 的研究文献。

    一般机器人运动控制

    对于双足机器人,至少有两种主要的机器人设计和控制方法(机器人是模拟的还是物理真实的):

    • Zero Moment Point - 一种基于动力学的运动稳定性和控制方法。
    • 仿生运动 - 一种仿照哺乳动物、昆虫等生物神经网络的控制方法,侧重于使用由其他运动控制程序/循环修改的central pattern generators 来控制整体行走和保持稳定性。

    双足足球机器人的运动控制

    处理模拟双足机器人的控制问题实际上有两个方面:

    1. 基本的步行和运动控制
    2. 面向任务的运动规划

    第一部分只是关于处理维持机器人稳定性的基本控制问题(假设您正在使用一些基于物理的重力模型)、直线行走、转弯等。第二部分侧重于获取您的机器人作为足球运动员完成特定任务,例如跑向球、踢球、阻挡对方球员等。单独解决这些问题并将第二部分链接为更高级别的控制器可能是最容易的,该控制器发送第一部分的轨迹和目标指令。

    有很多相关的论文和书籍可以推荐,但我在下面列出了一些可能有用的,你可能希望将它们包含在你已经完成的任何研究中。

    阅读建议

    拉瓦勒,史蒂文·迈克尔 (2006)。 Planning Algorithms,剑桥大学出版社。

    马克·雷伯特 (1986)。 平衡的腿式机器人。麻省理工学院出版社。

    武科布拉托维奇、米奥米尔和博罗瓦茨、布拉尼斯拉夫(2004 年)。 “Zero-Moment Point - Thirty Five Years of its Life”,国际人形机器人杂志,卷。 1,第 1 期,第 157-173 页。

    Hirose,Masato 和 Takenaka,T(2001 年)。 “Development of the humanoid robot ASIMO”,本田研发技术评论,第 13 卷,第1.

    Wu、QiDi 和 Liu、Chengju 和 Zhang、Jiaqi 和 Chen、QiJun (2009)。 “Survey of locomotion control of legged robots inspired by biological concept ”,中国科学系列F:信息科学,第52卷,第1期。 10,第 1715--1729 页,施普林格。

    Wahde, Mattias 和 Pettersson, Jimmy (2002) “A brief review of bipedal robotics research”,第 8 届机电一体化论坛国际会议论文集,第 480-488 页。

    Shan, J.、Junshi, C. 和 Jiapin, C. (2000)。 “Design of central pattern generator for humanoid robot walking based on multi-objective GA”,在:过程中。 IEEE/RSJ 的 智能机器人和系统国际会议,第 1930-1935 页。

    Chestnutt, J.、Lau, M.、Cheung, G.、Kuffner, J.、Hodgins, J. 和 Kanade, T. (2005)。 “Footstep planning for the Honda ASIMO humanoid”,2005 年 IEEE 机器人与自动化国际会议论文集 (ICRA 2005),第 629-634 页。

    【讨论】:

    • 感谢您的详尽回答。我一定会通读你链接到的那些论文。
    • @Drew - 我为 ASIMO 添加了另一篇论文参考,并为 LaValle 的规划算法书提供了 Google Books 网络链接。
    【解决方案3】:

    我已经考虑这个问题已经有一段时间了,我意识到你至少需要两个智能“代理”才能使这个工作正常进行。基本思想是您在这里有两种类型的智能活动:

    1. 潜意识运动控制 (SMC)。
    2. 有意识的决策 (CDM)。

    可以在线进行 SMC 培训...如果您认真考虑的话:定义电机控制中的成功基本上是在您向机器人提供信号时完成的,它会评估该信号并接受或拒绝它。如果您的机器人接受信号并导致“失败”,那么您的机器人将“离线”并且无法再接受任何信号。定义“失败”和“离线”可能很棘手,但我认为如果机器人上的传感器指示机器人无法移动(躺在地上),这就是失败。

    所以你对 SMC 的适应度函数可能是这样的:numAcceptedSignals/numGivenSignals + numFailure

    CDM 是另一个生成信号的 AI 代理,它的适应度函数可能是:(numSignalsAccepted/numSignalsGenerated)/(numWinGoals/numLossGoals)

    所以你要做的就是运行 CDM,然后它的所有输出都进入 SMC……在游戏结束时,你运行你的健身功能。或者,您可以将 SMC 和 CDM 组合成一个智能体,并且您可以基于其他两个适应度函数制作复合适应度函数。我不知道你还能怎么做......

    最后,您必须确定什么构成了学习会议:是半场比赛、全场比赛还是几个动作等。如果一场比赛持续 1 分钟,而您总共有 8 名球员在场,那么训练过程可能非常缓慢!

    更新

    这是一篇使用基因编程创建踢足球的“软机器人”的论文的快速参考:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.136&rep=rep1&type=pdf

    关于您的 cmets:我认为对于潜意识运动控制 (SMC),信号将来自有意识的决策者 (CDM)。这样,您就可以改进 SMC 代理以正确处理 CDM 代理的命令(信号)。无论 CDM 代理说什么,您都希望最大限度地延长 SMC 代理的正常运行时间。

    SMC 代理接收输入,例如关节上的矢量力,然后通过其处理单元运行它以确定它是否应该执行该输入或是否应该拒绝它。 SMC 应该只执行它不“认为”它会从中恢复的输入,并且它应该拒绝它“认为”会导致“灾难性故障”的输入。

    现在 SMC 代理有一个输出:接受或拒绝一个信号(1 或 0)。 CDM 可以使用该信号进行自己的训练...... CDM 想要最大化 SMC 接受的信号数量,并且它还想要满足一个目标:为自己的球队获得高分,为对方球队获得低分.因此,CDM 拥有自己的处理单元,正在发展以满足这两个需求。您的参考提供了 3 层设计,而我的只是 2 层……我认为我的参考是迈向 3 层设计的正确一步。

    这里还有一点需要注意:坠落真的是“灾难性的失败”吗?如果你的机器人摔倒了,但 CDM 让它重新站起来怎么办?我认为这是一种有效的行为,所以你不应该惩罚机器人摔倒......也许更好的做法是惩罚它执行目标所需的时间(不一定是足球目标) )。

    【讨论】:

    • 有趣的想法。我很好奇您提到的信号被提供和接受/拒绝的更多细节。这个信号首先来自哪里?在这一点上,我最感兴趣的是简单的运动而不是整场比赛的得分。 IE。我的健身功能更可能涉及摔倒前的距离!在运动是连续的情况下,还要考虑覆盖地面所花费的时间。不过,接受/拒绝信号的概念对我来说是陌生的。你能再讨论一下吗?
    • @Drew,我更新了我的答案......我认为运动可能是一个好的开始。 SMC 接收到它应该处理的信号(即用力 F 沿 x、y、z 方向移动关节 A)并将其运行通过其处理单元以确定此移动是否会导致灾难性故障。 SMC 希望最大化机器人的正常运行时间及其对 CDM 的响应能力……最大化正常运行时间还可以解决效率问题(即功率、空闲时间等)。跨度>
    • @Drew,总而言之,这是您正在承担的一项相当复杂的任务……我相信随着您参与的更多,您会意识到这一点。
    • @Lirik,感谢您的编辑。我可以看到你现在做得更好了。我同意分层很重要,但我仍然不知道该怎么做。例如,假设代理正在向前跑,但开始略微向一侧倾斜。 SMC 应该对脚/臀部/任何地方施加适当的倾斜,以保持对齐直立。但这不能完全否决——它必须合并到当前的议案中,否则代理会在中途僵住并翻倒。
    • 我正在考虑的另一个问题是动态行走涉及处于持续的跌倒状态。我可以对质心和稳定区域进行建模,但根据该定义,代理将不断不稳定。这种思维进一步深入到了硬数学/物理方法,而不是机器学习风格的方法。不同的 RoboCup 团队使用不同的方法——一些使用反向运动学,另一些使用遗传算法/神经网络。我想这两种类型的工具都可用于不同的场景可能会很有用。
    【解决方案4】:

    这是 Peter Nordin 和 Mats G. Nordahl 于 1999 年发表的一篇很棒的论文,根据他们构建 ELVIS 机器人的经验,概述了控制类人机器人的进化方法:

    【讨论】:

    【解决方案5】:

    我正在从事一个与此没有什么不同的项目(制作机器人金枪鱼),我们正在探索的方法之一是使用 genetic algorithm 来调整人工 central pattern generator 的性能(在我们的例子中是模式是在尾部的每个关节上运行的多个正弦波)。可能值得一试,遗传算法是另一个非常强大的工具,如果你小心选择适应度函数的话。

    【讨论】:

    • 我想我会调查这些 CPG,因为我看到一些论文提到了它们。神经振荡器是另一种受生物学启发的模型,似乎在该领域取得了一些成功。直到今天,我才设法实现了模拟接口,让我可以准确地放置对象并以上帝般的方式测量它们,而不是作为代理(它具有错误的复杂传感器和执行器)。所以我在我的图书馆里有所有的作品来进行一些学习练习。等不及了!
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2012-03-10
    • 2010-09-22
    相关资源
    最近更新 更多