4

我正在运行物理模拟并将一组运动指令应用于模拟骨架。我有多组关于骨骼的说明,包括对腿、手臂、躯干等施加的力以及施加在它们各自骨骼上的力的持续时间。每组指令(行为)都是通过测试其执行所需行为的有效性来开发的,然后使用具有其他类似行为的遗传算法修改该行为,并再次对其进行测试。骨架将在其设置列表中有一个数组行为。

我有健身功能,可以测试稳定性、速度、熵最小化和关节力。问题是任何给定的行为都适用于特定的上下文。一种行为适用于平坦的地面,另一种行为适用于右脚前方有凸起,另一种行为适用于左脚前方,依此类推。因此,每种行为的适应度会根据上下文而有所不同。仅根据其先前的适应度水平选择行为是行不通的,因为该适应度分数不适用于此上下文。

我的问题是,我如何编程让骨架为上下文选择最佳行为?例如为随机的颠簸地形选择最佳步行行为。

4

5 回答 5

2

在我对这个问题给出的不同答案中,我假设您为模型提供的“地形”信息非常近似且粒度较大,例如“平滑平坦”、“粗糙”、“岩石”等.也许只是在网格级别。但是,如果世界模型实际上非常详细,例如来自3-D 激光测距扫描仪的模拟版本,那么来自机器人的算法和计算路径/运动规划方法可能比机器学习分类器更有用系统。

路径/运动规划方法

有相当多的路径和运动规划方法,包括一些可能更适合步行/运动的方法,但一些更一般的值得一提的是:

  • 可见性图表
  • 潜在领域
  • 基于抽样的方法

一般的解决方法是使用路径规划方法来确定您的骨骼应该遵循的行走轨迹以避免障碍物,然后使用您的基于 GA 的控制器来实现适当的运动。这是机器人技术的核心:感知世界并确定实现某些目标所需的动作和运动控制。

此外,通过快速的文献搜索,我们找到了以下论文和一本书,作为进一步研究的想法和起点。关于腿式机器人运动规划的论文可能特别有用,因为它讨论了几种运动规划策略。

阅读建议

史蒂文·迈克尔·拉瓦勒 (2006)。规划算法,剑桥大学出版社。

Kris Hauser、Timothy Bretl、Jean-Claude Latombe、Kensuke Harada、Brian Wilcox(2008 年)。“在不同地形上的腿式机器人的运动规划”,国际机器人研究杂志,卷。27号11-12号、1325-1349号、DOI号:10.1177/0278364908098447

Guilherme N. DeSouza 和 Avinash C. Kak (2002)。“移动机器人导航的愿景:一项调查”,IEEE Transactions on Pattern Analysis and Machine Intelligence,Vol。24,第 2 期,2 月,第 237-267 页。

于 2010-06-24T05:32:18.967 回答
1

我的回答包括三个方面:(1)控制理论,(2)感知,以及(3)融合感知和动作。

控制理论

您的问题的答案部分取决于您使用的是哪种控制方案:它是前馈控制还是反馈控制?如果是后者,除了地形信息之外,您还有哪些模拟实时传感器?

仅仅拥有地形信息并将其纳入您的控制策略并不意味着您正在使用反馈控制。可以使用这些信息来选择前馈策略,这似乎最接近您所描述的问题。

传感

无论您是使用前馈控制还是反馈控制,您都需要将地形信息和任何其他感官数据表示为控制系统的输入空间。训练基于 GA 的运动控制器的一部分应该是在广泛的随机地形中移动骨架,以学习特征检测器。特征检测器通过将输入空间分割成对决定什么是最佳动作策略(即采用什么控制行为)至关重要的区域来对地形场景进行分类。

如何最好地表示输入空间取决于您用于模拟的地形信息的粒度级别。如果它只是地形类型的离散空间和/或某些网格空间中的障碍物,您可以直接将其呈现给您的 GA,而无需转换。但是,如果数据位于连续空间中,例如任意范围/方向的地形类型和障碍物,您可能需要将其转换为更容易推断空间关系的空间,例如粗编码范围和方向,例如,近、中、远和前、左前、左等。高斯和模糊分类器可用于后一种方法,但离散值编码也可以工作。

融合感知和行动

使用上述输入空间编码方法之一,您有几个选项可用于连接行为选择搜索空间和运动控制搜索空间:

  1. 将两个空间分成两个学习问题,并使用单独的 GA 来演化标准多层感知器神经网络的参数。后者会将您的传感器数据(可能已转换)作为输入,并将您的一组骨架行为作为输出。您的 GA 可以使用一些适应度函数在一系列模拟试验中演化参数,而不是使用反向传播或其他一些 ANN 学习方法来学习网络权重,例如,适应度 = 在固定时间段内点行进的距离B 从 A 点开始。这应该在连续几代中从完全随机的行为选择演变为更协调和更有用的东西。

  2. 通过将上述(1)中描述的多层感知器网络链接到您拥有的现有基于 GA 的控制器框架中,使用骨架行为集作为链接,合并两个搜索空间(行为选择和骨架运动控制)。将演变的参数空间将是神经网络权重和现有的控制器参数空间。假设您使用的是多目标遗传算法,例如NSGA-II 算法,(因为您有多个适应度函数),适应度函数将是稳定性、速度、熵最小化、关节受力等,加上一些针对学习行为选择策略的适应度函数,例如,在固定时间段内从 A 点开始向 B 点移动的距离。

    这种方法与上述(1)之间的区别在于,您可能能够学习更好的行为协调和更细粒度的运动控制,因为当这两个问题合并而不是分开时,参数空间可能会得到更好的探索. 不利的一面是,收敛到合理的参数解决方案可能需要更长的时间,并且如果两个学习问题保持分开,并不是可以学习电机控制的所有方面。

