软件驱动的双足机器人运动有哪些技术?

8
我正在编程一个软件代理,以控制模拟足球比赛中的机器人球员。最终,我希望将其参加RoboCup比赛。
在创建这样一个代理时面临着各种挑战之一是它身体的运动。我所针对的模拟使用Nao机器人身体来控制22个铰链。每条腿有6个,每只手臂有4个,颈部有2个: (来源:sourceforge.net) 我对机器学习很感兴趣,并相信一定有一些技术可用于控制这个家伙。
任何时候都知道:
  • 所有22个铰链的角度
  • 机器人胸部加速度计的X,Y,Z输出
  • 机器人胸部陀螺仪的X,Y,Z输出
  • 通过机器人头部相机确定某些地标(角落、球门)的位置
  • 每只脚底下施加的力的向量,以及给出足底力的位置的向量

我想要完成的任务类型有:

  • 尽可能快地直线奔跑
  • 以定义的速度移动(即,一个函数根据额外输入处理快速和慢速行走)
  • 向后行走
  • 原地转弯
  • 沿着简单曲线奔跑
  • 侧步
  • 尽可能高地跳起来并在着陆时不倒下
  • 踢一个在你脚前的球
  • 在遭受意外力量(被球或其他球员击中)时进行“下意识”的稳定运动,最好与上述任务之一配合进行
对于这些任务,我相信我可以想出一个合适的适应性函数,但是无法确定一组训练输入和期望输出。也就是说,任何机器学习方法都需要提供无监督学习。
我看到一些开源项目中使用正弦函数(正弦波)将不同挠曲角度与不同的振幅和相位连接起来。它们似乎可以直线行走,但它们看起来有点笨重。然而,并非所有上述任务都适用于这种方法。
一些团队显然使用反向运动学,但我对此了解不多。
那么,机器人双足 locomotion/ambulation 的方法有哪些呢?
作为一个旁注,我编写并发布了一个名为TinMan的.NET库,它提供了与足球模拟服务器的基本交互。它有一个简单的编程模型,用于机器人22个铰链的传感器和执行器。
您可以阅读更多关于RoboCup 3D模拟足球联赛的信息:

