我正在运行物理模拟并将一组移动指令应用于模拟骨架。我有一套关于骨骼的多套指令,包括对腿部,手臂,躯干等的施力以及施加在各自骨骼上的力的持续时间。每组指令(行为)是通过测试其执行所需行为的有效性,然后使用具有其他类似行为的遗传算法修改行为并再次测试来开发的。骨架将在其集合列表中具有数组行为。
我有健身功能,可以测试稳定性,速度,熵和关节力的最小化。问题是任何给定的行为都适用于特定的上下文。一种行为适用于平坦地面,另一种行为适用于右脚前方有凹凸,另一种情况如果它位于左前方,依此类推。因此,每种行为的适应性根据上下文而变化。仅仅根据其之前的健康水平选择行为是行不通的,因为健身分数不适用于此背景。
我的问题是,我如何编程让骨架为上下文选择最佳行为?例如为随机崎岖的地形选择最佳的行走行为。
答案 0 :(得分:2)
在different answer我已经给出了这个问题,我认为你的模型的“地形”信息是非常近似和大粒度的,例如“光滑平坦”,“粗糙” ,“岩石”等,也许只在网格层面。但是,如果世界模型实际上非常详细,例如来自3-D laser range scanner的模拟版本,那么来自机器人的算法和计算path/motion planning方法可能比机器学习分类器更有用。系统
路径/运动规划方法
有相当多的路径和运动规划方法,包括一些可能更适合步行/运动,但一些值得一提的更普遍的方法是:
一般解决方案方法是使用路径规划方法来确定骨架应遵循的步行轨迹以避开障碍物,然后使用基于GA的控制器来实现适当的运动。这是robotics的核心:感知世界并确定实现某些目标所需的行动和运动控制。
此外,快速文献检索出现了以下论文和一本书作为思想的来源和进一步调查的起点。关于腿式机器人运动规划的论文可能特别有用,因为它讨论了几种运动规划策略。
阅读建议
Steven Michael LaValle(2006)。 Planning Algorithms,剑桥大学出版社。
Kris Hauser,Timothy Bretl,Jean-Claude Latombe,Kensuke Harada,Brian Wilcox(2008)。 “Motion Planning for Legged Robots on Varied Terrain”,国际机器人研究杂志,Vol。 27,No。11-12,1325-1349, DOI:10.1177 / 0278364908098447
Guilherme N. DeSouza和Avinash C. Kak(2002年)。 “Vision for Mobile Robot Navigation: A Survey”,IEEE Transactions on Pattern Analysis and Machine Intelligence,Vol。 24,第2期,2月,第237-267页。
答案 1 :(得分:1)
为什么不针对随机的颠簸地形测试行为?只需设置GA的参数,使其有点宽容,并且不会谴责一两次失败的行为。
你有两个问题:
开始简单(例如抓取)将有助于这两者。
修改:
等等......你在相同的随机地形上一遍又一遍地训练它?难怪你有麻烦!它针对特定的岩石和颠簸布局进行了优化,这比一般化更容易。根据您的GA的工作方式,您可以从课程中获得一些好处,但更好的解决方案是为每次传递随机化地形。当它无法再利用地形的特定特征时,它将具有进化推广的进化动机。由于这是一个更难的问题,它不会像以前那样快速学习,并且它可能无法通过其当前参数变得非常好;准备好修补。
答案 2 :(得分:1)
答案 3 :(得分:0)
您正在使用遗传算法来修改行为,因此这必须意味着您已为每个因素组合设计了适应度函数。那是你的问题吗?
如果是,答案取决于您用于定义最佳步行行为的指标:
或者您只是尝试一堆参数,记录值,然后让遗传算法为您提供最佳解决方案?
如果每个行为在一个上下文而不是另一个上下文中运行良好,我会尝试量化如何在上下文之间进行感知和插值,并混合策略以查看是否有帮助。
答案 4 :(得分:0)
听起来你现在只有一个分类问题。您希望将有关当前行走内容的一些知识映射到一组类中的一个。知道地形的类允许您调用适当的子例程。这是对的吗?
如果是这样,那么您可以使用各种分类引擎,包括神经网络,贝叶斯网络,决策树,最近邻居等。为了选择最合适的分类引擎,我们需要有关您的问题的更多信息
首先,您可以使用哪种输入或传感数据来帮助您识别应该调用的行为类?其次,您能描述一下您将在何时训练此分类器以及在部署时运行时的情况,例如对计算资源的任何限制或对噪声的鲁棒性要求?
编辑:由于您有一定数量的类,并且您有一些参数化模型用于生成所有可能的地形,我会考虑使用k-means clustering。原理如下。您将一大堆地形聚集到k个不同的类中,其中每个聚类与您的一个专门的子例程相关联,这些子例程对该地形集群表现最佳。然后当一个新的地形进入时,它可能会落在这些星团中的一个附近。然后,您可以调用相应的专用子例程来导航该地形。
离线执行此操作:生成足够的随机地形以充分采样参数空间,将这些地形映射到您的感官空间(但记住感应空间中哪些点对应于哪个地形),然后在此感官空间上运行k-means聚类语料库其中k是您想要学习的课程数量。您在C代表C和感知空间中的P点之间的距离函数将简单地是让算法C导航生成P的地形的适应度函数。然后您将感知空间划分为k个群集,每个群集映射到你得到的最好的子程序。每个聚类在感官空间都有一个代表点。
现在在运行期间:您将在感官空间中获得一些未标记的点。使用不同的距离函数查找到此新传入点的最近代表点。这告诉你地形是什么类。
请注意,此方法的成功取决于从地形生成的参数空间到感官空间,从感官空间到健身功能的映射质量,以及用于比较感官空间中的点的最终距离函数。
另请注意,如果您有足够的记忆力,而不是仅使用k代表感官点来告诉您哪个类别是未标记的感觉点,您可以浏览您的训练集并用学习的类标记所有点。然后在运行时选择最近的邻居,并得出感觉空间中未标记的点与该邻居属于同一类的结论。