鉴于您已经有了针对电机控制问题的进化解决方案,您最好使用方法 (1) 来学习具有单独 GA 的行为选择模型。此外,我上面描述的混合 GA-ANN 方案有许多替代方案来学习后一种模型,包括根本不学习模型,而是使用路径规划算法,如我的单独回答中所述。我只是提供了这种方法,因为您已经熟悉基于 GA 的机器学习。

动作选择问题是机器学习和自主机器人研究的一个重要领域。阅读这个主题本身可能很值得阅读,以更好地了解和洞察您当前的问题,并且您可以设计一个比我迄今为止建议的任何方法更简单的策略,通过这个镜头查看您的问题范例。

于 2010-06-22T04:40:35.390 回答
1

为什么不测试随机颠簸地形的行为呢?只需设置 GA 的参数,使其有点宽容,并且不会因为一两次失败而谴责行为。

你有两个问题:

  1. 没有感觉的双足运动是非常困难的。我见过在崎岖地形上没有感觉的良好机器人运动,但从来没有只有两条腿。因此,您可能以这种方式找到的最佳解决方案可能不是很好。
  2. 运行 GA 既是一门艺术,也是一门科学。您可以转动很多旋钮,而且很难找到可以让新奇事物在不被噪音淹没的情况下增长的参数。

从简单的开始(例如爬行)将有助于这两个方面。

编辑:
等等……你在同一个随机地形上一遍又一遍地训练它?难怪你有麻烦!它正在针对岩石和颠簸的特定布局进行优化,这比概括要容易得多。根据您的 GA 的工作方式,您可能会从延长课程中获得一些好处,但更好的解决方案是在每次通过时随机化地形。当它不能再利用地形的特定特征时,它就会有进化的动机进行概括。由于这是一个更困难的问题,它不会像以前那样快速学习,并且它可能无法以当前的参数变得非常好;准备修补。

于 2010-06-20T02:12:31.620 回答
0

听起来此时您只有一个分类问题。您想将一些关于您当前正在行走的知识映射到一组类中的一个。了解地形的类别后,您就可以调用适当的子程序。这个对吗?

如果是这样,那么您可以使用多种分类引擎,包括神经网络、贝叶斯网络、决策树、最近邻等。为了选择最合适的,我们将需要有关您的问题的更多信息。

首先,你有什么样的输入或感官数据来帮助你识别你应该调用的行为类?其次,你能描述一下你将在什么情况下训练这个分类器,以及部署它时运行时的情况,例如对计算资源的限制或对噪声鲁棒性的要求?

编辑:由于您有固定数量的类,并且您有一些用于生成所有可能地形的参数化模型,我会考虑使用k-means clustering。原理如下。您将一大堆地形聚类到 k 个不同的类中,其中每个聚类与您的一个专门的子例程相关联,该子例程对该地形聚类表现最佳。然后当一个新的地形进入时,它可能会落在这些集群之一附近。然后调用相应的专用子例程来导航该地形。

离线执行此操作:生成足够多的随机地形以对参数空间进行充分采样,将这些地形映射到您的感觉空间(但要记住感觉空间中的哪些点对应于哪些地形),然后在这个感觉空间语料库上运行 k-means 聚类,其中 k是您想学习的课程数量。您的类代表 C 和感觉空间中的点 P 之间的距离函数只是让算法 C 导航生成 P 的地形的适应度函数。然后您将把感觉空间划分为 k 个集群,每个集群映射到你拥有的最好的子程序。每个集群在感官空间中都有一个代表点。

现在在运行时:您将在感觉空间中获得一些未标记的点。使用不同的距离函数来找到离这个新输入点最近的代表点。这告诉你地形是什么等级。

请注意,此方法的成功取决于从地形生成的参数空间到感觉空间的映射质量,从感觉空间到您的适应度函数,以及您用来比较感觉空间中的点的最终距离函数。

另请注意,如果您有足够的记忆力,而不是仅使用 k 个代表性感觉点来告诉您未标记的感觉点属于哪个类,您可能会遍历您的训练集并用学习的类标记所有点。然后在运行时选择最近的邻居,并得出结论,感觉空间中未标记的点与该邻居属于同一类。

于 2010-06-22T04:37:56.867 回答
0

您正在使用遗传算法来修改行为,因此这一定意味着您已经为每种因素组合设计了一个适应度函数。那是你的问题吗?

如果是,答案取决于您用来定义最佳步行行为的指标:

  1. 最大化稳定性
  2. 最大化速度
  3. 最小化关节上的力
  4. 最小化能量或熵产生

还是您只是尝试一堆参数,记录值,然后让遗传算法驱动您找到最佳解决方案?

如果每种行为在一种情况下运行良好而不是另一种情况下,我会尝试量化如何在上下文之间感知和插值,并混合策略以查看是否有帮助。

于 2010-06-19T22:23:20.327 回答