代码之家  ›  专栏  ›  技术社区  ›  Drew Noakes

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

  •  8
  • Drew Noakes  · 技术社区  · 16 年前

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

    在创建这样一个代理涉及的各种挑战中,它的身体运动是我面临的第一个挑战之一。我瞄准的模拟使用了一个带有22个铰链的Nao机器人身体来控制。每条腿六个,每条胳膊四个,脖子两个:


    (来源: sourceforge.net )

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

    在任何时间点,人们都知道:

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

    我想完成的任务类型有:

    • 以尽可能快的速度直线跑
    • 以规定的速度移动(也就是说,根据额外的输入处理快慢行走的功能)
    • 向后走
    • 当场转身
    • 沿着简单的曲线跑
    • 横着走
    • 尽可能跳得高,落地时不要摔倒
    • 踢一个在你脚前的球
    • 当受到意外的力量(被球或其他球员击中)时,做出“潜意识”的稳定动作,理想情况下与上述其中一种同时进行

    对于这些任务中的每一项,我相信我都能找到一个合适的健身功能,但不是一组具有预期输出的训练输入。也就是说,任何机器学习方法都需要提供 unsupervised learning .

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

    一些团队显然使用反向运动学,尽管我对此知之甚少。

    那么,机器人两足动物的移动/行走有哪些方法?


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

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

    4 回复  |  直到 7 年前
        1
  •  4
  •   Joel Hoff    16 年前

    关于这方面有大量的研究文献 robot motion planning robot locomotion .

    通用机器人运动控制

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

    • Zero Moment Point -一种基于动力学的运动稳定性和控制方法。
    • 受生物启发的运动 -一种模仿哺乳动物、昆虫等生物神经网络的控制方法,侧重于使用 central pattern generators 通过其他电机控制程序/回路进行修改,以控制整体行走并保持稳定性。

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

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

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

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

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

    阅读建议

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

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

    布拉尼斯拉夫,米奥米尔和博罗瓦茨,武科布拉多维奇(2004年)。" Zero-Moment Point - Thirty Five Years of its Life “,《国际仿人机器人学杂志》,第1卷,第1期,第157173页。

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

    吴启迪和刘成菊和张嘉琪和陈启军(2009)。" Survey of locomotion control of legged robots inspired by biological concept “,《中国科学》F辑:信息科学,第52卷,第10期,1715-1729页,斯普林格出版社。

    瓦赫德,马蒂亚斯和佩特森,吉米(2002) A brief review of bipedal robotics research “,《第八届机电一体化论坛国际会议记录》,第480-488页。

    单,J.,俊士,C.和佳品,C.(2000)。" Design of central pattern generator for humanoid robot walking based on multi-objective GA “,摘自:IEEE/RSJ程序 智能机器人与系统国际会议,19301935页。

    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页。

        2
  •  2
  •   Bradley Powers    16 年前

    我当时正在做一个和这个没什么不同的项目(制作一条机器金枪鱼),我们正在探索的方法之一就是使用 genetic algorithm 调整人造卫星的性能 central pattern generator (在我们的例子中,模式是在尾巴的每个关节上运行的许多正弦波)。也许值得一试,如果你仔细选择适应度函数,遗传算法是另一种功能强大的工具。

        3
  •  2
  •   Drew Noakes    16 年前

    以下是彼得·诺丁和马茨·G·诺达尔1999年的一篇优秀论文,根据他们建造猫王机器人的经验,概述了一种控制仿人机器人的进化方法:

        4
  •  2
  •   Kiril    16 年前

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

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

    SMC的培训可以在线完成。。。如果你真的想一想:在运动控制中定义成功基本上是在你向你的机器人提供信号时完成的,它会评估该信号并接受或拒绝它。如果你的机器人接收到一个信号并导致“故障”,那么你的机器人就会“离线”,不能再接收任何信号。定义“故障”和“离线”可能很棘手,但我认为如果机器人上的传感器指示机器人静止不动(躺在地上),这将是一个故障。

    因此,SMC的健身功能可能是这样的: numAcceptedSignals/numGivenSignals + numFailure

    CDM是另一种产生信号的人工智能代理,其适应度函数可以是: (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代理的命令(信号)。无论CDM代理怎么说,您都希望最大限度地延长SMC代理的启动时间。

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

    现在SMC代理有一个输出:接受或拒绝信号(1或0)。CDM可以将该信号用于自己的训练。。。CDM希望最大限度地增加SMC接受的信号数量,同时也希望实现一个目标:为自己的球队获得高分,为对方球队获得低分。因此,CDM有自己的处理单元,正在进化以满足这两种需求。你的参考资料提供了三层设计,而我的只有两层。。。我认为我的设计朝着三层设计迈出了正确的一步。

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

        5
  •  1
  •   Tastalian    4 年前

    有这个 tutorial on humanoid locomotion control 这描述了HRP-4 humanoid上使用的软件堆栈(可以 walk climb stairs )。主要包括:

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

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