@John - 我只看到两个结果,一个是引用这个问题的SO帖子,另一个是一个博客,标题为“UFO,ESP,外星人和大脚的可测试理论”等(http://www.yowiehunters.com/index.php?option=com_content&task=blogsection&id=0&Itemid=39&limit=41&limitstart=123)。你看到我没看到的东西吗? - Drew Noakes
@John - 我刚刚又试了一下,只有两个链接。可能是因为我在澳大利亚,或者是因为我不经常使用必应并且没有进行配置... 无论如何,你能分享一些更好的链接吗? - Drew Noakes
5个回答

4

关于机器人运动规划机器人 locomotion有大量的研究文献。

一般机器人 Locomotion 控制

对于双足机器人,至少有两种主要的机器人设计和控制方法(无论机器人是模拟的还是实际存在的):

  • 零力矩点 - 基于动力学的运动稳定性和控制方法。
  • 仿生运动 - 一种控制方法,其模仿哺乳动物、昆虫等生物神经网络,重点在于使用 中央模式发生器,通过其他电机控制程序/回路来控制整体行走和保持稳定性。

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

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

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

第一部分仅涉及处理维持机器人稳定性(假设您正在使用带有重力的某种物理模型)、直线行走、转弯等基本控制问题。第二部分则专注于让您的机器人作为足球运动员完成特定任务,例如跑向球、踢球、阻挡对方球员等。最简单的方法是将其分开解决,并将第二部分作为更高级别的控制器,向第一部分发送轨迹和目标指令。

有很多相关的论文和书籍可以推荐,但我列出了一些可能有用的参考文献,您可能希望在已经进行的任何研究中包括它们。

阅读建议

LaValle, Steven Michael (2006). Planning Algorithms, Cambridge University Press.

Raibert, Marc (1986). 平衡的腿式机器人. MIT出版社。

Vukobratovic, Miomir和Borovac, Branislav(2004年)。 "零力矩点- 35年的历程",《国际人形机器人杂志》,第1卷,第1期,157-173页。

Hirose, Masato和Takenaka,T(2001年)。 "人形机器人ASIMO的开发",本田技术评论,第13卷,第1期。

Wu, QiDi、Liu, ChengJu、Zhang, JiaQi和Chen, QiJun(2009年)。 "受生物概念启发的多足机器人运动控制调查", 《中国科学》F辑:信息科学,第52卷,第10期,pp 1715-1729,Springer。

Wahde, Mattias和Pettersson, Jimmy(2002年) "双足机器人研究简述", 第8届机电一体化论坛国际会议文集,pp 480-488。

山,J.,君士,C.和家品,C.(2000)。“基于多目标遗传算法的人形机器人行走中央模式生成器设计”,在:IEEE / RSJ智能机器人和系统国际会议论文集,pp. 1930-1935。

Chestnutt,J.,Lau,M.,Cheung,G.,Kuffner,J.,Hodgins,J.和Kanade,T.(2005)。 "本田ASIMO人形机器人的足步规划",2005年IEEE国际机器人与自动化大会(ICRA 2005)论文集,pp 629-634。


谢谢您的详细回答。我一定会阅读您提供链接的那些论文。 - Drew Noakes
@Drew - 我已经添加了ASIMO的另一篇论文参考,并提供了LaValle规划算法书的Google Books链接。 - Joel Hoff

2
我曾经参与过一个与此类似的项目(制作机器金枪鱼),我们探索的其中一种方法是使用遗传算法来调整人工中央模式发生器的性能(在我们的情况下,该模式是在尾部每个关节上操作的多个正弦波)。如果你选择适当的适应度函数,遗传算法也许值得一试,因为它是另一种非常强大的工具。

我想我会调查这些CPGs,因为我看到一些论文提到了它们。神经振荡器是另一个生物启发模型,在这个领域似乎已经取得了一些成功。今天我终于实现了与模拟的接口,让我可以像上帝一样精确地放置物体并测量它们,而不是作为一个代理(具有错误的复杂传感器和执行器)。所以我在我的库中有所有的元素来进行一些学习练习。迫不及待了! - Drew Noakes

2

以下是彼得·诺丁和马茨·G·诺德尔在1999年发表的一篇论文,概述了一种基于他们构建ELVIS机器人的经验的进化方法来控制一个人形机器人:


非常好的论文...当我构思时,只考虑了2层,但这篇论文展示了3层。+1 - Kiril

2
我一直在思考这个问题,我意识到为了使这个系统正常运作,至少需要两个智能“代理人” 。基本的思想是你需要两种类型的智能活动:
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 关于您的评论:我认为对于潜意识的运动控制(SMC),信号将来自于意识决策制定(CDM)。这样,您正在发展您的SMC代理以正确处理CDM代理的命令(信号)。您希望最大化SMC代理的正常运行时间,而不管CDM代理说什么。
SMC代理接收输入,例如关节上的向量力,并将其通过处理单元运行,以确定是否应执行该输入或拒绝它。 SMC应仅执行它认为无法从中恢复的输入,并拒绝它认为会导致“灾难性故障”的输入。
现在,SMC代理具有输出:接受或拒绝信号(1或0)。 CDM可以使用该信号进行自己的训练......CDM希望最大化SMC接受的信号数量,并满足目标:自己团队的高分和对方团队的低分。因此,CDM具有自己的处理单元,正在演变以满足这两个需求。您提供的参考文献提供了3层设计,而我的只有2层......我认为我的是朝着3层设计迈出的正确一步。
还有一件事要注意:跌倒真的是一种“灾难性故障”吗?如果您的机器人摔倒了,但CDM让它重新站起来呢?我认为那将是有效的行为,因此您不应该因跌倒而惩罚机器人......也许更好的做法是惩罚它完成目标所需的时间(不一定是足球进球)。

有趣的想法。我对你提到的信号是如何提供、接受/拒绝更详细的细节很感兴趣。这个信号最初来自哪里?目前,我主要对简单的运动而不是完整的游戏得分感兴趣。也就是说,我的适应性函数更可能涉及在倒下之前行进的距离!如果运动是连续的,则考虑覆盖地面所需的时间。然而,接受/拒绝信号的概念对我来说是陌生的。你能再谈一下吗? - Drew Noakes
@Lirik,感谢你的编辑。我现在更清楚你的意思了。我同意分层很重要,但我仍然不确定如何做。例如,假设代理正在向前奔跑,但开始稍微倾斜。SMC应该对脚/臀部/任何地方应用适当的倾斜,以保持对齐。但这不能是一个全面否决--它必须被合并到当前运动中,否则代理人会在迈步时冻结并倒下。 - Drew Noakes
我正在考虑的另一个问题是动态步行涉及处于不断落下的状态。我可以建模质心和稳定区域,但按照这个定义,代理始终会不稳定。这种思维更多地依赖于硬核数学/物理方法,而不是机器学习风格的方法。不同的RoboCup团队使用不同的方法--一些使用反向运动学,另一些则使用遗传算法/神经网络。我想为不同的情况提供两种类型的工具可能会很有用。 - Drew Noakes
顺便说一句,谢谢那篇论文,但它是针对2D联赛的,其中代理被简化为平面上的圆。该联赛也更加成熟,比赛更加精彩。RoboCup 2010正在新加坡举行。模拟的3D联赛决赛将在明天进行!如果你在网上找到一个视频,你会发现3D机器人控制的最新技术仍然有很多需要改进的地方。所以,这是一个相当复杂的任务,但非常有趣。 - Drew Noakes
@Drew,我也在考虑行走部分...我认为通过GA/GP,你可以让算法演化出自己的行走“风格”:一开始可能是爬行、翻滚或跳跃,但最终它可能学会走路或奔跑。我一直在研究人工智能和交易,但我也对机器人技术感兴趣。如果你想详细讨论这个问题,欢迎来我的博客(mlai-lirik.blogspot.com)留言并留下联系方式,或者直接发送电子邮件到我的临时邮箱:lirik@mailinator.com(这些电子邮件只存在几个小时)。 - Kiril
显示剩余2条评论

1

这里有一个关于人形步态控制的教程,描述了HRP-4机器人使用的软件栈(可以行走爬楼梯)。主要包括:

  • 线性倒立摆:用于平衡的简化模型。它仅涉及重心(COM)和其他答案中已提到的ZMP。
  • 轨迹优化:机器人计算接下来大约2秒钟的理想动作。随着移动,它会不断重新计算此轨迹,即所谓的模型预测控制。
  • 平衡控制:基于传感器测量和期望轨迹,矫正机器人姿态的最后阶段。

点击链接查看更多学术论文和源代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接