我的项目目标是使该机器人能够学习如何走路。
我需要什么学习算法为实现它而工作?
我正在使用Arduino Uno作为微控制器。
#1 楼
您的项目需要考虑很多因素。由于您正在要求学习算法,因此我假设您的硬件已经或即将启动。在让机器人学习时,您应该区分在线学习和离线学习。此外,还有系统上和系统外的学习,可以与上一类结合使用。由于您的系统仅连接了一个微控制器,因此您选择的方法是脱离系统。您可以在所连接的PC上(在线或离线)学习,而不能在系统上学习。系统将仅执行您当前学习的策略。所有步态运动都具有某种周期性,通常可以描述为为每个关节随时间提供角度值的函数。技巧是对这些函数进行参数化,使它们尽可能少地包含参数。然后,您可以对这些功能进行优化。为此,您需要知道要优化的内容。
大多数学习方法都将需要某种奖励功能,因此有效地向算法提供了一些反馈,以告知算法性能如何(例如,使行进距离/所需能量最大化)。然后,该算法将要查看给定参数集(单集)的奖励。根据问题的复杂性,情节数量可能会很大。这就是在线学习与离线学习之间的区别所在。在离线学习中,您可以使用模拟来执行学习,然后将其移至系统中。在在线学习中,您可以直接在系统上学习。这通常比较困难,因为您将不得不花费大量时间对学习算法进行评估。
评论
$ \ begingroup $
在线学习和离线学习听起来像闭环动态优化问题,您是否使用Bellman的动态编程算法? zh.wikipedia.org/wiki/Bellman_equation
$ \ endgroup $
– hhh
13年4月2日在22:55
#2 楼
您无需实施一组特定的学习算法。遗传算法(GA),神经网络(GA)和强化学习(RL)都已成功应用于步态生成问题。我也可以构思出使用无监督学习方法来解决此问题的方法,但是我无法确定它们是否会起作用。即使他们愿意,我也认为RL是更好的方法。Dr.霍德·利普森(Hod Lipson)在他的TED影片“霍德·利普森(Hod Lipson)构建“自我感知”机器人”中谈到了如何使用GA。
NN经常被使用。一些例子包括:
用于六足机器人运动的分布式神经网络体系结构
基于生物学的分布式控制和局部反射改善了六脚机器人的粗糙地形运动
应用进化的运动控制器应用于六足机器人
一种生物学启发的方法来进行可行的步态学习
我不知道RL是否已应用于四足动物,但六足动物有许多成功的应用。
六足机器人的自由步态与强化学习功能
Q-Learning Hexapod
请注意,这些列表并不全面。
GA和NN相对容易实现。 RL是解决问题的更原则的方法。在所有情况下,您将需要比Uno提供的更多处理能力来实际执行学习。如果您打算进行离线学习,那么Uno可能会在学习阶段之后开始工作。
#3 楼
这是一篇似乎相关的论文:快速四足运动的策略梯度强化学习。摘要:
本文提出了一种机器学习方法,用于优化四足小跑为前进速度而步态。给定针对特定机器人设计的参数化步行,我们建议使用一种形式的策略梯度强化学习来自动搜索可能的参数集,以找到最快的步行可能。我们在商用四足机器人平台(即Sony Aibo机器人)上实施和测试了我们的方法。经过大约三个小时的学习,所有这些操作都在物理机器人上进行,除了更换电池外,没有任何人工干预,这些机器人实现了Aibo最快的行走速度,大大胜过了各种现有的手工编码和学习型解决方案。 />
评论
$ \ begingroup $
如果您可以提供本文的快速摘要或引用一些摘要来说明其相关性,我会对此表示赞同。
$ \ endgroup $
– ThomasH
2012年11月12日14:26
$ \ begingroup $
好主意,摘要引用。
$ \ endgroup $
–joq
2013年6月12日17:55
#4 楼
一种简化的学习方法是将机器人置于一个随机位置,然后置于另一个位置,并调整第二个位置,直到它向前移动。以该位置为起点,再次执行该过程n次,然后您将有n个位置可以移动,从而使机器人向前移动。#5 楼
我已经建造了很多步行机器人,以我的经验,如果您无法通过编程步态让它走路,那么您就不会学习它,因为您不知道它应该做什么以及搜索空间太大。如果您可以定义良好的动作,则使用Arduino可能可以使其微调一些动作。评论
$ \ begingroup $
我已经能够对有效步态进行硬编码。此外,物理机器人也在不断发展,以更好地行走
$ \ endgroup $
–乔丹
2012年12月20日在22:15
评论
欢迎来到机器人技术...一个广泛的问题和一个宏伟的项目!您能在手动控制下工作吗?我刚刚完成了我的第一个原型的制作,它非常类似于道路杀伤力...
您知道马的步态这么多吗?只是认为这可能对您很有趣。