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

Dre*_*kes 8 language-agnostic robotics machine-learning robocup

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

在创造这样一个特工所涉及的各种挑战中,它的身体运动是我面对的第一个.我瞄准的模拟使用了一个带有22个铰链的Nao机器人体来控制.每条腿六条,每条手臂四条,颈部两条:

http://simspark.sourceforge.net/wiki/images/b/b4/Models_NaoVirtual.png

我对机器学习很感兴趣,并且相信必须有一些技术可以控制这个人.

在任何时候,它是众所周知的:

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

我想要实现的任务类型是:

  • 尽可能快地直线行驶
  • 以定义的速度移动(即,根据附加输入处理快速和慢速行走的一个功能)
  • 向后走
  • 转身当场
  • 沿着简单的曲线运行
  • 踩着侧身
  • 尽可能高地跳跃并着陆而不会跌倒
  • 踢一个在你脚前的球
  • 在受到意外的力量(被球或其他球员击中)时进行"潜意识"稳定运动,理想情况下与上述之一相配合

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

我已经在圆形功能(正弦波)的开源项目中看到了一些例子,它们连接到每个铰链的角度,具有不同的幅度和相位.这些看起来好像是直线行走,但它们看起来都很笨重.这不是一种适用于我上面提到的所有任务的方法.

有些团队显然使用反向运动学,但我对此并不了解.

那么,机器人两足动作/行走的方法是什么?


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

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

Bra*_*ers 2

我当时正在做一个与此没有什么不同的项目(制造机器人金枪鱼),我们正在探索的方法之一是使用遗传算法来调整人工中心模式生成器的性能(在我们的例子中,模式是许多正弦波作用于尾部的每个关节)。也许值得一试,如果您谨慎选择适应度函数,遗传算法是另一种非常强大的工具。