在创建这样一个代理时面临着各种挑战之一是它身体的运动。我所针对的模拟使用Nao机器人身体来控制22个铰链。每条腿有6个,每只手臂有4个,颈部有2个: (来源:sourceforge.net) 我对机器学习很感兴趣,并相信一定有一些技术可用于控制这个家伙。
任何时候都知道:
- 所有22个铰链的角度
- 机器人胸部加速度计的X,Y,Z输出
- 机器人胸部陀螺仪的X,Y,Z输出
- 通过机器人头部相机确定某些地标(角落、球门)的位置
- 每只脚底下施加的力的向量,以及给出足底力的位置的向量
我想要完成的任务类型有:
- 尽可能快地直线奔跑
- 以定义的速度移动(即,一个函数根据额外输入处理快速和慢速行走)
- 向后行走
- 原地转弯
- 沿着简单曲线奔跑
- 侧步
- 尽可能高地跳起来并在着陆时不倒下
- 踢一个在你脚前的球
- 在遭受意外力量(被球或其他球员击中)时进行“下意识”的稳定运动,最好与上述任务之一配合进行
我看到一些开源项目中使用正弦函数(正弦波)将不同挠曲角度与不同的振幅和相位连接起来。它们似乎可以直线行走,但它们看起来有点笨重。然而,并非所有上述任务都适用于这种方法。
一些团队显然使用反向运动学,但我对此了解不多。
那么,机器人双足 locomotion/ambulation 的方法有哪些呢?
作为一个旁注,我编写并发布了一个名为TinMan的.NET库,它提供了与足球模拟服务器的基本交互。它有一个简单的编程模型,用于机器人22个铰链的传感器和执行器。
您可以阅读更多关于RoboCup 3D模拟足球联赛的信息: