Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在仿真中“抑制”多体设备的兼容接触模型? TL;博士_Python_Drake - Fatal编程技术网

Python 如何在仿真中“抑制”多体设备的兼容接触模型? TL;博士

Python 如何在仿真中“抑制”多体设备的兼容接触模型? TL;博士,python,drake,Python,Drake,目前,我正在修补一个简单的混乱生成Python脚本 我在哪里可以找到关于如何最好地最小化我希望向前模拟的设备中的能量的信息,可能是通过阻尼多体设备接触模型的参数 我的愿望是能够向前模拟掉在水槽或垃圾箱中的杂物,并有效地抑制动能,即无反弹,希望不会使积分太僵硬。现在,如果这是一个非物理黑客,我很好 我已经看到了以下强氧部分: -这就是我得到接触建模和所有参考的地方。 我在脑海中看到了改变粘滞公差的选项,我希望减少滑动,但减少滑动会导致更多的断言失败?以及时间步长精度/刚度,以权衡计算时间。我还没有

目前,我正在修补一个简单的混乱生成Python脚本

我在哪里可以找到关于如何最好地最小化我希望向前模拟的设备中的能量的信息,可能是通过阻尼多体设备接触模型的参数

我的愿望是能够向前模拟掉在水槽或垃圾箱中的杂物,并有效地抑制动能,即无反弹,希望不会使积分太僵硬。现在,如果这是一个非物理黑客,我很好

我已经看到了以下强氧部分:

-这就是我得到接触建模和所有参考的地方。 我在脑海中看到了改变粘滞公差的选项,我希望减少滑动,但减少滑动会导致更多的断言失败?以及时间步长精度/刚度,以权衡计算时间。我还没有遇到我可以调整的阻尼术语

我也想到了一个选择,就是使用AdvanceTot+dt,在两个步骤之间,做一些简单的试探来消除能量,例如,看看是否有方向变化,如果有,去掉速度。我的猜测是,如果系统仍然僵硬的话,这对计算时间并没有什么帮助

出身背景 实际上,这个脚本只是移植了Naveen先前的库的一种形式,它位于阁楼上,使用RigidBodyTree来使用MultibodyPlant:

我的目标是通过墙上的时钟时间进行快速计算,以生成新的杂乱场景,并在一定程度上得到解决

我有一个简单的玩具示例,我可以生成对象并将其放入厨房水槽中,但我发现,为了生成初始条件不会导致非物理行为/数值不稳定的对象(例如互穿对象),我向系统注入了太多的能量,我在xy平面的一个框中生成了对象,但我将它们沿z.s.t.隔开。初始配置没有穿透

我在玩弄不同的方法来最小化能量,并尽可能用更少的计算时间使物体稳定下来

我试过一些简单的方法:

仅在非穿透初始条件下进行正向模拟。这很好,但可能是由于兼容接触模型中的设置,它可能需要一段时间才能稳定下来,和/或能量太大,对象将从水槽中反弹。在一段时间内, 使用即将发布的Anzu版本,所有对象的高度为零作为起点,原始生成高度作为无碰撞状态。这是可行的,但对于数量大于5的大量对象,计算成本可能会很高,而且总体上比仅使用正向模拟来解决对象要慢得多。 尝试结合使用MinimumDistanceConstraint编写一个简单的高度最小化数学程序。这是缓慢而脆弱的,尽管可能需要更多的调整。
免责声明:我是TRI-Anzu/Drake的开发者,但对Drake的物理模拟设置中更复杂的部分一无所知:p

我一直认为,正确的解决方案是编写一个小型数学程序,解决问题的固定点静态平衡:v=v̇=0。对于操纵器方程,当v=0时,一组项消失。全局求解这个问题既难看又不凸,但是一旦你知道哪些力应该是非零的,也许通过模拟一点,那么它应该会非常快,我想。

谢谢大家的回答

目前,我选择了更为悲伤的黑客路线,这是一种更为简单的启发式方法:

在本例中,即使在Python中,高度启发式也需要5毫秒左右的时间,而MathematicalProgramm变体(至少是我编写的穷人版本)往往需要>500毫秒


我很想回来再看看这个

可能的答案:在“接触建模”部分下,有点接触惩罚法的计算,特别是法向力:fₙ = k1+dẋx。我必须检查一下,看看这是否符合我的要求。对于这些问题,最好的分析方法是直接解决问题——你可以想象一个优化:找到q,它总是在v=0的情况下最小化加速度。这通常被称为静态分析;Matlab有一个用于此目的的微调功能。这将是一个伟大的德雷克功能也。但与此同时,还有很多事情需要尝试——一个简单的方法是给每个物体增加阻尼,一种空间力,它反对任何物体的平移和旋转,就像在糖蜜中模拟一样。开始时稍微阻尼,运行一段时间,增加阻尼,重复,最终会达到静态平衡。不确定它是否足够快以达到你的目的。正如Sherm所说,一个快速的解决方案是在每个身体上施加某种阻力。我们可以使用ForceElement轻松实现的功能,请参见[13258]FTR和relat Python方面的ed问题:-具体来说,有StaticEquiremiumConstraint!